from rest_framework import viewsets from rest_framework import filters import datetime from . import serializers from . import models class CustomDateFilterBackend(filters.BaseFilterBackend): def filter_queryset(self, request, queryset, view): if "today" in request.query_params: today = datetime.date.today() queryset = queryset.filter(created__month=today.month, created__day=today.day) day = request.query_params.get("day") if day: try: queryset = queryset.filter(created__day=day) except ValueError: pass month = request.query_params.get("month") if month: try: queryset = queryset.filter(created__month=month) except ValueError: pass year = request.query_params.get("year") if year: try: queryset = queryset.filter(created__year=year) except ValueError: pass return queryset class EntrySerializer(viewsets.ReadOnlyModelViewSet): queryset = models.Entry.objects.all() serializer_class = serializers.EntrySerializer filter_backends = [ CustomDateFilterBackend, filters.OrderingFilter, filters.SearchFilter] search_fields = ["html_text"] ordering_fields = ["created"]