Beispiel #1
0
class TweetModelSerializer(serializers.ModelSerializer):
    parent_id = serializers.CharField(write_only=True, required=False)
    user = UserDisplaySerializer(read_only=True)
    date_display = serializers.SerializerMethodField()
    timesince = serializers.SerializerMethodField()
    parent = ParentTweetModelSerializer(read_only=True)
    likes = serializers.SerializerMethodField()
    did_like = serializers.SerializerMethodField()

    class Meta:
        model = Tweet
        fields = [
            'parent_id',
            'id',
            'user',
            'content',
            'timestamp',
            'date_display',
            'timesince',
            'parent',
            'likes',
            'did_like',
            'reply',
        ]
        # read_only_fields = ['reply']

    def get_did_like(self, obj):
        request = self.context.get("request")
        user = request.user
        if user.is_authenticated():
            if user in obj.liked.all():
                return True
        return False

    def get_likes(self, obj):
        return obj.liked.all().count()

    def get_date_display(self, obj):
        return obj.timestamp.strftime("%b %d, %Y at %I:%M %p")

    def get_timesince(self, obj):
        return timesince(obj.timestamp) + " ago "
Beispiel #2
0
class TweetModelSerializer(serializers.ModelSerializer):
    user = UserDisplaySerializer(read_only=True)
    date_display = serializers.SerializerMethodField()
    timesince = serializers.SerializerMethodField()
    parent = ParentTweetModelSerializer(read_only=True)
    likes = serializers.SerializerMethodField()
    did_like = serializers.SerializerMethodField()
    parent_id = serializers.CharField(write_only=True, required=False)

    class Meta:
        model = Tweet
        fields = [
            "id",
            "user",
            "content",
            "timestamp",
            "date_display",
            "timesince",
            "parent",
            "likes",
            "did_like",
            "reply",
            "parent_id",
        ]

    def get_did_like(self, obj):
        request = self.context.get("request")
        if request:
            user = request.user
            if user.is_authenticated():
                if user in obj.liked.all():
                    return True
        return False

    def get_likes(self, obj):
        return obj.liked.all().count()

    def get_date_display(self, obj):
        return obj.timestamp.strftime("%d %b %Y, %I:%m %p")

    def get_timesince(self, obj):
        return timesince(obj.timestamp) + " ago"
Beispiel #3
0
class TweetSerializer(serializers.ModelSerializer):
    user = UserDisplaySerializer(read_only=True)
    date_display = serializers.SerializerMethodField()
    timesince = serializers.SerializerMethodField()

    class Meta:
        model = Tweet
        fields = (
            'user',
            'content',
            'timestamp',
            'date_display',
            'timesince',
        )

    def get_date_display(self, obj):
        return obj.timestamp.strftime("%b %d, %Y at %I:%M %p")

    def get_timesince(self, obj):
        return timesince(obj.timestamp) + ' ago'
Beispiel #4
0
class TweetModelSerializer(serializers.ModelSerializer):
    user = UserDisplaySerializer(read_only=True)
    date_display = serializers.SerializerMethodField()
    timesince = serializers.SerializerMethodField()
    class Meta:
        model = Tweet
        fields = [
            'user',
            'id',
            'content',
            'created',
            'date_display',
            'timesince'
        ]

    def get_date_display(self, obj):
        return obj.created.strftime("%b %d %I:%M %p")

    def get_timesince(self, obj):
        return timesince(obj.created) + " ago"
Beispiel #5
0
class TweetModelSerializer(serializers.ModelSerializer):
    user = UserDisplaySerializer(read_only=True)
    date_display = serializers.SerializerMethodField()
    time_since = serializers.SerializerMethodField()

    class Meta:
        model = Tweet
        fields = [
            "user",
            "content",
            "timestamp",
            "date_display",
            "time_since",
        ]

    def get_date_display(self, obj):
        return obj.timestamp.strftime("%b %d %I:%M %p")

    def get_time_since(self, obj):
        return timesince(obj.timestamp) + " ago"
