Exemple #1
0
class CommentDetailSerializer(serializers.ModelSerializer):
    user = UserPublicSerializer(read_only=True)
    reply_count = serializers.SerializerMethodField()
    replies = serializers.SerializerMethodField()

    class Meta:
        model = Comment
        fields = [
            'id',
            'user',
            'content_type',
            'object_id',
            'content',
            'replies',
            'reply_count',
            'timestamp',
        ]

    def get_reply_count(self, obj):
        if obj.is_parent:
            return obj.children().count()
        return 0

    def get_replies(self, obj):
        if obj.is_parent:
            return CommentChildSerializer(obj.children(), many=True).data
        return None
Exemple #2
0
class BlogsSerializer(serializers.ModelSerializer):

    uri = serializers.SerializerMethodField(read_only=True)
    user = UserPublicSerializer(read_only=True)

    class Meta:
        model = BlogsModel
        fields = ['id', 'user', 'content', 'image', 'uri']
        read_only_fields = ['user']  # GET

    # def validate_content(self, value):
    #     if len(value) > 10000:
    #         raise serializers.ValidationError("Content Field too Large")
    #     return value

    def validate(self, data):
        content = data.get("content", None)
        if content == "":
            content = None
        image = data.get("image", None)
        if content is None and image is None:
            raise serializers.ValidationError("Content or Image Required!")
        return data

    def get_uri(self, obj):
        #return "/api/status/{id}/".format(id=obj.id)
        request = self.context.get('request')
        return api_reverse('api-blogs:details',
                           kwargs={"id": obj.id},
                           request=request)
Exemple #3
0
class StatusSerializer(serializers.ModelSerializer):
    user = UserPublicSerializer(read_only=True)

    class Meta:
        model = Status
        fields = ['id', 'user', 'content', 'image']
        read_only_fields = ['user']
class StatusSerializer(serializers.ModelSerializer):
    uri = serializers.SerializerMethodField(read_only=True)
    #user            = serializers.SerializerMethodField(read_only=True)
    user = UserPublicSerializer(read_only=True)

    # user_id         = serializers.PrimaryKeyRelatedField(source='user', read_only=True)
    # user_id         = serializers.HyperlinkedRelatedField(
    #                         source='user',  # user foreign key
    #                         lookup_field='username',
    #                         view_name='api-user:detail',
    #                         read_only=True

    #                         )
    # user            = serializers.SlugRelatedField(read_only=True, slug_field='username')
    class Meta:
        model = Status
        fields = [
            'uri',
            # 'user_id',
            'id',  # ?? tmp for now,
            'user',
            'content',
            'image'
        ]
        read_only_fields = ['user']
        # partial = True
    def get_uri(self, obj):
        request = self.context.get('request')
        return api_reverse("api-status:detail",
                           kwargs={"id": obj.id},
                           request=request)
class StatusSerializer(serializers.ModelSerializer):
    user = UserPublicSerializer(read_only=True)
    uri = serializers.SerializerMethodField(read_only=True)
    class Meta:
        model = Status
        fields = [
            'uri',
            'id',
            'user',
            'content',
            'image'
        ]
        read_only_fields = ['user']

    def validate_content(self,value):
        if len(value)>240:
            raise serializers.ValidationError('This is very long')
        return value

    def validate(self,data):
        content = data.get('content',None)
        if content =='':
            content = None
        image = data.get('image',None)
        if content is None and image is None:
            raise serializers.ValidationError('contetn or image required')
        return data
    def get_uri(self,obj):
        return '/api/users/{id}/'.format(id=obj.id)
Exemple #6
0
class PostSerializer(serializers.ModelSerializer):
    user = UserPublicSerializer(read_only=True)
    # Serializer Related Field
    user_name = serializers.SlugRelatedField(source='user',
                                             read_only=True,
                                             slug_field="username")

    class Meta:
        model = Posts
        fields = ["id", "user", "content", "post_image", "user_name"]

        # The read_only_field attribute ensures that the field cannot be altered or written to (Typically used for default fields or user fields)
        read_only_fields = ["user"]

    # Validation
    def validate_content(self, value):
        if len(value) > 1000:
            raise serializers.ValidationError(
                "Content cannot be more than 1000 characters !")
        return value

    def validate(self, data):
        content = data.get("content", None)
        image = data.get("image", None)

        if content == "":
            content == None

        if content == None and image == None:
            raise serializers.ValidationError(
                "Content or Image are Required !")

        return data
