Ejemplo n.º 1
0
class PostDetailedSerializer(serializers.ModelSerializer):

    shared_post = BasicPostNestedSerializer(read_only=True)
    posted_by = UserProfileNestedSerializer(read_only=True)
    liked_by = UserProfileNestedSerializer(read_only=True, many=True)
    images = ImageSerializer(read_only=True, many=True)
    comments = CommentsInPostSerializer(read_only=True, many=True)

    logged_in_user_liked = serializers.SerializerMethodField(read_only=True)
    is_from_logged_in_user = serializers.SerializerMethodField(read_only=True)

    def get_is_from_logged_in_user(self, instance):
        if instance.posted_by == self.context['request'].user.profile:
            return True
        else:
            return False

    def get_logged_in_user_liked(self, instance):
        if self.context['request'].user.profile in instance.liked_by.values():
            return True
        else:
            return False

    class Meta:
        model = Post
        fields = [
            'id', 'content', 'posted_by', 'created', 'last_updated',
            'shared_post', 'liked_by', 'images', 'comments',
            'logged_in_user_liked', 'is_from_logged_in_user'
        ]

        read_only_fields = ['posted_by', 'shared_post', 'liked_by', 'comments']
Ejemplo n.º 2
0
class SubCatSerializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)
    category = serializers.SlugRelatedField(slug_field='name',
                                            queryset=Category.objects.all())
    image = ImageSerializer()
    name = serializers.CharField(max_length=25)
    slug = serializers.SlugField(max_length=25)

    # read_only setted becouse i cannot change the front-end forms yet
    description = serializers.CharField(max_length=135,
                                        allow_null=True,
                                        read_only=True)

    def validate_image(self, value):
        return get_object_or_404(Image, name=value["name"])

    def create(self, validated_data):
        return SubCat.objects.create(**validated_data)

    def update(self, instance, validated_data):
        instance.category = validated_data.get("category", instance.category)
        instance.image = validated_data.get("image", instance.image)
        instance.name = validated_data.get("name", instance.name)
        instance.slug = validated_data.get("slug", instance.slug)
        instance.save()
        return instance
Ejemplo n.º 3
0
class MUserSerializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)
    email = serializers.EmailField(max_length=30)
    password = serializers.CharField()
    username = serializers.SlugField(max_length=30)
    prof_picture = ImageSerializer()
    name = serializers.CharField(max_length=35)
    jjoin = serializers.DateField(read_only=True)
    jlast = serializers.DateField(read_only=True)
    is_active = serializers.BooleanField(default=True)
    is_staff = serializers.BooleanField(default=False)
    pubmail = serializers.EmailField(max_length=30, allow_null=True)
    bio = serializers.CharField(max_length=400, allow_null=True)
    about = serializers.CharField(max_length=400, allow_null=True)
    favorite_cat = CategorySerializer(allow_null=True)
    instagram_link = serializers.URLField(max_length=35, allow_null=True)
    facebook_link = serializers.URLField(max_length=35, allow_null=True)
    github_link = serializers.URLField(max_length=35, allow_null=True)
    jbirth = serializers.DateField(allow_null=True, read_only=True)
    birthday = serializers.DateField(allow_null=True)
    artcount = serializers.IntegerField(read_only=True)

    def validate_prof_picture(self, value):
        return get_object_or_404(Image, name=value["name"])

    def validate_favorite_cat(self, value):
        return get_object_or_404(Category, name=value["name"])

    def create(self, validated_data):
        user = User.objects.create(**validated_data)
        user.set_password(validated_data["password"])
        user.save()
        return user

    def update(self, instance, validated_data):
        instance.email = validated_data.get("email", instance.email)
        instance.password = validated_data.get("password", instance.password)
        instance.username = validated_data.get("username", instance.username)
        instance.name = validated_data.get("name", instance.name)
        instance.prof_picture = validated_data.get("prof_picture",
                                                   instance.prof_picture)
        instance.is_active = validated_data.get("is_active",
                                                instance.is_active)
        instance.is_staff = validated_data.get("is_staff", instance.is_staff)
        instance.pubmail = validated_data.get("pubmail", instance.pubmail)
        instance.bio = validated_data.get("bio", instance.bio)
        instance.about = validated_data.get("about", instance.about)
        instance.favorite_cat = validated_data.get("favorite_cat",
                                                   instance.favorite_cat)
        instance.instagram_link = validated_data.get("instagram_link",
                                                     instance.instagram_link)
        instance.facebook_link = validated_data.get("facebook_link",
                                                    instance.facebook_link)
        instance.github_link = validated_data.get("github_link",
                                                  instance.github_link)
        instance.birthday = validated_data.get("birthday", instance.birthday)
        instance.save()
        return instance
