Source code for apps.users.admin
from django.contrib import admin
from django.contrib.admin import register
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import Group
from django.utils.translation import gettext_lazy as _
from rolepermissions.roles import get_user_roles
from apps.users.models import Category, Profile, User
from common.admin import RolePermissionsModelAdmin
admin.site.unregister(Group)
[docs]
class ProfileInline(admin.StackedInline):
model = Profile
min_num = 1 # is needed to hide the delete button
max_num = 1
[docs]
@register(User)
class CustomUserAdmin(RolePermissionsModelAdmin, UserAdmin):
search_fields = ["username", "email"]
list_display = ("username", "email", "first_name", "last_name", "display_roles", "is_staff")
fieldsets = (
(None, {"fields": ("username", "password")}),
(_("Personal info"), {"fields": ("first_name", "last_name", "email", "interests")}),
(
_("Permissions"),
{
"fields": (
"is_active",
"is_staff",
"is_superuser",
"groups",
"user_permissions",
),
},
),
(_("Important dates"), {"fields": ("last_login", "date_joined")}),
)
inlines = [ProfileInline]
add_fieldsets = (
(
None,
{
"classes": ("wide",),
"fields": ("username", "email", "password1", "password2"),
},
),
)
[docs]
@admin.display(description="Roles")
def display_roles(self, obj) -> str:
return ", ".join([role.get_name().replace("_", " ").capitalize() for role in get_user_roles(obj)])
[docs]
@register(Category)
class AdminCategory(RolePermissionsModelAdmin):
...