Exemple #7
0
class StatusSerializer(serializers.ModelSerializer):
    uri  = serializers.SerializerMethodField(read_only=True)
    user = UserPublicSerializer(read_only=True) #nested serializer
    class Meta:
        model = Status
        fields = [
            'id',
            'user',
            'content',
            'uri',
            'image'
        ]
        read_only_fields = ['user']
    def get_uri(self,obj):
        return "/api/user/{id}".format(id=obj.id)

    def validate_content(self,value):
        if len(value) < 10:
            raise serializers.ValidationError("content are too short")
        return value

    def validate(self,data):
        content = data.get('content',None)
        if content == "":
            content = None
        image = data.get('image',None)
        if content is None and image is None:
            raise serializers.ValidationError("content or image is required")
        return data
Exemple #8
0
class StatusSerializer(serializers.ModelSerializer):
    user = UserPublicSerializer(read_only=True)
    uri = serializers.SerializerMethodField(read_only=True)

    class Meta:
        model = Status
        fields = ['uri', 'id', 'user', 'content', 'image']
        read_only_fields = ['user']

    def get_uri(self, obj):
        return "/api/status/{id}".format(id=obj.id)

    def validate_content(self, value):
        if len(value) > 10000:
            raise serializers.ValidatonError("This is way too long")
        return value

    def validate(self, data):
        content = data.get("content", None)
        if content == "":
            content = None
        image = data.get("image", None)
        if content is None and image is None:
            raise serializers.ValidatonError("Content or image is required")
        return data
class StatusSerializer(serializers.ModelSerializer):
    uri = serializers.SerializerMethodField(read_only=True)
    user = UserPublicSerializer(read_only=True)

    class Meta:
        model = Status
        fields = [
            'uri',
            'id',
            'user',
            'content',
            'image',
        ]
        #read_only_fields = ['user'] #GET calls it will be read only REGARDLESS of what is done in the view

    def get_uri(self, obj):
        #request = self.context.get('request')
        return "/api/status/{id}/".format(
            id=obj.id
        )  #api_reverse("api-user:detail", kwargs={"username": obj.username}, request=request)

    def validate_content(self, value):
        if len(value) > 1000:
            raise serializers.ValidationError("This is way too long")
        return value

    def validate(self, data):
        content = data.get("content", None)
        if content == "":
            content = None
        image = data.get("image", None)
        if content is None and image is None:
            raise serializers.ValidationError("content or image is required.")
        return data
class EventSerializer(serializers.ModelSerializer):
    creator = UserPublicSerializer(read_only=True)
    category = CategorySerializer()
    tags = TagSerializer(many=True)
    uri = serializers.SerializerMethodField()

    class Meta:
        model = Event
        fields = (
            'id',
            'uri',
            'title',
            'creator',
            'category',
            'tags',
            'description',
            'event_date',
            'location',
            # 'latitude',
            # 'longitude',
            # 'attendees',
            'created_on',
        )

    def get_uri(self, obj):
        request = self.context.get('request')
        return obj.get_api_uri(request=request)
