views.py 993 B

12345678910111213141516171819202122232425262728293031323334
  1. from django.contrib.auth.models import Group, User
  2. from django.db.models import Count
  3. from users import filters
  4. from users.models import ObjectPermission
  5. from utilities.api import ModelViewSet
  6. from utilities.querysets import RestrictedQuerySet
  7. from . import serializers
  8. #
  9. # Users and groups
  10. #
  11. class UserViewSet(ModelViewSet):
  12. queryset = RestrictedQuerySet(model=User).prefetch_related('groups')
  13. serializer_class = serializers.UserSerializer
  14. filterset_class = filters.UserFilterSet
  15. class GroupViewSet(ModelViewSet):
  16. queryset = RestrictedQuerySet(model=Group).annotate(user_count=Count('user'))
  17. serializer_class = serializers.GroupSerializer
  18. filterset_class = filters.GroupFilterSet
  19. #
  20. # ObjectPermissions
  21. #
  22. class ObjectPermissionViewSet(ModelViewSet):
  23. queryset = ObjectPermission.objects.prefetch_related('object_types', 'groups', 'users')
  24. serializer_class = serializers.ObjectPermissionSerializer
  25. filterset_class = filters.ObjectPermissionFilterSet