Explorar o código

add event api

subDesTagesMitExtraKaese %!s(int64=2) %!d(string=hai) anos
pai
achega
860c96b363
Modificáronse 2 ficheiros con 22 adicións e 0 borrados
  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>/login', views.login, name='login'),
     path('<str:url>/logout', views.logout, name='logout'),
     path('<str:url>/logout', views.logout, name='logout'),
     path('<str:url>/update-slots', views.update_slots, name='update-slots'),
     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>/slots', views.slots_api, name='slots-api'),
     path('<str:url>', views.event, name='event'),
     path('<str:url>', views.event, name='event'),
 ]
 ]

+ 21 - 0
zitap/views.py

@@ -1,4 +1,5 @@
 import datetime
 import datetime
+import json
 from django.db import IntegrityError
 from django.db import IntegrityError
 from django.http import HttpResponseNotFound, HttpResponseRedirect, JsonResponse, HttpResponseNotAllowed
 from django.http import HttpResponseNotFound, HttpResponseRedirect, JsonResponse, HttpResponseNotAllowed
 from django.shortcuts import render
 from django.shortcuts import render
@@ -127,6 +128,26 @@ def update_slots(request, url):
         participant.save()
         participant.save()
         return HttpResponseRedirect(f'/{event.url}')
         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
 @csrf_exempt
 def slots_api(request, url):
 def slots_api(request, url):
     """
     """