chat implemented, testing needed

This commit is contained in:
2026-05-20 00:52:56 +02:00
parent c7de2dbcdc
commit d52af2c495
14 changed files with 144 additions and 17 deletions

View File

@@ -1,5 +1,6 @@
from rest_framework import serializers
from .models import Chat, Message, MessageFile, MessageHistory, MessageReaction
from drf_spectacular.utils import extend_schema_field
from .models import Chat, ChatReadStatus, Message, MessageFile, MessageHistory, MessageReaction
class MessageFileSerializer(serializers.ModelSerializer):
@@ -60,14 +61,28 @@ class MessageSendSerializer(serializers.Serializer):
class ChatSerializer(serializers.ModelSerializer):
unread_count = serializers.SerializerMethodField(read_only=True)
@extend_schema_field(serializers.IntegerField())
def get_unread_count(self, obj):
request = self.context.get('request')
if not request or not request.user.is_authenticated:
return 0
last_read = ChatReadStatus.objects.filter(
user=request.user, chat=obj
).values_list('last_read_at', flat=True).first()
if last_read is None:
return obj.messages.filter(is_deleted=False).count()
return obj.messages.filter(created_at__gt=last_read, is_deleted=False).count()
class Meta:
model = Chat
fields = [
'id', 'chat_type', 'owner', 'name',
'icon', 'banner', 'members', 'moderators',
'hub', 'created_at', 'updated_at',
'hub', 'created_at', 'updated_at', 'unread_count',
]
read_only_fields = ['owner', 'created_at', 'updated_at']
read_only_fields = ['owner', 'created_at', 'updated_at', 'unread_count']
class ChatMemberSerializer(serializers.Serializer):