Exemple #11
0
class PersonSerializer(serializers.ModelSerializer):

    uri      = serializers.SerializerMethodField(read_only=True)
    UserName = UserPublicSerializer(read_only=True)
    class Meta:
        model = Person
        fields = [
            'uri',
            'UserName',
            'PersonId',
            'PersonName',
            'Person_Image',
            'Person_sex',
            'Person_BDate',
            'Person_CDate'
        ]
        read_only_fields=['UserName'] # Get calls its gone be read only.

    def get_uri(self,obj):
        return "/api/Persons/{id}".format(id=obj.PersonId)

    def validate_personName(self,value):
        if len(value) > 30:
            raise serializers.ValidationError("PersonName should not be more than 30 Char")
        return value
    def validate_personsex(self,value):
        if value not in ['M','F','N']:
            raise  serializers.ValidationError("PersonSex should be M F or N")
        return value
    def validate_personbdate(self,value):
        if datetime.datetime.strptime(value, '%Y-%m-%d'):
            raise serializers.ValidationError("Incorrect data format, should be YYYY-MM-DD")
        return value
    def validate_personimg(self,value):
        pass
Exemple #12
0
class StatusSerializer(serializers.ModelSerializer):
    uri = serializers.SerializerMethodField(read_only=True)
    user = UserPublicSerializer(read_only=True)

    # user_id = serializers.PrimaryKeyRelatedField(
    #     source='user', read_only=True)
    # user_id = serializers.HyperlinkedRelatedField(
    #     source='user', lookup_field='username', view_name='api-user:detail', read_only=True)

    # user = serializers.SlugRelatedField(read_only=True, slug_field='email'
    # )

    class Meta:
        model = Status
        fields = ['uri', 'user_id', 'id', 'user', 'content', 'image']
        read_only_fields = ('user', )

    def get_uri(self, obj):
        request = self.context['request']
        return api_reverse('api-status:detail',
                           kwargs={'id': obj.id},
                           request=request)

    def validate(self, attrs):
        content, image = attrs.get("content"), attrs.get('image')
        if not content and not image:
            raise serializers.ValidationError("Content or image is required")
        return attrs
Exemple #13
0
class StatusSerializer(serializers.ModelSerializer):
    uri = serializers.SerializerMethodField(read_only=True)
    user = UserPublicSerializer(read_only=True)

    class Meta:
        model = Status
        fields = ['uri', 'id', 'user', 'content', 'image']
        read_only_fields = ['user']

    def get_uri(self, obj):
        request = self.context.get('request')
        return reverse('api-status:detail',
                       kwargs={'pk': obj.pk},
                       request=request)

    # def validate_content(self, value):
    #     if len(value) > 240:
    #         raise serializers.ValidationError('This is way too long!')
    #     return value

    def validate(self, data):
        content = data.get('content', None)
        if content == '':
            content = None
        image = data.get('image', None)
        if content is None and image is None:
            raise serializers.ValidationError('Content or image is required!')
        return data
Exemple #14
0
class TodosSerializer(serializers.ModelSerializer):
    uri = serializers.SerializerMethodField(read_only=True)
    # user = serializers.SerializerMethodField(read_only=True)
    user = UserPublicSerializer(read_only=True)
    class Meta:
        model = Todos
        fields = [
            'uri',
            'id',
            'user',
            'title',
            'completed'
        ]
        read_only_fields = ['user']

    # def get_user(self,obj):
    #     request = self.context.get('request')
    #     user = obj.user
    #     return  UserPublicSerializer(user,read_only=True, context={"request":request}).data

    def get_uri(self,obj):
        request = self.context.get('request')
        return api_reverse('api-todos:detail',kwargs={"id":obj.id}, request=request)

    def validate_title(self, value):
        if len(value)  > 100:
            raise serializers.ValidationError("This is way to short")
        return value
Exemple #15
0
class StatusSerializer(serializers.ModelSerializer):
    uri = serializers.SerializerMethodField(read_only=True)
    user = UserPublicSerializer(read_only=True)

    class Meta:
        model = Status
        fields = [
            'id',
            'user',
            'content',
            'image',
            'uri'
        ]
        read_only_fields = ['user']  # GET #readyonly_fields

    def get_uri(self, obj):
        return f'api/status/{obj.id}'

    # def validate_content(self, value):
    #     if len(value) > 10000:
    #         raise serializers.ValidationError('This is way too long.')
    #     return value

    def validate(self, attrs):
        content = attrs.get('content', None)
        if content == '':
            content = None
        image = attrs.get('image', None)
        if content is None and image is None:
            raise serializers.ValidationError('Content or Image is required')
        return attrs
