user.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. 'avatar_hash',
  23. 'new_notifications',
  24. 'limits_private_thread_invites_to',
  25. 'unread_private_threads',
  26. 'sync_unread_private_threads',
  27. 'subscribe_to_started_threads',
  28. 'subscribe_to_replied_threads',
  29. 'threads',
  30. 'posts',
  31. 'acl')
  32. def get_acl(self, obj):
  33. return serialize_acl(obj)
  34. class AnonymousUserSerializer(serializers.Serializer):
  35. id = serializers.ReadOnlyField()
  36. acl = serializers.SerializerMethodField()
  37. def get_acl(self, obj):
  38. return serialize_acl(obj)