Newer
Older
Eliot Berriot
committed
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from django import forms
from funkwhale_api.common import admin
Eliot Berriot
committed
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 _
Eliot Berriot
committed
Eliot Berriot
committed
class MyUserChangeForm(UserChangeForm):
class Meta(UserChangeForm.Meta):
Eliot Berriot
committed
class MyUserCreationForm(UserCreationForm):
error_message = UserCreationForm.error_messages.update(
{"duplicate_username": "This username has already been taken."}
)
Eliot Berriot
committed
class Meta(UserCreationForm.Meta):
Eliot Berriot
committed
def clean_username(self):
username = self.cleaned_data["username"]
try:
models.User.objects.get(username=username)
except models.User.DoesNotExist:
Eliot Berriot
committed
return username
raise forms.ValidationError(self.error_messages["duplicate_username"])
Eliot Berriot
committed
@admin.register(models.User)
Eliot Berriot
committed
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",
(None, {"fields": ("username", "password", "privacy_level")}),
(
_("Personal info"),
{"fields": ("first_name", "last_name", "email", "avatar")},
),
(
_("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"]