django-admin2/djadmin2/admin2.py
2020-11-21 22:16:43 +06:00

55 lines
1.6 KiB
Python

from django.conf import settings
from django.contrib.auth.models import Group, User
from django.contrib.sites.models import Site
from rest_framework.relations import PrimaryKeyRelatedField
from djadmin2.apiviews import Admin2APISerializer
from djadmin2.forms import UserCreationForm, UserChangeForm
from djadmin2.site import djadmin2_site
from djadmin2.types import ModelAdmin2
class GroupSerializer(Admin2APISerializer):
permissions = PrimaryKeyRelatedField(many=True, read_only=True)
class Meta:
model = Group
fields = '__all__'
class GroupAdmin2(ModelAdmin2):
api_serializer_class = GroupSerializer
class UserSerializer(Admin2APISerializer):
user_permissions = PrimaryKeyRelatedField(many=True, read_only=True)
class Meta:
model = User
exclude = ('password',)
class UserAdmin2(ModelAdmin2):
create_form_class = UserCreationForm
update_form_class = UserChangeForm
search_fields = ('username', 'groups__name', 'first_name', 'last_name',
'email')
list_filter = ('is_staff', 'is_superuser', 'is_active', 'groups')
list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff')
api_serializer_class = UserSerializer
# Register each model with the admin
djadmin2_site.register(User, UserAdmin2)
djadmin2_site.register(Group, GroupAdmin2)
# Register the sites app if it's been activated in INSTALLED_APPS
if "django.contrib.sites" in settings.INSTALLED_APPS:
class SiteAdmin2(ModelAdmin2):
list_display = ('domain', 'name')
search_fields = ('domain', 'name')
djadmin2_site.register(Site, SiteAdmin2)