class StatusSerializer(serializers.ModelSerializer):
    uri = serializers.SerializerMethodField(read_only=True)
    # user = serializers.SerializerMethodField(read_only=True)
    user = UserPublicSerializer(read_only=True)

    # # user_id = PrimaryKeyRelatedField(source='user', read_only=True)
    # # user_uri = HyperlinkedRelatedField(
    # #     source='user',  # user foreign key
    # #     lookup_field='username',
    # #     view_name='user-detail',
    # #     read_only=True)
    # user = serializers.SlugRelatedField(read_only=True, slug_field='username')

    class Meta:
        # Do notice that these are almost the same as from `forms.py`.
        # However, DRF serializers serializes the data into JSON as well as validate them for you!
        model = Status
        fields = [
            'id',
            'user',
            'content',
            'image',
            'uri',
        ]
        read_only_fields = ['user']  # GET # readonly_fields

    def get_uri(self, obj):
        request = self.context.get('request')
        return api_reverse('status-detail',
                           kwargs={'pk': obj.id},
                           request=request)

    def get_user(self, obj):
        request = self.context.get('request')
        user = obj.user
        return UserPublicSerializer(user,
                                    read_only=True,
                                    context={
                                        'request': request
                                    }).data

    # Single field validation example:
    # def validate_<fieldname>(self, value):
    # For example,
    # def validate_content(self, value):
    #     if len(value) > 10000:
    #         raise serializers.ValidationError('This is way too long.')
    #     return value

    def validate(self, data):
        """
        Validates all fields of Status model.
        """
        content = data.get('content', None)
        if content == '':
            content = None
        image = data.get('image', None)
        if content is None and image is None:
            raise serializers.ValidationError('Content or image is required.')
        return data
 def get_user(self, obj):
     request = self.context.get('request')
     user = obj.user
     return UserPublicSerializer(user,
                                 read_only=True,
                                 context={
                                     'request': request
                                 }).data
Exemple #18
0
class StatusSerializer(serializers.ModelSerializer):
    uri = serializers.SerializerMethodField(read_only=True)
    user = UserPublicSerializer(read_only=True)
    # user = serializers.SerializerMethodField(read_only=True)
    # user_id = serializers.PrimaryKeyRelatedField(source='user', read_only=True)
    user_url = serializers.HyperlinkedRelatedField(lookup_field='username',
                                                   view_name='api-user:detail',
                                                   source='user',
                                                   read_only=True)

    # user_email = serializers.SlugRelatedField(read_only=True, source='user', slug_field='email')

    class Meta:
        model = Status
        fields = [
            'uri',
            'id',
            'user_url',
            # 'user_email',
            'user',
            'content',
            'image',
        ]
        read_only_fields = ['user']

    def get_uri(self, obj):
        request = self.context['request']
        return api_reverse('api-status:detail',
                           kwargs={'id': obj.id},
                           request=request)

    # def get_user(self, obj):
    #     request = self.context['request']
    #     user = obj.user
    #     return UserPublicSerializer(user, read_only=True, context={'request': request}).data
    """
    def validate_<fieldname>(self, value):
        validation...
        return value
   """

    # Field level validation
    # def validate_content(self, value):
    #     if len(value) > 10000:
    #         raise serializers.ValidationError("This is way too long.")
    #     return value

    # Serializer level validation
    def validate(self, data):
        content = data.get('content', None)
        if content == '':
            content = None
        image = data.get('image', None)
        if image is None and content is None:
            raise serializers.ValidationError('Content or image is required')
        return data
class ReviewSerializer(serializers.ModelSerializer):
	user = UserPublicSerializer(read_only=True)
	class Meta:
		model = Review
		fields = ['id',
				'user',
				'title',
				'book',
				'content',
				'timestamp']
