from adrf.serializers import ModelSerializer from django.utils import timezone from datetime import timedelta from .models import BrowsingHistory class BrowsingHistorySerializer(ModelSerializer): class Meta: model = BrowsingHistory fields = ['id', 'type', 'title', 'description', 'image', 'category', 'link', 'viewed_at'] read_only_fields = ['viewed_at'] class BrowsingHistoryCreateSerializer(ModelSerializer): class Meta: model = BrowsingHistory fields = ['type', 'title', 'description', 'image', 'category', 'link'] async def acreate(self, validated_data): user = self.context['request'].user link = validated_data.get('link', '') today = timezone.now().date() existing = await BrowsingHistory.objects.filter( user=user, link=link, viewed_at__date=today ).afirst() if existing: await existing.asave() return existing return await BrowsingHistory.objects.acreate(user=user, **validated_data)