user.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from django.contrib.auth import get_user_model
  2. from rest_framework import serializers
  3. from misago.acl import serialize_acl
  4. from misago.users.serializers import RankSerializer
  5. __ALL__ = ['AuthenticatedUserSerializer', 'AnonymousUserSerializer']
  6. class AuthenticatedUserSerializer(serializers.ModelSerializer):
  7. acl = serializers.SerializerMethodField()
  8. rank = RankSerializer(many=False, read_only=True)
  9. class Meta:
  10. model = get_user_model()
  11. fields = (
  12. 'id',
  13. 'username',
  14. 'slug',
  15. 'email',
  16. 'joined_on',
  17. 'is_hiding_presence',
  18. 'title',
  19. 'full_title',
  20. 'short_title',
  21. 'rank',
  22. 'new_notifications',
  23. 'limits_private_thread_invites_to',
  24. 'unread_private_threads',
  25. 'sync_unread_private_threads',
  26. 'subscribe_to_started_threads',
  27. 'subscribe_to_replied_threads',
  28. 'threads',
  29. 'posts',
  30. 'acl')
  31. def get_acl(self, obj):
  32. return serialize_acl(obj)
  33. class AnonymousUserSerializer(serializers.Serializer):
  34. id = serializers.ReadOnlyField()
  35. acl = serializers.SerializerMethodField()
  36. def get_acl(self, obj):
  37. return serialize_acl(obj)