added frontend for social + feed partiali working

This commit is contained in:
2026-05-18 02:25:47 +02:00
parent e1df55df0e
commit 202ce22102
88 changed files with 4236 additions and 737 deletions

View File

@@ -1,7 +1,18 @@
from django.contrib.auth import get_user_model
from rest_framework import serializers
from .models import Post, PostContent, PostVote
from social.hubs.serializers import TagsSerializer
User = get_user_model()
class AuthorMinimalSerializer(serializers.ModelSerializer):
avatar = serializers.ImageField(read_only=True)
class Meta:
model = User
fields = ['id', 'username', 'first_name', 'last_name', 'avatar']
class PostContentSerializer(serializers.ModelSerializer):
class Meta:
@@ -13,12 +24,32 @@ class PostContentSerializer(serializers.ModelSerializer):
class PostSerializer(serializers.ModelSerializer):
contents = PostContentSerializer(many=True, read_only=True)
tags = TagsSerializer(many=True, read_only=True)
author_detail = AuthorMinimalSerializer(source='author', read_only=True)
vote_score = serializers.SerializerMethodField()
user_vote = serializers.SerializerMethodField()
reply_count = serializers.IntegerField(read_only=True, default=0)
class Meta:
model = Post
fields = ['id', 'content', 'created_at', 'updated_at', 'author', 'hub', 'reply_to', 'tags', 'contents']
fields = [
'id', 'content', 'created_at', 'updated_at',
'author', 'author_detail',
'hub', 'reply_to',
'tags', 'contents',
'vote_score', 'user_vote', 'reply_count',
]
read_only_fields = ['author', 'created_at', 'updated_at']
def get_vote_score(self, obj):
return sum(v.vote for v in obj.votes.all())
def get_user_vote(self, obj):
request = self.context.get('request')
if not request or not request.user.is_authenticated:
return 0
vote = obj.votes.filter(user=request.user).first()
return vote.vote if vote else 0
class PostVoteSerializer(serializers.ModelSerializer):
class Meta: