Skip to content
Snippets Groups Projects
Select Git revision
  • develop default protected
  • master
  • 594-navigation-redesign
  • vuln-testing
  • plugins-v2
  • limit-album-tracks
  • 925-flac-transcoding
  • 865-sql-optimization
  • 890-notification
  • 839-donation-link
  • landing-page
  • plugins
  • add-new-shortcuts
  • 735-table-truncate
  • webdav
  • live-streaming
  • 0.20.1
  • 0.20.0
  • 0.20.0-rc1
  • 0.19.1
  • 0.19.0
  • 0.19.0-rc2
  • 0.19.0-rc1
  • 0.18.3
  • 0.18.2
  • 0.18.1
  • 0.18
  • 0.17
  • 0.16.3
  • 0.16.2
  • 0.16.1
  • 0.16
  • 0.15
  • 0.14.2
  • 0.14.1
  • 0.14
36 results

admin.py

Blame
  • Forked from funkwhale / funkwhale
    6869 commits behind the upstream repository.
    admin.py 2.41 KiB
    # -*- 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
    
    
    class MyUserCreationForm(UserCreationForm):
    
        error_message = UserCreationForm.error_messages.update(
            {"duplicate_username": "This username has already been taken."}
        )
    
        class Meta(UserCreationForm.Meta):
            model = models.User
    
        def clean_username(self):
            username = self.cleaned_data["username"]
            try:
                User.objects.get(username=username)
            except User.DoesNotExist:
                return username
            raise forms.ValidationError(self.error_messages["duplicate_username"])
    
    
    @admin.register(models.User)
    class UserAdmin(AuthUserAdmin):
        form = MyUserChangeForm
        add_form = MyUserCreationForm
        list_display = [
            "username",
            "email",
            "date_joined",
            "last_login",
            "is_staff",
            "is_superuser",
        ]
        list_filter = [
            "is_superuser",
            "is_staff",
            "privacy_level",
            "permission_settings",
            "permission_library",
            "permission_federation",
        ]
    
        fieldsets = (
            (None, {"fields": ("username", "password", "privacy_level")}),
            (_("Personal info"), {"fields": ("first_name", "last_name", "email")}),
            (
                _("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"]