Beispiel #6
0
class TweetModelSerializer(serializers.ModelSerializer):
    user = UserDisplaySerializer(read_only=True)  #also there write_onlyis
    date_display = serializers.SerializerMethodField()
    timesince = serializers.SerializerMethodField()

    class Meta:
        model = Tweet
        fields = [
            'user',
            'content',
            'timestamp',
            'date_display',
            'timesince',
        ]

    def get_date_display(self, obj):
        return obj.timestamp.strftime("%b %d %I:%M %p")

    def get_timesince(self, obj):
        return timesince(obj.timestamp) + " ago"
Beispiel #7
0
class ParentTweetModelSerializer(serializers.ModelSerializer):
    user = UserDisplaySerializer()
    date_dsiplay = serializers.SerializerMethodField()
    timesince = serializers.SerializerMethodField()

    class Meta:
        model = Tweet
        fields = [
            'user',
            'content',
            'timestamp',
            'date_dsiplay',
            'timesince',
        ]

    def get_date_dsiplay(self, obj):
        return obj.timestamp.strftime("%b %d %I:%M %p")

    def get_timesince(self, obj):
        return timesince(obj.timestamp) + " ago"
Beispiel #8
0
class ParentTweetModelSerializer(serializers.ModelSerializer):
    user = UserDisplaySerializer(read_only=True) #write_only
    date_display = serializers.SerializerMethodField()
    timesince = serializers.SerializerMethodField()
    likes = serializers.SerializerMethodField()
    did_like = serializers.SerializerMethodField()

    class Meta:
        model = Tweet
        fields = [
            'id',
            'user',
            'content',
            'timestamp',
            'date_display',
            'timesince',
            'likes',
            'did_like',
           

        ]

    def get_did_like(self, obj):
        try:
            user = request.user
            if user.is_authenticated():
                if user in obj.liked.all():
                    return True
        except:
            pass
        return False


    def get_likes(self, obj):
        return obj.liked.all().count()

    def get_date_display(self, obj):
        return obj.timestamp.strftime("%b %d, %Y at %I:%M %p")

    def get_timesince(self, obj):
        return timesince(obj.timestamp) + " ago"
Beispiel #9
0
class ParentPostModelSerializer(serializers.ModelSerializer):
    user = UserDisplaySerializer(read_only=True)
    date_display = serializers.SerializerMethodField()
    timesince = serializers.SerializerMethodField()
    likes = serializers.SerializerMethodField()
    did_like = serializers.SerializerMethodField()
    class Meta:
        model = Post
        fields =[
            'id',
            'user',
            'content',
            'timestamp',
            'date_display',
            'timesince',
            'likes',
            'did_like'
        ]
        
    def get_did_like(self, obj):
        request = self.context.get("request")
        try:
            user = request.user
            if user.is_authenticated():
                if user in obj.liked.all():
                    return True
        except:
            pass
        return False

    def get_likes(self, obj):
        return obj.liked.all().count()
        
    def get_date_display(self,obj):
        return obj.timestamp.strftime("%b %d %I:%M %p")

    def get_timesince(self, obj):
        if timesince(obj.timestamp)[0] is '0':
            return "Just Now"
        else:
            return timesince(obj.timestamp) + " ago"
Beispiel #10
0
class TweetModelSerializer(serializers.ModelSerializer):
    user = UserDisplaySerializer(
        read_only=True)  # this brings all data from user not only id
    date_display = serializers.SerializerMethodField()
    timesince = serializers.SerializerMethodField()

    class Meta:
        model = Tweet
        fields = [
            'user',
            'content',
            'timestamp',
            'date_display',
            'timesince',
        ]

    def get_date_display(self, obj):
        return obj.timestamp.strftime("%b %d, %Y | at %I:%M %p")

    def get_timesince(self, obj):
        return timesince(obj.timestamp) + " ago"
Beispiel #11
0
class ChirpModelSerializer(serializers.ModelSerializer):
    user = UserDisplaySerializer(read_only=True) #write_only
    date_display = serializers.SerializerMethodField()
    timesince = serializers.SerializerMethodField()

    class Meta:
        model = Chirp
        fields = [
            'id',
            'user',
            'content',
            'timestamp',
            'date_display',
            'timesince',
        ]

    def get_date_display(self, obj):
        return obj.timestamp.strftime("%b %d, %Y at %I:%M %p")

    def get_timesince(self, obj):
        return timesince(obj.timestamp) + " ago"
