30 lines
1.0 KiB
Python
30 lines
1.0 KiB
Python
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)
|