Exemple #20
0
class StatusSerializer(serializers.ModelSerializer):
    uri = serializers.SerializerMethodField(read_only=True)
    # user    = serializers.SerializerMethodField(read_only=True)
    user = UserPublicSerializer(read_only=True)

    # user_id =  serializers.PrimaryKeyRelatedField(source='user', read_only=True)
    # user_id =  serializers.HyperlinkedRelatedField(
    #                 source='user', # user foreign key
    #                 lookup_field='username',
    #                 view_name='api-user:detail',
    #                 read_only=True

    #                 )
    # username = serializers.SlugRelatedField(source='user', read_only=True, slug_field='username')

    class Meta:
        model = Status
        fields = [
            'id',  #?
            'user',
            # 'user_id',
            'content',
            'image',
            # 'username',
            'uri',
        ]
        read_only_fields = ['user']  # GET # readonly_fields

    # def get_user(self, obj):
    #     request = self.context.get('request')
    #     user = obj.user
    #     return UserPublicSerializer(user, read_only=True, context={"request" : request}).data

    def get_uri(self, obj):
        request = self.context.get('request')
        # return "/api/status/{id}/".format(id=obj.id)
        return api_reverse('api-status:detail',
                           kwargs={'id': obj.id},
                           request=request)

    # def validate_<fieldname>(self, value) i.e. validate_content

    # def validate_content(self, value):
    #     if len(value) > 1000:
    #         raise serializers.ValidationError("this is way too long.")
    #     return value

    def validate(self, data):
        content = data.get("content", None)
        if content == "":
            content = None
        image = data.get("image", None)
        if content is None and image is None:
            raise serializers.ValidationError("Content or image is required")
        return data
class StatusSerializer(serializers.ModelSerializer):
    uri = serializers.SerializerMethodField(read_only=True)
    user = UserPublicSerializer(read_only=True)

    class Meta:
        model = StatusModel
        fields = ["uri", "id", "user", "content", "image"]
        read_only_fields = ['user']

    def get_uri(self, obj):
        return "/api/status/{id}/".format(id=obj.id)
class StatusSerializer(serializers.ModelSerializer):
    uri = serializers.SerializerMethodField(read_only=True)
    user = UserPublicSerializer(read_only=True)
    user_id = serializers.PrimaryKeyRelatedField(source='user',
                                                 read_only=True)
    user_link = serializers.HyperlinkedRelatedField(
        source='user',
        lookup_field='username',
        view_name='api-user:detail',
        read_only=True
    )
    username = serializers.SlugRelatedField(
        source='user',
        read_only=True,
        slug_field='username'
    )

    # serializing model data
    class Meta:
        model = Status
        fields = [
            'uri',
            'id',
            'user',
            'user_id',
            'user_link',
            'username',
            'content',
            'image'
        ]
        read_only_fields = ['user']  # only allowed for GET calls

    def get_uri(self, obj):
        request = self.context.get('request')
        # return "/api/status/{id}".format(id=obj.id)
        return api_reverse('api-status:detail', kwargs={"id": obj.id},
                           request=request)

    def validate_content(self, value):
        # Fn to validate content of serializer - field level validation
        if len(value) > 10000:
            raise serializers.ValidationError("This is too long")
        return value

    def validate(self, data):
        # Fn to validate all content types - model level validation
        content = data.get("content", None)  # default value None
        if content == "":  # if empty string - content set as None
            content = None
        image = data.get("image", None)
        if content is None and image is None:
            raise serializers.ValidationError("content or image is required.")
        return data
