user.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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__ = [
  6. 'AuthenticatedUserSerializer',
  7. 'AnonymousUserSerializer',
  8. 'BasicUserSerializer',
  9. 'UserSerializer',
  10. ]
  11. class AuthenticatedUserSerializer(serializers.ModelSerializer):
  12. acl = serializers.SerializerMethodField()
  13. rank = RankSerializer(many=False, read_only=True)
  14. class Meta:
  15. model = get_user_model()
  16. fields = (
  17. 'id',
  18. 'username',
  19. 'slug',
  20. 'email',
  21. 'joined_on',
  22. 'is_hiding_presence',
  23. 'title',
  24. 'full_title',
  25. 'short_title',
  26. 'rank',
  27. 'avatar_hash',
  28. 'new_notifications',
  29. 'limits_private_thread_invites_to',
  30. 'unread_private_threads',
  31. 'subscribe_to_started_threads',
  32. 'subscribe_to_replied_threads',
  33. 'threads',
  34. 'posts',
  35. 'acl'
  36. )
  37. def get_acl(self, obj):
  38. return serialize_acl(obj)
  39. class AnonymousUserSerializer(serializers.Serializer):
  40. id = serializers.ReadOnlyField()
  41. acl = serializers.SerializerMethodField()
  42. def get_acl(self, obj):
  43. return serialize_acl(obj)
  44. class BasicUserSerializer(serializers.ModelSerializer):
  45. class Meta:
  46. model = get_user_model()
  47. fields = (
  48. 'id',
  49. 'username',
  50. 'slug',
  51. 'avatar_hash'
  52. )
  53. class UserSerializer(serializers.ModelSerializer):
  54. class Meta:
  55. model = get_user_model()
  56. fields = (
  57. 'id',
  58. 'username',
  59. 'slug',
  60. 'avatar_hash'
  61. )