diff options
author | Mark Powers <mark@marks.kitchen> | 2024-07-14 15:30:27 -0500 |
---|---|---|
committer | Mark Powers <mark@marks.kitchen> | 2024-07-14 15:30:27 -0500 |
commit | ad232020d57d2c77dfd5400dc4a8290b484c8ba2 (patch) | |
tree | 3e2121666986c67fe554a1e9046682b7370d412e /journal/api/views.py |
Initial commitmain
Diffstat (limited to 'journal/api/views.py')
-rw-r--r-- | journal/api/views.py | 41 |
1 files changed, 41 insertions, 0 deletions
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"] |