Beispiel #1
0
class CommentCreateSerializer(serializers.DocumentSerializer):
    post = fields.ReferenceField(model=Post, required=True, write_only=True)
    owner = fields.ReferenceField(model=User, required=True)
    content = serializers.serializers.CharField()

    class Meta:
        model = Comment
        fields = [
            'post',
            'content',
            'owner',
        ]
        extra_kwargs = {'post'}

    def create(self, validated_data):
        owner = User.objects().get(id=validated_data['owner'].id)
        post = Post.objects().get(id=validated_data['post'].id)
        content = validated_data['content']
        newcomment = Comment(owner=owner, content=content)
        post.add_comment(newcomment)
        return newcomment

    def insert(self, post):
        post.add_comment(self)
Beispiel #2
0
class CommentListSerializer(serializers.EmbeddedDocumentSerializer):
    owner = fields.ReferenceField(model=User, required=True)
    content = serializers.serializers.CharField()
    edit_url = serializers.serializers.HyperlinkedIdentityField(
        view_name='comment-edit',
        lookup_field='id',
    )

    class Meta:
        model = Comment
        fields = [
            'id',
            'content',
            'owner',
            'edit_url',
        ]
Beispiel #3
0
class UploaderSimplelSerializer(serializers.DocumentSerializer):
    name = serializers.serializers.CharField()
    birth_day = serializers.serializers.DateTimeField(format="%Y-%m-%d")
    sex = serializers.serializers.SerializerMethodField()
    home_town = serializers.serializers.CharField()
    location = fields.GeoJSONField(geo_type='Point')
    user = fields.ReferenceField(model=User)
    post_count = serializers.serializers.SerializerMethodField()
    posts_url = serializers.serializers.HyperlinkedIdentityField(
        view_name='post-filter-uploader',
        lookup_field='id',
    )
    photo_url = serializers.serializers.HyperlinkedIdentityField(
        view_name='get-photo',
        lookup_field='id',
    )
    edit_url = serializers.serializers.HyperlinkedIdentityField(
        view_name='uploader-edit',
        lookup_field='id',
    )

    class Meta:
        model = Uploader
        fields = [
            'id',
            'name',
            'birth_day',
            'sex',
            'home_town',
            'location',
            'user',
            'post_count',
            'photo_url',
            'edit_url',
            'posts_url'
        ]

    # def get_posts(self,obj):
    #     if obj.query_posts().count() ==0:
    #         return [];
    #     return PostSimpletSerializer(obj.query_posts(),many=True).data

    def get_post_count(self, obj):
        return obj.query_posts().count()

    def get_sex(self, obj):
        return obj.get_sex_display()
Beispiel #4
0
class UploaderListSerializer(serializers.DocumentSerializer):
    name = serializers.serializers.CharField()
    birth_day = serializers.serializers.DateTimeField(format="%Y-%m-%d")
    sex = serializers.serializers.SerializerMethodField()
    home_town = serializers.serializers.CharField()
    location = fields.GeoJSONField(geo_type='Point')
    user = fields.ReferenceField(model=User)
    photo_url = serializers.serializers.HyperlinkedIdentityField(
        view_name='get-photo',
        lookup_field='id',
    )
    edit_url = serializers.serializers.HyperlinkedIdentityField(
        view_name='uploader-edit',
        lookup_field='id',
    )
    detail_url = serializers.serializers.HyperlinkedIdentityField(
        view_name='uploader-retrieve',
        lookup_field='id',
    )

    class Meta:
        model = Uploader
        fields = [
            'id',
            'name',
            'birth_day',
            'sex',
            'home_town',
            'location',
            'user',
            'photo_url',
            'edit_url',
            'detail_url',
        ]

    def get_sex(self, obj):
        return obj.get_sex_display()

    def get_birth_day(self, obj):
        logger.debug(type(obj.birth_day))
        return obj.birth_day.date()
Beispiel #5
0
class UploaderCreateSerializer(serializers.DocumentSerializer):
    name = serializers.serializers.CharField(write_only=True)
    birth_day = serializers.serializers.DateTimeField(write_only=True, input_formats=["%Y-%m-%d"])
    sex = serializers.serializers.ChoiceField(choices=SEX, write_only=True)
    photo = fields.ImageField(default=get_default_image(), use_url=True, validators=[validate_photo_size, ],
                              write_only=True)
    home_town = serializers.serializers.CharField(write_only=True)
    location = fields.GeoPointField(write_only=True)
    user = fields.ReferenceField(model=User, write_only=True)

    class Meta:
        model = Uploader
        fields = [
            'id',
            'name',
            'birth_day',
            'sex',
            'photo',
            'home_town',
            'location',
            'user',
        ]