Browse Source

add event api

subDesTagesMitExtraKaese 2 years ago
parent
commit
860c96b363
2 changed files with 22 additions and 0 deletions
  1. 1 0
      zitap/urls.py
  2. 21 0
      zitap/views.py

+ 1 - 0
zitap/urls.py

@@ -10,6 +10,7 @@ urlpatterns = [
     path('<str:url>/login', views.login, name='login'),
     path('<str:url>/logout', views.logout, name='logout'),
     path('<str:url>/update-slots', views.update_slots, name='update-slots'),
+    path('<str:url>/event', views.event_api, name='event-api'),
     path('<str:url>/slots', views.slots_api, name='slots-api'),
     path('<str:url>', views.event, name='event'),
 ]

+ 21 - 0
zitap/views.py

@@ -1,4 +1,5 @@
 import datetime
+import json
 from django.db import IntegrityError
 from django.http import HttpResponseNotFound, HttpResponseRedirect, JsonResponse, HttpResponseNotAllowed
 from django.shortcuts import render
@@ -127,6 +128,26 @@ def update_slots(request, url):
         participant.save()
         return HttpResponseRedirect(f'/{event.url}')
 
+def event_api(request, url):
+    """
+    REST JSON API for an event
+    """
+    try:
+        event = Event.objects.get(url=url)
+    except Event.DoesNotExist:
+        return JsonResponse({'error': 'Event not found'}, status=404)
+    if request.method == 'GET':
+        return JsonResponse({
+            'name': event.name,
+            'url': event.url,
+            'start_time': event.start_time.strftime('%H:%M'),
+            'end_time': event.end_time.strftime('%H:%M'),
+            'slot_interval': event.slot_interval.seconds // 60,
+            'dates': [date.date.strftime('%Y-%m-%d') for date in event.date_set.all()],
+        })
+    else:
+        return HttpResponseNotAllowed(['GET'])
+
 @csrf_exempt
 def slots_api(request, url):
     """