def __init__(self, *args, **kwargs): """ The `user` field is added here to help with recursive import issues mentioned in rest_user.serializers """ super(CommentSerializer, self).__init__(*args, **kwargs) self.fields["user"] = UserSerializer( read_only=True, default=serializers.CurrentUserDefault())
class FlagSerializer(serializers.ModelSerializer): user = UserSerializer(read_only=True, default=serializers.CurrentUserDefault()) class Meta: model = Flag fields = '__all__'
class PushwooshTokenSerializer(serializers.ModelSerializer): user = UserSerializer(read_only=True, default=serializers.CurrentUserDefault()) hwid = serializers.CharField(write_only=True) language = serializers.CharField(write_only=True) class Meta: model = PushwooshToken
class FollowSerializer(serializers.ModelSerializer): user = serializers.HiddenField(default=serializers.CurrentUserDefault()) follower = UserSerializer(read_only=True, source="user") following = serializers.SerializerMethodField('get_user_follow') class Meta: model = Follow exclude = ('user', ) def get_user_follow(self, obj): user = User.objects.get(pk=obj.object_id) serializer = UserSerializer( user, context={'request': self.context.get('request')}) return serializer.data
def post(self, request, *args, **kwargs): serializer = PasswordSetSerializer(data=request.data) serializer.is_valid(raise_exception=True) try: uid = urlsafe_base64_decode(serializer.data['uid']) user = User._default_manager.get(pk=uid) except (TypeError, ValueError, OverflowError, User.DoesNotExist): user = None if user is not None and default_token_generator.check_token(user, serializer.data['token']): user.set_password(serializer.data['password']) user.save() return Response(UserSerializer(instance=user, context={'request': request}).data) else: return Response({"errors": "Password reset unsuccessful"}, status=status.HTTP_400_BAD_REQUEST)
class FollowSerializer(serializers.ModelSerializer): follower = UserSerializer(read_only=True, source="user") following = serializers.SerializerMethodField('get_user_follow') class Meta: model = Follow fields = [ 'id', 'follower', 'following', 'created', 'content_type', 'object_id' ] def get_user_follow(self, obj): user = User.objects.get(pk=obj.object_id) serializer = UserSerializer( user, context={'request': self.context.get('request')}) return serializer.data
class NotificationSerializer(serializers.ModelSerializer): message = serializers.SerializerMethodField() reporter = UserSerializer(read_only=True) content_object = serializers.SerializerMethodField() class Meta: model = Notification fields = ('created', 'name', 'message', 'reporter', 'content_object') def get_message(self, obj): return obj.message(Notification.PUSH) def get_content_object(self, obj): serializer_class = yak_settings.SERIALIZER_MAPPING[type( obj.content_object)] serializer = serializer_class(instance=obj.content_object, context=self.context) return serializer.data def to_representation(self, instance): ret = super(NotificationSerializer, self).to_representation(instance) ret[instance.content_object._meta.model_name] = ret.pop( 'content_object') return ret
class LikeSerializer(serializers.ModelSerializer): user = UserSerializer(read_only=True, default=serializers.CurrentUserDefault()) class Meta: model = Like
def get_user_follow(self, obj): user = User.objects.get(pk=obj.object_id) serializer = UserSerializer( user, context={'request': self.context.get('request')}) return serializer.data