Exemple #23
0
class StatusSerializer(serializers.ModelSerializer):
    uri = serializers.SerializerMethodField(read_only=True)
    # user = serializers.SerializerMethodField(read_only=True)
    user = UserPublicSerializer(read_only=True)

    # user_id = serializers.PrimaryKeyRelatedField(source='user', read_only=True)
    # user_id = serializers.HyperlinkedRelatedField(
    #     source='user',
    #     lookup_field='username',
    #     view_name='api-user:detail',
    #     read_only=True)

    # username = serializers.SlugRelatedField(source='user', read_only=True, slug_field='email')

    class Meta:
        model = Status
        fields = [
            'uri',
            # 'user_id',
            'id',
            'user',
            'content',
            'image'
        ]
        read_only_fields = [
            'user'
        ]  # GET usado em conjunção com func perform_create em views

    # def get_user(self, obj):
    #     request = self.context.get('request')  # para meter os urls a funcionar
    #     user = obj.user
    #     return UserPublicSerializer(user, read_only=True, context={"request": request}).data

    def get_uri(self, obj):
        request = self.context.get('request')
        return api_reverse('api-status:detail',
                           kwargs={'id': obj.id},
                           request=request)

    # def validate_content(self, value):
    #     if len(value) > 10000:
    #         raise serializers.ValidationError("This is way to long.")
    #     return value

    def validate(self, data):
        content = data.get("content", None)
        if content == "":
            content = None
        image = data.get("image", None)
        if content is None and image is None:
            raise serializers.ValidationError("Content or image is required")
        return data
class StatusSerializer(serializers.ModelSerializer):
    uri = serializers.SerializerMethodField(read_only=True)
    # user          = serializers.SerializerMethodField(read_only=True)
    user = UserPublicSerializer(read_only=True)

    # user_id          =serializers.PrimaryKeyRelatedField(source='user', read_only=True)
    # user_id         = serializers.HyperlinkedRelatedField(
    #     source='user', # works for user foreign key
    #     lookup_field='username',
    #     view_name='api-user:detail',
    #     read_only=True
    #         )

    # user        =serializers.SlugRelatedField(read_only=True, slug_field='username') # source='email' <-- pulls email info
    class Meta:
        model = Status
        fields = [
            'uri',
            # 'user_id',
            'id',  # ?
            'user',
            'content',
            'image'
        ]
        read_only_fields = ['user']  #GET calls only. change users anymore

    # def get_user(self,obj):
    #     request = self.context.get('request')
    #     user = obj.user
    #     return UserPublicSerializer(user, read_only=True, context={"request"}).data

    def get_uri(self, obj):
        request = self.context.get('request')
        return api_reverse('api-status:detail',
                           kwargs={'id': obj.id},
                           request=request)

    #field level validation
    # def validate_<fieldname>(self, value):
    # def validate_content(self, value):
    #     if len(value) > 10000:
    #         raise serializers.ValidationError("This is way too long")
    #     return value

    def validate(self, data):
        content = data.get("content", None)
        if content == "":
            content = None
        image = data.get("image", None)
        if content is None and image is None:
            raise serializers.ValidationError("content or image is required")
        return data
Exemple #25
0
class StatusSerializer(serializers.ModelSerializer):
    uri = serializers.SerializerMethodField(read_only=True)
    user = UserPublicSerializer(read_only=True)

    # user = serializers.PrimaryKeyRelatedField(read_only=True)#default
    # user_id = serializers.PrimaryKeyRelatedField(source='user',read_only=True)#default

    # user_id = serializers.HyperlinkedRelatedField(
    #     source='user', #user foreignkey
    #     lookup_field='username',
    #     view_name='user_detail',
    #     read_only=True)

    # username = serializers.SlugRelatedField(source='user',read_only=True,slug_field='username')#'email')
    # user = serializers.SlugRelatedField(read_only=True,slug_field='username')#'email')

    class Meta:
        model = Status
        fields = (
            # 'username',
            #  'user_id',
            'uri',
            'id',
            'user',
            'content',
            'image',
        )
        read_only_fields = ['user']  #GET

    def get_uri(self, obj):
        request = self.context.get('request')
        return drf_reverse('status-detail',
                           kwargs={'pk': obj.pk},
                           request=request)

    #serializer validation
    def validate_content(self, value):
        if len(value) > 400:
            raise serializers.ValidationError("This way too long")
        return value

    def validate(self, data):
        content = data.get('content', None)
        if content == "":
            content = None

        image = data.get('image', None)
        if content is None and image is None:
            raise serializers.ValidationError('Content or image is required!')
        return data