Beispiel #12
0
class TweetModelSerializer(serializers.ModelSerializer):
    user = UserDisplaySerializer(read_only=True)
    date_display = serializers.SerializerMethodField()
    timesince = serializers.SerializerMethodField()
    parent = ParentTweetModelSerializer(read_only=True)
    likes = serializers.SerializerMethodField()
    did_like = serializers.SerializerMethodField()

    class Meta:
        model = Tweet
        fields = [
            'id',
            'user',
            'content',
            'timestamp',
            'date_display',
            'timesince',
            'parent',
            'likes',
            'did_like',
            'reply',
        ]

    def get_did_like(self, obj):
        request = self.context.get('request')
        user = request.user
        if user.is_authenticated:
            if user in obj.liked.all():
                return True
        return False

    def get_likes(self, obj):
        return obj.liked.all().count()

    def get_date_display(self, obj):
        return obj.timestamp.strftime("%d %b, %I:%M %p")

    def get_timesince(self, obj):
        return timesince(obj.timestamp) + ' ago'
Beispiel #13
0
class TweetModelSerializer(serializers.ModelSerializer):
	user = UserDisplaySerializer(read_only=True)
	date_display = serializers.SerializerMethodField()
	timesince = serializers.SerializerMethodField()
	is_retweet = serializers.SerializerMethodField()
	class Meta:
		model = Tweet
		fields = [
			'id',
			'user',
			'content',
			'timestamp',
			'date_display',
			'is_retweet',
			'timesince'
		]
	def get_date_display(self, obj):
		return obj.timestamp.strftime("%b %d, %Y at %I:%M %p")
	def get_timesince(self, obj):
		return timesince(obj.timestamp) + " ago"
	def get_is_retweet(self, obj):
		return obj.parent != None
Beispiel #14
0
class ParentTweetModelSerializers(serializers.ModelSerializer):
    user = UserDisplaySerializer(read_only=True)
    date_display = serializers.SerializerMethodField()
    timesince = serializers.SerializerMethodField()
    likes = serializers.SerializerMethodField()
    did_like = serializers.SerializerMethodField()

    class Meta:
        model = Tweet
        fields = [
            'id',
            'user',
            'content',
            'timestamp',
            'date_display',
            'timesince',
            'likes',
            'did_like',
        ]

    def get_likes(self, obj):
        return obj.liked.all().count()

    def get_did_like(self, obj):
        # request = self.context.get("request")
        request = obj
        # import pdb; pdb.set_trace()
        user = request.user
        if user.is_authenticated:
            if user in obj.liked.all():
                return True
        return False

    def get_date_display(self, obj):
        return obj.timestamp.strftime("%b %d %Y at %I:%M %p")

    def get_timesince(self, obj):
        return timesince(obj.timestamp) + " ago"
Beispiel #15
0
class ParentTweetModelSerializer(serializers.ModelSerializer):
    user = UserDisplaySerializer(read_only=True)
    date_display = serializers.SerializerMethodField()
    timesince = serializers.SerializerMethodField()

    class Meta:
        model = Tweet
        fields = [
            'id',
            'user',
            'content',
            'timestamp',
            'date_display',
            'timesince',
        ]

    def get_date_display(self, obj):
        return obj.timestamp.strftime(
            "%b %d,%Y" + " at " +
            " %I : %M %p")  #check documentation of strftime

    def get_timesince(self, obj):
        return timesince(obj.timestamp) + " ago"
Beispiel #16
0
class TweetModelSerializer(serializers.ModelSerializer):
    # não permite alterar dados do usuário
    # permite alterar somente o conteúdo
    user = UserDisplaySerializer(
        read_only=True)  # read_only ou write_only # foreign key
    date_display = serializers.SerializerMethodField()
    timesince = serializers.SerializerMethodField()

    class Meta:
        model = Tweet
        fields = [
            'user',
            'content',
            'timestamp',
            'date_display',
            'timesince',
        ]

    # https://docs.python.org/3/library/datetime.html?highlight=strftime#strftime-and-strptime-behavior
    def get_date_display(self, obj):
        return obj.timestamp.strftime("%b %d, %I:%M %p")

    def get_timesince(self, obj):
        return timesince(obj.timestamp) + " ago"
