Skip to content
Snippets Groups Projects
admin.py 2.47 KiB
Newer Older
  • Learn to ignore specific revisions
  • # -*- coding: utf-8 -*-
    from __future__ import absolute_import, unicode_literals
    
    from django import forms
    from django.contrib import admin
    from django.contrib.auth.admin import UserAdmin as AuthUserAdmin
    from django.contrib.auth.forms import UserChangeForm, UserCreationForm
    
    from django.utils.translation import ugettext_lazy as _
    
    from . import models
    
    
    
    class MyUserChangeForm(UserChangeForm):
        class Meta(UserChangeForm.Meta):
    
            model = models.User
    
    Eliot Berriot's avatar
    Eliot Berriot committed
        error_message = UserCreationForm.error_messages.update(
            {"duplicate_username": "This username has already been taken."}
        )
    
            model = models.User
    
    
        def clean_username(self):
            username = self.cleaned_data["username"]
            try:
    
    Eliot Berriot's avatar
    Eliot Berriot committed
                models.User.objects.get(username=username)
            except models.User.DoesNotExist:
    
    Eliot Berriot's avatar
    Eliot Berriot committed
            raise forms.ValidationError(self.error_messages["duplicate_username"])
    
    @admin.register(models.User)
    
    class UserAdmin(AuthUserAdmin):
        form = MyUserChangeForm
        add_form = MyUserCreationForm
    
    Eliot Berriot's avatar
    Eliot Berriot committed
            "username",
            "email",
            "date_joined",
            "last_login",
            "is_staff",
            "is_superuser",
    
    Eliot Berriot's avatar
    Eliot Berriot committed
            "is_superuser",
            "is_staff",
            "privacy_level",
            "permission_settings",
            "permission_library",
            "permission_federation",
    
    
        fieldsets = (
    
    Eliot Berriot's avatar
    Eliot Berriot committed
            (None, {"fields": ("username", "password", "privacy_level")}),
    
            (
                _("Personal info"),
                {"fields": ("first_name", "last_name", "email", "avatar")},
            ),
    
    Eliot Berriot's avatar
    Eliot Berriot committed
            (
                _("Permissions"),
                {
                    "fields": (
                        "is_active",
                        "is_staff",
                        "is_superuser",
                        "permission_upload",
                        "permission_library",
                        "permission_settings",
                        "permission_federation",
                    )
                },
            ),
            (_("Important dates"), {"fields": ("last_login", "date_joined")}),
            (_("Useless fields"), {"fields": ("user_permissions", "groups")}),
        )
    
    
    
    @admin.register(models.Invitation)
    class InvitationAdmin(admin.ModelAdmin):
        list_select_related = True
        list_display = ["owner", "code", "creation_date", "expiration_date"]
        search_fields = ["owner__username", "code"]
        readonly_fields = ["expiration_date", "code"]