123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- from rest_framework import serializers
- from django.contrib.auth import get_user_model
- from django.urls import reverse
- from misago.acl import serialize_acl
- from .user import UserSerializer
- UserModel = get_user_model()
- __all__ = [
- 'AuthenticatedUserSerializer',
- 'AnonymousUserSerializer',
- ]
- class AuthFlags(object):
- def get_is_authenticated(self, obj):
- return bool(obj.is_authenticated)
- def get_is_anonymous(self, obj):
- return bool(obj.is_anonymous)
- class AuthenticatedUserSerializer(UserSerializer, AuthFlags):
- email = serializers.SerializerMethodField()
- is_authenticated = serializers.SerializerMethodField()
- is_anonymous = serializers.SerializerMethodField()
- class Meta:
- model = UserModel
- fields = UserSerializer.Meta.fields + (
- 'is_authenticated',
- 'is_anonymous',
- )
- def get_acl(self, obj):
- return serialize_acl(obj)
- def get_email(self, obj):
- return obj.email
- def get_api_url(self, obj):
- return {
- 'avatar': reverse(
- 'misago:api:user-avatar', kwargs={'pk': obj.pk}),
- 'options': reverse(
- 'misago:api:user-forum-options', kwargs={'pk': obj.pk}),
- 'username': reverse(
- 'misago:api:user-username', kwargs={'pk': obj.pk}),
- 'change_email': reverse(
- 'misago:api:user-change-email', kwargs={'pk': obj.pk}),
- 'change_password': reverse(
- 'misago:api:user-change-password', kwargs={'pk': obj.pk}),
- }
- AuthenticatedUserSerializer = AuthenticatedUserSerializer.exclude_fields(
- 'is_avatar_locked', 'is_blocked', 'is_followed', 'is_signature_locked',
- 'meta', 'signature', 'status',
- )
- class AnonymousUserSerializer(serializers.Serializer, AuthFlags):
- id = serializers.ReadOnlyField()
- acl = serializers.SerializerMethodField()
- is_authenticated = serializers.SerializerMethodField()
- is_anonymous = serializers.SerializerMethodField()
- def get_acl(self, obj):
- if hasattr(obj, 'acl_cache'):
- return serialize_acl(obj)
- else:
- return {}
|