Beispiel #17
0
class ParentTweetModelSerializer(serializers.ModelSerializer):
    user = UserDisplaySerializer(read_only=True)
    date_display = serializers.SerializerMethodField()
    timesince = serializers.SerializerMethodField()
    likes = serializers.SerializerMethodField()
    did_like = serializers.SerializerMethodField()

    class Meta:
        model = Tweet
        fields = [
            "id",
            "user",
            "content",
            "timestamp",
            "date_display",
            "timesince",
            "likes",
            # "did_like",
        ]

    # def get_did_like(self, obj):
    #     request = self.context.get("request")
    #     user = request.user
    #     if user.is_authenticated():
    #         if user in obj.liked.all():
    #             return True
    #     return False

    def get_likes(self, obj):
        return obj.liked.all().count()

    def get_date_display(self, obj):
        return obj.timestamp.strftime("%b %d, %Y at %I:%M %p")

    def get_timesince(self, obj):
        return timesince(obj.timestamp) + " ago"
Beispiel #18
0
class TweetModelSerializer(serializers.ModelSerializer):
    user = UserDisplaySerializer()

    class Meta:
        model = Tweet
        fields = ['user', 'content', 'code']
Beispiel #19
0
class PartyModelSerializer(serializers.ModelSerializer):
    # foreign key relationship to the user serializer
    # would normally display as the id number (from party model),
    # but serializer allows it to access the data from the user model
    # the readonly just means that you cant edit a user from an event
    user = UserDisplaySerializer(read_only=True)
    # this is a prettier display for the time that converts to AM/PM
    party_time_display = serializers.SerializerMethodField()
    # time until the event time
    timeuntil = serializers.SerializerMethodField()
    # prettier AM/PM display for time created. currently unused
    time_created_display = serializers.SerializerMethodField()
    # tells us if the event time has passed or not
    #is_open = serializers.SerializerMethodField()
    # how many people have starred the event
    stars = serializers.SerializerMethodField()
    # tells us if the requestuser has starred this one.
    did_star = serializers.SerializerMethodField()
    # routes to the thumbnail in the media folder.
    thumbnail_url = serializers.SerializerMethodField()
    # this is a shortened version of the title that fits the thumbnail
    short_title = serializers.SerializerMethodField()
    # this is a shortened version of the description that fits the thumbnail
    short_description = serializers.SerializerMethodField()
    # numberof people that have joined the event
    joins = serializers.SerializerMethodField()
    # tells us if the requestuser has joined the event
    did_join = serializers.SerializerMethodField()
    # this hold the list of winning users after the event has closed
    winner_names = serializers.SerializerMethodField()
    # tells us if requestuser was the one who created this event.
    is_owner = serializers.SerializerMethodField()
    num_curr_winners = serializers.SerializerMethodField()
    verified = serializers.SerializerMethodField()
    profile_picture = serializers.SerializerMethodField()

    class Meta:
        # the API is built on the party model
        model = Party
        # the fields tell us what is in the API. some are Serilaizermethodfields
        # the others are directly from the model
        fields = [
            'id',
            'user',
            'title',
            'description',
            'party_time',
            'time_created',
            'party_time_display',
            'timeuntil',
            'time_created_display',
            'is_open',
            'event_type',
            'stars',
            'did_star',
            'thumbnail_url',
            'short_title',
            'short_description',
            'joins',
            'did_join',
            'winner_names',
            'is_owner',
            'cost',
            'num_possible_winners',
            'num_curr_winners',
            'minimum_bid',
            'max_entrants',
            'verified',
            'profile_picture',
            'is_twitch_event',
        ]

    # method if you want the human readable format of the event type
    # def get_readable_event_type(self, obj):
    #   return obj.get_event_type_display()

    # The methods below define the SerializerMethodFields
    def get_is_owner(self, obj):
        request = self.context.get('request')
        try:
            # actually checks the event user versus the request
            user = request.user
            if user.is_authenticated:
                if user == obj.user:
                    return True
        except:
            pass
        return False

    # we use winner names because the winner list itself just contains the primary keys
    def get_winner_names(self, obj):
        names = []
        w = obj.winners.all()
        for user in w:
            names.append(user.username)
        return names

    # this limits the characters for displaying on the thumbnail
    def get_short_title(self, obj):
        return truncatechars(obj.title, 25)

    def get_short_description(self, obj):
        return truncatechars(obj.description, 40)

    def get_thumbnail_url(self, obj):
        # conn = S3Connection(config('AWS_ACCESS_KEY_ID'), config('AWS_SECRET_ACCESS_KEY'))
        # bucket = conn.get_bucket(config('S3_BUCKET_NAME'))
        # k = Key(bucket)
        # k.key = obj.id # for example, 'images/bob/resized_image1.png'
        # k.get_contents_from_file()
        #return "https://s3-us-west-1.amazonaws.com/apogee-assets/thumbnails/2018/07/17/HovaGolfWithFriends.jpg"
        if obj.thumbnail and hasattr(obj.thumbnail, 'url'):
            return obj.thumbnail.url
        else:
            return None

    def get_profile_picture(self, obj):
        if obj.user.profile.profile_picture and hasattr(
                obj.user.profile.profile_picture, 'url'):
            return obj.user.profile.profile_picture.url
        else:
            return None

    # requires try block because it may throw an error
    def get_did_star(self, obj):
        request = self.context.get('request')
        try:
            user = request.user
            if user.is_authenticated:
                if user in obj.starred.all():
                    return True
        except:
            pass
        return False

    def get_verified(self, obj):
        return obj.user.profile.is_verified

    def get_did_join(self, obj):
        request = self.context.get('request')
        try:
            user = request.user
            if user.is_authenticated:
                if user in obj.joined.all():
                    return True
        except:
            pass
        return False

    def get_stars(self, obj):
        return obj.starred.all().count()

    def get_joins(self, obj):
        return obj.joined.all().count()

    def get_party_time_display(self, obj):
        # strftime is python datetime method. the localtime call
        # converts it back to the local time because it is converted
        # to UTC when it's stored in the database
        tz_converted = timezone.localtime(obj.party_time)
        # the % is just formatting
        return tz_converted.strftime('%b %d at %I:%M %p')

    def get_timeuntil(self, obj):
        return timeuntil(obj.party_time - timedelta(minutes=2))

    # this compares the current time to the event time and tells us if it's closed
    # def get_is_open(self, obj):
    # 	return timezone.now()<obj.party_time

    def get_time_created_display(self, obj):
        # strftime is python datetime method
        return obj.time_created.strftime('%b %d at %I:%M %p')

    def get_num_curr_winners(self, obj):
        return obj.winners.all().count()