Ejemplo n.º 4
0
    def list(self, request, *args, **kwargs):
        ret = {code.FIELD_NAME: code.DETAIL_SUCCESS, msg.FIELD_NAME: None}

        detail_list = []

        person = kwargs.get('openId', None)
        # person = request.data.get('person')
        if person is not None:
            try:
                cdt_test_list = CdtTest.objects.filter(person=person)
                if cdt_test_list.exists():
                    # cdt_test_ser = CdtTestSerializer(instance=cdt_test_list, many=True).data
                    for item in cdt_test_list:
                        test_dict = {}
                        try:
                            image_list = Image.objects.filter(test_id=item.id)
                            image_ser = ImageSerializer(instance=image_list,
                                                        many=True).data
                            for image in image_ser:
                                if image['image_name'] == 'copy':
                                    test_dict['copy'] = image
                                else:
                                    test_dict['first'] = image

                            test_dict['testTime'] = item.test_time
                            test_dict['handTime'] = item.hand_time
                            detail_list.append(test_dict)
                            ret.update({'detail_list': detail_list})

                        except Image.DoesNotExist:
                            ret.update({
                                code.FIELD_NAME: code.DETAIL_NO_IMAGE,
                                msg.FIELD_NAME: msg.DETAIL_NO_IMAGE
                            })
                            return Response(ret, status.HTTP_404_NOT_FOUND)

                    ret.update({msg.FIELD_NAME: msg.DETAIL_SUCCESS})
                    return Response(ret)
                else:
                    ret.update({
                        code.FIELD_NAME: code.DETAIL_NO_IMAGE,
                        msg.FIELD_NAME: msg.DETAIL_NO_IMAGE
                    })
                    return Response(ret, status.HTTP_204_NO_CONTENT)
            except Exception as e:
                print(e)
                ret.update({
                    code.FIELD_NAME: code.DETAIL_FAIL,
                    msg.FIELD_NAME: msg.DETAIL_FAIL
                })

        else:
            ret.update({
                code.FIELD_NAME: code.DETAIL_NO_PERSON,
                msg.FIELD_NAME: msg.DETAIL_NO_PERSON
            })
            return Response(ret, status.HTTP_403_FORBIDDEN)
Ejemplo n.º 5
0
class MinArticleSerializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)
    title = serializers.CharField(read_only=True, max_length=120)
    slug = serializers.SlugField(read_only=True, max_length=120)
    image = ImageSerializer(read_only=True)
    description = serializers.CharField(read_only=True, max_length=200)
    publish_date = serializers.DateTimeField(read_only=True)
    author = MinUserSerializer(read_only=True)
    coms = serializers.IntegerField(read_only=True)

    read_time_m = serializers.IntegerField(read_only=True)
Ejemplo n.º 6
0
class UserSerializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)
    username = serializers.SlugField(max_length=30)
    name = serializers.CharField(max_length=35)
    prof_picture = ImageSerializer()
    pubmail = serializers.EmailField(max_length=30)
    bio = serializers.CharField(max_length=400)
    about = serializers.CharField(max_length=400)
    favorite_cat = CategorySerializer()
    instagram_link = serializers.URLField(max_length=35)
    facebook_link = serializers.URLField(max_length=35)
    github_link = serializers.URLField(max_length=35)
    jbirth = serializers.DateField(read_only=True)
    pubartcount = serializers.IntegerField(read_only=True)
Ejemplo n.º 7
0
class ArticleSerializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)
    title = serializers.CharField(read_only=True, max_length=120)
    slug = serializers.CharField(read_only=True, max_length=120)
    image = ImageSerializer(read_only=True)
    description = serializers.CharField(read_only=True, max_length=200)
    body = serializers.CharField(read_only=True, max_length=360000)
    publish_date = serializers.DateTimeField(read_only=True)
    category = CategorySerializer(read_only=True)
    subcat = SubCatSerializer(read_only=True)
    tags = TagSerializer(many=True, read_only=True)
    coms = serializers.IntegerField(read_only=True)
    author = MinUserSerializer(read_only=True)

    read_time_m = serializers.IntegerField(read_only=True)
Ejemplo n.º 8
0
class PostNestedSerializer(serializers.ModelSerializer):

    shared_post = BasicPostNestedSerializer(read_only=True)
    liked_by = UserProfileNestedSerializer(read_only=True, many=True)
    images = ImageSerializer(read_only=True, many=True)
    comments = CommentsInPostSerializer(read_only=True, many=True)

    class Meta:
        model = Post
        fields = [
            'id', 'content', 'created', 'last_updated', 'shared_post',
            'liked_by', 'images', 'comments'
        ]

        read_only_fields = ['shared_post', 'liked_by', 'images', 'comments']

        ordering = ['created']
Ejemplo n.º 9
0
class AllCategorySerializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)
    image = ImageSerializer(read_only=True)
    name = serializers.CharField(read_only=True, max_length=25)
    slug = serializers.SlugField(max_length=25, read_only=True)
    subcats = SubCatSerializer(many=True, read_only=True)
Ejemplo n.º 10
0
class MinUserSerializer(serializers.Serializer):
    username = serializers.SlugField(max_length=30)
    name = serializers.CharField(max_length=35)
    prof_picture = ImageSerializer(read_only=True)
