admin.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. from django import forms
  2. from django.contrib import admin
  3. from django.contrib.auth.admin import UserAdmin as UserAdmin_
  4. from django.contrib.auth.models import Group, User
  5. from .models import ObjectPermission, Token, UserConfig
  6. # Unregister the built-in GroupAdmin and UserAdmin classes so that we can use our custom admin classes below
  7. admin.site.unregister(Group)
  8. admin.site.unregister(User)
  9. @admin.register(Group)
  10. class GroupAdmin(admin.ModelAdmin):
  11. fields = ('name',)
  12. list_display = ('name', 'user_count')
  13. ordering = ('name',)
  14. search_fields = ('name',)
  15. def user_count(self, obj):
  16. return obj.user_set.count()
  17. class UserConfigInline(admin.TabularInline):
  18. model = UserConfig
  19. readonly_fields = ('data',)
  20. can_delete = False
  21. verbose_name = 'Preferences'
  22. @admin.register(User)
  23. class UserAdmin(UserAdmin_):
  24. list_display = [
  25. 'username', 'email', 'first_name', 'last_name', 'is_superuser', 'is_staff', 'is_active'
  26. ]
  27. fieldsets = (
  28. (None, {'fields': ('username', 'password')}),
  29. ('Personal info', {'fields': ('first_name', 'last_name', 'email')}),
  30. ('Permissions', {
  31. 'fields': ('is_active', 'is_staff', 'is_superuser'),
  32. }),
  33. ('Important dates', {'fields': ('last_login', 'date_joined')}),
  34. )
  35. inlines = (UserConfigInline,)
  36. class TokenAdminForm(forms.ModelForm):
  37. key = forms.CharField(
  38. required=False,
  39. help_text="If no key is provided, one will be generated automatically."
  40. )
  41. class Meta:
  42. fields = [
  43. 'user', 'key', 'write_enabled', 'expires', 'description'
  44. ]
  45. model = Token
  46. @admin.register(Token)
  47. class TokenAdmin(admin.ModelAdmin):
  48. form = TokenAdminForm
  49. list_display = [
  50. 'key', 'user', 'created', 'expires', 'write_enabled', 'description'
  51. ]
  52. @admin.register(ObjectPermission)
  53. class ObjectPermissionAdmin(admin.ModelAdmin):
  54. list_display = [
  55. 'model', 'can_view', 'can_add', 'can_change', 'can_delete'
  56. ]