Beispiel #20
0
class AnswerModelSerializer(serializers.ModelSerializer):
    user = UserDisplaySerializer()

    class Meta:
        model = Answer
        fields = ('__all__')
Beispiel #21
0
class StatisticsInfoModelSerializer(serializers.ModelSerializer):
    user = UserDisplaySerializer(read_only=True)
    total_earnings = serializers.SerializerMethodField()
    total_num_events = serializers.SerializerMethodField()
    general_average_earnings = serializers.SerializerMethodField()
    lottery_average_earnings = serializers.SerializerMethodField()
    bid_average_earnings = serializers.SerializerMethodField()
    buyout_average_earnings = serializers.SerializerMethodField()
    general_join_time = serializers.SerializerMethodField()
    general_join_event_time = serializers.SerializerMethodField()
    general_star_time = serializers.SerializerMethodField()
    general_star_event_time = serializers.SerializerMethodField()

    class Meta:
        # the API is built on the party model
        model = StatisticsInfo
        # the fields tell us what is in the API. some are Serilaizermethodfields
        # the others are directly from the model
        fields = [
            'user',  #serialized
            'max_profit',
            'max_profit_event',
            'total_earnings',  #serialized
            'total_num_events',  #serialized 
            'general_average_earnings',  #serialized
            'general_join_time',  #serialized
            'general_join_event_time',  #serialized
            'general_star_time',  #serialized
            'general_star_event_time',  #serialized
            'lottery_num_events',
            'lottery_total_earnings',
            'lottery_total_participants',
            'lottery_average_earnings',  #serialized
            'lottery_join_time',
            'lottery_join_event_time',
            'lottery_star_time',
            'lottery_star_event_time',
            'bid_num_events',
            'bid_total_earnings',
            'bid_join_time',
            'bid_join_event_time',
            'bid_star_time',
            'bid_star_event_time',
            'bid_average_earnings',  # serialized
            'max_bid_event',
            'buyout_num_events',
            'buyout_total_earnings',
            'buyout_join_time',
            'buyout_join_event_time',
            'buyout_star_time',
            'buyout_star_event_time',
            'buyout_average_earnings',  # serialized
        ]

    def get_general_join_event_time(self, obj):
        general_join_event = [0] * 48
        buyout_join_event = obj.buyout_join_event_time
        lottery_join_event = obj.lottery_join_event_time
        bid_join_event = obj.bid_join_event_time
        for i in range(48):
            general_join_event[i]= buyout_join_event[i]+lottery_join_event[i]+\
            bid_join_event[i]
        return general_join_event

    def get_general_join_time(self, obj):
        general_join = [0] * 48
        buyout_join = obj.buyout_join_time
        lottery_join = obj.lottery_join_time
        bid_join = obj.bid_join_time
        for i in range(48):
            general_join[i]= buyout_join[i]+lottery_join[i]+\
            bid_join[i]
        return general_join

    def get_general_star_time(self, obj):
        general_star = [0] * 48
        buyout_star = obj.buyout_star_time
        lottery_star = obj.lottery_star_time
        bid_star = obj.bid_star_time
        for i in range(48):
            general_star[i]= buyout_star[i]+lottery_star[i]+\
            bid_star[i]
        return general_star

    def get_general_star_event_time(self, obj):
        general_star_event = [0] * 48
        buyout_star_event = obj.buyout_star_event_time
        lottery_star_event = obj.lottery_star_event_time
        bid_star_event = obj.bid_star_event_time
        for i in range(48):
            general_star_event[i]= buyout_star_event[i]+lottery_star_event[i]+\
            bid_star_event[i]
        return general_star_event

    def get_buyout_average_earnings(self, obj):
        num_events = obj.buyout_num_events
        if num_events == 0:
            return 0
        return obj.buyout_total_earnings / num_events

    def get_bid_average_earnings(self, obj):
        num_events = obj.bid_num_events
        if num_events == 0:
            return 0
        return obj.bid_total_earnings / num_events

    def get_total_earnings(self, obj):
        return obj.bid_total_earnings+obj.buyout_total_earnings+\
        obj.lottery_total_earnings

    def get_total_num_events(self, obj):
        return obj.bid_num_events + obj.buyout_num_events + obj.lottery_num_events

    def get_general_average_earnings(self, obj):
        num_events = obj.bid_num_events+obj.buyout_num_events+\
        obj.lottery_num_events
        earnings = obj.bid_total_earnings+obj.buyout_total_earnings+\
        obj.lottery_total_earnings
        if num_events == 0:
            return 0
        average_earnings = earnings / num_events
        return average_earnings

    def get_lottery_average_earnings(self, obj):
        if obj.lottery_num_events == 0:
            return 0
        return obj.lottery_total_earnings / obj.lottery_num_events