Ejemplo n.º 11
0
class MArticleSerializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)
    title = serializers.CharField(max_length=120)
    slug = serializers.SlugField(max_length=120)
    image = ImageSerializer(allow_null=True)
    description = serializers.CharField(max_length=200)
    body = serializers.CharField(max_length=360000)
    date = serializers.DateTimeField(read_only=True)
    publish_date = serializers.DateTimeField(read_only=True)
    category = CategorySerializer(allow_null=True)
    subcat = SubCatSerializer(allow_null=True)
    tags = TagSerializer(many=True, allow_null=True)
    status = serializers.CharField(max_length=8)
    coms = serializers.IntegerField(read_only=True)
    author = MinUserSerializer()

    def validate_image(self, value):
        return get_object_or_404(Image, name=value["name"])

    def validate_category(self, value):
        return get_object_or_404(Category, name=value["name"])

    def validate_subcat(self, value):
        return get_object_or_404(SubCat, name=value["name"])

    def validate_tags(self, value):
        for i in range(len(value)):
            try:
                value[i] = Tag.objects.get(slug=value[i]['slug'],
                                           name=value[i]['name'])
            except Tag.DoesNotExist:
                try:
                    value[i] = Tag.objects.create(slug=value[i]['slug'],
                                                  name=value[i]['name'])
                except:
                    raise Http404
            except:
                raise Http404
        return value

    def validate_author(self, value):
        return get_object_or_404(User, username=value["username"])

    def create(self, validated_data):
        if 'tags' in validated_data:
            ts = validated_data.pop("tags")
            article = Article.objects.create(**validated_data)
            article.tags.set(ts)
        else:
            article = Article.objects.create(**validated_data)
        return article

    def update(self, instance, validated_data):
        instance.title = validated_data.get("title", instance.title)
        instance.slug = validated_data.get("slug", instance.slug)
        instance.image = validated_data.get("image", instance.image)
        instance.description = validated_data.get("description",
                                                  instance.description)
        instance.body = validated_data.get("body", instance.body)
        instance.category = validated_data.get("category", instance.category)
        instance.subcat = validated_data.get("subcat", instance.subcat)
        if 'tags' in validated_data:
            ts = validated_data.pop("tags")
            instance.tags.set(ts)
        instance.status = validated_data.get("status", instance.status)
        instance.author = validated_data.get("author", instance.author)
        instance.save()
        return instance
Ejemplo n.º 12
0
    def create(self, request, *args, **kwargs):
        ret = {code.FIELD_NAME: code.TEST_SUCCESS, msg.FIELD_NAME: None}

        file_name = request.data.get('fileName')
        file = request.FILES['file']
        test_time = request.data.get('testTime')
        person = request.data.get('person')
        hand_time = request.data.get('handTime')
        file_url = config.BASE_URL + 'file/' + file.name
        id_x = request.data.get('idx')

        # try:
        if file_name is not None and file is not None and test_time is not None and person is not None:
            # try:
            #     file_name = 'origin'
            #     cdt_obj = CdtTest.objects.get(test_time=test_time, hand_time=hand_time, person_id=person)
            # except CdtTest.DoesNotExist:
            #     file_name = 'copy'
            #     cdt_obj = CdtTest(test_time=test_time, hand_time=hand_time, person_id=person, result=0)
            # cdt_obj.save()
            if id_x == '1':
                file_name = 'origin'
            else:
                file_name = 'copy'

            cdt_obj = CdtTest.objects.get(test_time=test_time,
                                          hand_time=hand_time,
                                          person_id=person)

            file_obj = File(file=file)
            file_obj.file_name = file_name
            file_obj.test_id = cdt_obj.id
            file_obj.file_url = file_url
            file_obj.save()
            ret.update({
                msg.FIELD_NAME: msg.TEST_SUCCESS,
            })

            img_obj = Image.objects.get(test_id=file_obj.test_id,
                                        image_name=file_name)
            img_obj = ImageSerializer(instance=img_obj).data
            ret.update({
                'img': img_obj,
                'result': cdt_obj.result,
                'handTime': cdt_obj.hand_time,
                'testTime': cdt_obj.test_time
            })
            # try:
            #     with open("file/1.png", 'rb') as f:
            #         contents = f.read()
            #         # img = Image(image=contents)
            #         img = Image(image=contents)
            #         # img.image.save('filename.png', contents, True)
            #         img.image_name = '测试'
            #         img.image_url = 'http://127.0.0.1:8000/api/v1/file/media/img/1b701568621219604_1.docx'
            #         img.test_id = cdt_obj.id
            #         img.save()
            # except Exception as e:
            #     print(e)

            return Response(ret, status.HTTP_200_OK)
        else:
            ret.update({
                code.FIELD_NAME: code.TEST_NONE,
                msg.FIELD_NAME: msg.TEST_NONE
            })
            return Response(ret)