You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
922 B
23 lines
922 B
from rest_framework import viewsets
|
|
from .models import AdEvaluation
|
|
from .serializers import AdEvaluationSerializer
|
|
|
|
class AdEvaluationViewSet(viewsets.ReadOnlyModelViewSet):
|
|
"""
|
|
ViewSet for listing and viewing Ad Evaluations.
|
|
Supports filtering by crawl_task (UUID) and is_flagged (boolean).
|
|
"""
|
|
serializer_class = AdEvaluationSerializer
|
|
|
|
def get_queryset(self):
|
|
queryset = AdEvaluation.objects.all().select_related('ad', 'crawl_task').order_by('-evaluated_at')
|
|
crawl_task_id = self.request.query_params.get('crawl_task')
|
|
is_flagged = self.request.query_params.get('is_flagged')
|
|
|
|
if crawl_task_id:
|
|
queryset = queryset.filter(crawl_task_id=crawl_task_id)
|
|
if is_flagged is not None:
|
|
is_flagged_bool = is_flagged.lower() in ('true', '1', 't')
|
|
queryset = queryset.filter(is_flagged=is_flagged_bool)
|
|
|
|
return queryset
|