class TweetModelSerializer(serializers.ModelSerializer):
    user = UserDisplaySerializer(read_only=True)  #write_only

    class Meta:
        model = Tweet
        fields = ['user', 'content']
Beispiel #23
0
class ServiceDisplaySerializer(serializers.ModelSerializer):
    user = UserDisplaySerializer(read_only=True)

    class Meta:
        model = Service
        fields = ['icon', 'head', 'description', 'user', 'created']
Beispiel #24
0
class TweetModelSerializer(serializers.ModelSerializer):
    user = UserDisplaySerializer()  #this data will be in user

    class Meta:
        model = Tweet
        fields = ['user', 'content']
Beispiel #25
0
 class Meta:
     model = Clinic_Date_Patients
     user = UserDisplaySerializer(read_only=True)
     clinic = Clinic_DateDisplaySerializer(read_only=True)
     patient = PatientVisitSerializer(read_only=True)
     fields = ['clinic', 'user', 'patient', 'date']
class PostModelSerializer(serializers.ModelSerializer):

    parent_id = serializers.CharField(write_only=True, required=False)
    # user = UserDisplaySerializer()
    user = UserDisplaySerializer(read_only=True) # write_only
    date_display = serializers.SerializerMethodField()
    timesince = serializers.SerializerMethodField()

    # para que desde api y desde web solo se grabe un post sin neesidad de asociarle el parent
    # pues ser aun post original y no un post para ir anidado a un parent
    parent = ParentPostModelSerializer(read_only=True)

    likes = serializers.SerializerMethodField()

    # ****
    did_like = serializers.SerializerMethodField()
    # ****

    class Meta:
        model = Post
        fields = [
            'parent_id',
            'id',
            'user',
            'content',
            'timestamp',
            'date_display',
            'timesince',
            'parent',
            'likes',

            # ****
            'did_like',
            # ****

            # Se responde a un post padre
            'reply',

        ]

        # read_only_fields = ['reply',]

    # ****

    # Se ha cambiado get_did_like por el metodo de abajo
    # acorde a esta respuesta https://www.udemy.com/tweetme-django/learn/v4/questions/2789020
    # Y mas adelante lo arreglan asi: https://www.udemy.com/tweetme-django/learn/v4/t/lecture/6139532?start=0
    def get_did_like(self, obj):
        request = self.context.get("request")
        try:
            user = request.user
            if user.is_authenticated():
                if user in obj.liked.all():
                    return True
        except:
            pass
        return False

    # ****
    '''
    def get_did_like(self, obj):
        request = self.context.get("request")
        user = request
        if user in obj.liked.all():
            return True
        return False
    '''
    def get_likes(self, obj):
        # Tomamos el campo liked en el modelo Post y
        # le hacemos un count para contar los likes
        return obj.liked.all().count()

    '''
    def get_is_repost(self, obj):
        # Averiguamos si es un post original o no. Si tiene parent es reposteado
        # y retornamos True
        if obj.parent:
            return True
        # sino tiene parent retornamos False, y sera un post original
        return False
    '''

    def get_date_display(self, obj):
        # https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior
        # view parameters %b
        return obj.timestamp.strftime("%b %d, %Y at %I:%M %p")

    def get_timesince(self, obj):
        return timesince(obj.timestamp) + " ago"
