subDesTagesMitExtraKaese 2 роки тому
батько
коміт
8755632981
1 змінених файлів з 21 додано та 15 видалено
  1. 21 15
      zitap/views.py

+ 21 - 15
zitap/views.py

@@ -1,4 +1,5 @@
 import random
 import random
+import datetime
 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
@@ -24,7 +25,12 @@ def create_event(request):
             n = 0
             n = 0
             while n<10:
             while n<10:
                 try:
                 try:
-                    event = Event.objects.create(name=data['event_name'])
+                    event = Event.objects.create(
+                        name=data['event_name'], 
+                        start_time=datetime.time(int(data['start_time']), 0), 
+                        end_time=datetime.time(int(data['end_time']), 0),
+                        slot_interval=datetime.timedelta(minutes=int(data['slot_interval'])),
+                    )
                     for date in data['event_date']:
                     for date in data['event_date']:
                         event.date_set.create(date=date)
                         event.date_set.create(date=date)
                     event.save()
                     event.save()
@@ -43,17 +49,17 @@ def event(request, url):
         return render(request, 'zitap/event-not-found.html')
         return render(request, 'zitap/event-not-found.html')
     
     
     # Check if the user is logged in
     # Check if the user is logged in
-    if 'participant_id' in request.session:
-        participant = Participant.objects.get(id=request.session['participant_id'])
+    if 'user_id' in request.session:
+        participant = Participant.objects.get(user_id=request.session['user_id'], event=event)
         login_form = None
         login_form = None
-        update_form = UpdateSlotsForm(initial={'slots': participant.slots})
+        update_form = UpdateSlotsForm(initial={'slots': slots2string(participant, get_slot_count(event))}, participant=participant)
     else:
     else:
         login_form = LoginForm()
         login_form = LoginForm()
         update_form = None
         update_form = None
     return render(
     return render(
         request, 
         request, 
         'zitap/event.html', 
         'zitap/event.html', 
-        {'event': event, 'grid': slots2grid(event), 'login_form': login_form, 'update_form': update_form}
+        {'event': event, 'grid': slots2grid(event, event.participant_set.all()), 'login_form': login_form, 'update_form': update_form}
     )
     )
 
 
 def login(request, url):
 def login(request, url):
@@ -77,14 +83,14 @@ def login(request, url):
                 return render(
                 return render(
                     request, 
                     request, 
                     'zitap/event.html', 
                     'zitap/event.html', 
-                    {'event': event, 'grid': slots2grid(event), 'login_form': form, 'update_form': None}
+                    {'event': event, 'grid': slots2grid(event, event.participant_set.all()), 'login_form': form, 'update_form': None}
                 )
                 )
 
 
         auth_login(request, user)
         auth_login(request, user)
         participant, created = Participant.objects.get_or_create(event=event, user=user)
         participant, created = Participant.objects.get_or_create(event=event, user=user)
-        participant.slots = random.getrandbits(get_slot_count(event)).to_bytes(get_slot_count(event) // 8, 'big')
+        participant.slots = random.getrandbits(get_slot_count(event)).to_bytes((get_slot_count(event)+7) // 8, 'big')
         participant.save()
         participant.save()
-        request.session['participant_id'] = participant.id
+        request.session['user_id'] = user.id
         return HttpResponseRedirect(f'/{event.url}')
         return HttpResponseRedirect(f'/{event.url}')
 
 
 def logout(request, url):
 def logout(request, url):
@@ -93,8 +99,8 @@ def logout(request, url):
     except Event.DoesNotExist:
     except Event.DoesNotExist:
         return render(request, 'zitap/event-not-found.html')
         return render(request, 'zitap/event-not-found.html')
 
 
-    if 'participant_id' in request.session:
-        del request.session['participant_id']
+    if 'user_id' in request.session:
+        del request.session['user_id']
     return HttpResponseRedirect(f'/{event.url}')
     return HttpResponseRedirect(f'/{event.url}')
 
 
 def update_slots(request, url):
 def update_slots(request, url):
@@ -106,10 +112,10 @@ def update_slots(request, url):
     if request.method != 'POST':
     if request.method != 'POST':
         return HttpResponseNotAllowed(['POST'])
         return HttpResponseNotAllowed(['POST'])
 
 
-    form = UpdateSlotsForm(request.POST)
+    participant = Participant.objects.get(user_id=request.session['user_id'], event=event)
+    form = UpdateSlotsForm(request.POST, participant=participant)
     if form.is_valid():
     if form.is_valid():
         data = form.cleaned_data
         data = form.cleaned_data
-        participant = Participant.objects.get(id=request.session['participant_id'])
         participant.slots = string2slots(data['slots'], get_slot_count(event))
         participant.slots = string2slots(data['slots'], get_slot_count(event))
         participant.save()
         participant.save()
         return HttpResponseRedirect(f'/{event.url}')
         return HttpResponseRedirect(f'/{event.url}')
@@ -125,9 +131,9 @@ def slots_api(request, url):
         slot_count = get_slot_count(event)
         slot_count = get_slot_count(event)
 
 
         # Check if the user is logged in and wants to update their slots
         # Check if the user is logged in and wants to update their slots
-        if 'participant_id' in request.session and request.method == 'POST':
-            participant = Participant.objects.get(id=request.session['participant_id'])
-            form = UpdateSlotsForm(request.POST)
+        if 'user_id' in request.session and request.method == 'POST':
+            participant = Participant.objects.get(user_id=request.session['user_id'], event=event)
+            form = UpdateSlotsForm(request.POST, participant=participant)
             if form.is_valid():
             if form.is_valid():
                 data = form.cleaned_data
                 data = form.cleaned_data
                 participant.slots = string2slots(data['slots'], slot_count)
                 participant.slots = string2slots(data['slots'], slot_count)