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): ...