feat: ADRF async views (phase1) + native async serializers (phase2) + async cache infra
This commit is contained in:
@@ -1,29 +1,29 @@
|
||||
from rest_framework import serializers
|
||||
from adrf.serializers import ModelSerializer
|
||||
from django.utils import timezone
|
||||
from datetime import timedelta
|
||||
from .models import BrowsingHistory
|
||||
|
||||
|
||||
class BrowsingHistorySerializer(serializers.ModelSerializer):
|
||||
class BrowsingHistorySerializer(ModelSerializer):
|
||||
class Meta:
|
||||
model = BrowsingHistory
|
||||
fields = ['id', 'type', 'title', 'description', 'image', 'category', 'link', 'viewed_at']
|
||||
read_only_fields = ['viewed_at']
|
||||
|
||||
|
||||
class BrowsingHistoryCreateSerializer(serializers.ModelSerializer):
|
||||
class BrowsingHistoryCreateSerializer(ModelSerializer):
|
||||
class Meta:
|
||||
model = BrowsingHistory
|
||||
fields = ['type', 'title', 'description', 'image', 'category', 'link']
|
||||
|
||||
def create(self, validated_data):
|
||||
async def acreate(self, validated_data):
|
||||
user = self.context['request'].user
|
||||
link = validated_data.get('link', '')
|
||||
today = timezone.now().date()
|
||||
existing = BrowsingHistory.objects.filter(
|
||||
existing = await BrowsingHistory.objects.filter(
|
||||
user=user, link=link, viewed_at__date=today
|
||||
).first()
|
||||
).afirst()
|
||||
if existing:
|
||||
existing.save()
|
||||
await existing.asave()
|
||||
return existing
|
||||
return BrowsingHistory.objects.create(user=user, **validated_data)
|
||||
return await BrowsingHistory.objects.acreate(user=user, **validated_data)
|
||||
|
||||
Reference in New Issue
Block a user