class ParentPostModelSerializer(serializers.ModelSerializer):
    # user = UserDisplaySerializer()
    user = UserDisplaySerializer(read_only=True) # write_only
    date_display = serializers.SerializerMethodField()
    timesince = serializers.SerializerMethodField()

    # Para dar like a un post padre o a un repost, se declaran aca tambien
    # likes y did_like, y tendra ambito sobre ambos, post o repost.
    likes = serializers.SerializerMethodField()

    # ****
    did_like = serializers.SerializerMethodField()
    # ****

    class Meta:
        model = Post
        fields = [
            'id',
            'user',
            'content',
            'timestamp',
            'date_display',
            'timesince',
            'likes',

            # ****
            'did_like',
            # ****
        ]

    '''
    def get_did_like(self, obj):
        request = self.context.get("request")
        user = request
        if user in obj.liked.all():
            return True
        return False
    '''

    def get_did_like(self, obj):
        request = self.context.get("request")
        try:
            user = request.user
            if user.is_authenticated():
                if user in obj.liked.all():
                    return True
        except:
            pass
        return False


    def get_likes(self, obj):
        # Tomamos el campo liked en el modelo Post y
        # le hacemos un count para contar los likes
        return obj.liked.all().count()

    def get_date_display(self, obj):
        # https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior
        # view parameters %b
        return obj.timestamp.strftime("%b %d, %Y at %I:%M %p")

    def get_timesince(self, obj):
        return timesince(obj.timestamp) + " ago"
Beispiel #28
0
class TaskDisplaySerializer(serializers.ModelSerializer):
    assigned_to = UserDisplaySerializer(read_only=True)

    class Meta:
        model = Task
        fields = ['assigned_to', 'task', 'description']
Beispiel #29
0
class TweetModelSerializer(serializers.ModelSerializer):
    user = UserDisplaySerializer(read_only=True) #write_only
    date_display = serializers.SerializerMethodField()
    timesince = serializers.SerializerMethodField()
class CrudModelSerializer(serializers.ModelSerializer):
    user=UserDisplaySerializer()
    class Meta:
        model = Crud
        fields = ('id','user', 'content')