summaryrefslogtreecommitdiff
path: root/journal/api/views.py
diff options
context:
space:
mode:
authorMark Powers <mark@marks.kitchen>2024-07-14 15:30:27 -0500
committerMark Powers <mark@marks.kitchen>2024-07-14 15:30:27 -0500
commitad232020d57d2c77dfd5400dc4a8290b484c8ba2 (patch)
tree3e2121666986c67fe554a1e9046682b7370d412e /journal/api/views.py
Initial commitmain
Diffstat (limited to 'journal/api/views.py')
-rw-r--r--journal/api/views.py41
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"]