skillbox/server/users/admin.py

78 lines
1.9 KiB
Python

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from users.forms import CustomUserCreationForm, CustomUserChangeForm
from .models import User, SchoolClass, Role, UserRole, UserSetting, License
class SchoolClassInline(admin.TabularInline):
model = SchoolClass.users.through
extra = 1
class RoleInline(admin.TabularInline):
model = UserRole
extra = 1
@admin.register(SchoolClass)
class SchoolClassAdmin(admin.ModelAdmin):
list_display = ('name', 'code', 'user_list', 'is_deleted')
inlines = [
SchoolClassInline
]
def user_list(self, obj):
return ', '.join([s.username for s in obj.users.all()])
@admin.register(Role)
class SchoolRoleAdmin(admin.ModelAdmin):
list_display = ('name',)
list_filter = ('name',)
@admin.register(UserRole)
class UserSchoolRoleAdmin(admin.ModelAdmin):
list_display = ('user', 'role')
# list_filter = ('role__school',)
readonly_fields = []
# search_fields = ('user__email', 'user__username')
class CustomUserAdmin(UserAdmin):
add_form = CustomUserCreationForm
form = CustomUserChangeForm
model = User
list_display = ('username', 'first_name', 'last_name', 'school_classes_list')
list_filter = ('school_classes',)
inlines = [
SchoolClassInline,
RoleInline,
]
def school_classes_list(self, obj):
return ', '.join([s.name for s in obj.school_classes.all()])
# fieldsets = UserAdmin.fieldsets + (
# (None, {'fields': ('school_classes',)}),
# )
admin.site.register(User, CustomUserAdmin)
@admin.register(UserSetting)
class UserSettingAdmin(admin.ModelAdmin):
list_display = ('user', 'selected_class')
raw_id_fields = ('user', 'selected_class')
@admin.register(License)
class LicenseAdmin(admin.ModelAdmin):
list_display = ('licensee',)
list_filter = ('licensee',)
raw_id_fields = ('licensee',)