71 lines
1.7 KiB
Python
71 lines
1.7 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
|
|
|
|
|
|
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')
|