class StatusInlineUserSerializer(StatusSerializer):
    uri = serializers.SerializerMethodField(read_only=True)
    user = UserPublicSerializer(read_only=True)
    # serializing model data

    class Meta:
        model = Status
        fields = [
            'uri',
            'id',
            'user',
            'content',
            'image'
        ]
Exemple #27
0
class TaskSerializer(serializers.ModelSerializer):
    user = UserPublicSerializer(read_only=True)

    class Meta:
        model = Task
        fields = ['user', 'task', 'is_completed', 'timestamp', 'id']
        read_only_fields = ['user']

    def vaidate(self, data):
        task = data.get('task', None)
        if task == '':
            task = None
        if task is None:
            raise serializers.ValidationError('Task cannot be empty.')
        return data
Exemple #28
0
    class Meta:
        model = FileSecureEntry
        fields = [
            'uri'
            'File_ID',
            'UserNameID',
            'PersonNameID',
            'File_Module',
            'File_Image',
            'File_CDate'

        ]
        read_only_fields = ['UserNameID','File_ID','PersonNameID']  # Get calls its gone be read only.

        uri             = serializers.SerializerMethodField(read_only=True)
        UserNameID      = UserPublicSerializer(read_only=True)
Exemple #29
0
class StatusSerializer(serializers.ModelSerializer):

    user = UserPublicSerializer(read_only=True)
    # userid = serializers.PrimaryKeyRelatedField(source='user', read_only=True)
    # user_id = serializers.HyperlinkedRelatedField(
    #     source='user',  # user foreign key
    #     lookup_field='username',
    #     view_name='api-user:detail',
    #     read_only=True
    # )
    # email = serializers.SlugRelatedField(source='user', read_only=True, slug_field='email')
    uri = serializers.SerializerMethodField(read_only=True)

    class Meta:
        model = Status
        fields = [
            'id',
            'user',
            # 'userid',
            # 'user_id',
            # 'email',
            'content',
            'image',
            'uri'
        ]
        read_only_fields = ['user']  # GET

    # def validate_content(self, value):
    #     if len(value) > 10000:
    #         raise serializers.ValidationError("This is wayy too long.")
    #     return value

    def get_uri(self, obj):
        request = self.context.get('request')
        return api_reverse('api-status:detail',
                           kwargs={"id": obj.id},
                           request=request)

    def validate(self, data):
        content = data.get("content", None)
        if content == "":
            content = None
        image = data.get("image", None)
        if content is None and image is None:
            raise serializers.ValidationError("Content or image is required.")
        return data
Exemple #30
0
class StatusSerializer(serializers.ModelSerializer):
    #for nesting serializer
    #################################################
    user = UserPublicSerializer(read_only=True)
    uri = serializers.SerializerMethodField(read_only=True)

    #user=serializers.SerializerMethodField(read_only=True)

    #for serializer related field

    #user_id=serializers.PrimaryKeyRelatedField(source='user', read_only=True)
    # user_id=serializers.HyperlinkedRelatedField(source='user', lookup_field='username', view_name='api-user:detail', read_only=True)
    # username=serializers.SlugRelatedField(source='user', read_only=True, slug_field='email')
    ################################################
    class Meta:
        model = Status
        fields = ['id', 'user', 'content', 'image', 'uri']

        read_only_fields = ['user']  #on GET calls user will be read only

    # def get_user(self, obj):
    #     request=self.context.get('request')
    #     user=obj.user
    #     return UserPublicSerializer(user,read_only=True, context={"request":request}).data

    def get_uri(self, obj):
        #return "/api/status/{id}/".format(id=obj.id)
        request = self.context.get('request')
        return api_reverse('api-status:detail',
                           kwargs={'id': obj.id},
                           request=request)

    # def validate_content(self, value):
    #     if len(value)>10000:
    #         raise serializers.ValidationError("This is way too long")
    #     return value

    def validate(self, data):
        content = data.get('content', None)
        if content == "":
            content = None
        image = data.get('image', None)
        if content is None and image is None:
            raise serializers.ValidationError("Content or image is required")
        return data