From ad232020d57d2c77dfd5400dc4a8290b484c8ba2 Mon Sep 17 00:00:00 2001 From: Mark Powers Date: Sun, 14 Jul 2024 15:30:27 -0500 Subject: Initial commit --- journal/api/views.py | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 journal/api/views.py (limited to 'journal/api/views.py') diff --git a/journal/api/views.py b/journal/api/views.py new file mode 100644 index 0000000..a88e560 --- /dev/null +++ b/journal/api/views.py @@ -0,0 +1,41 @@ +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"] -- cgit v1.2.3