From a7e980301845c88a725d4204557730b8f7e61884 Mon Sep 17 00:00:00 2001 From: Michael Bauer <michael-bauer@posteo.de> Date: Thu, 13 Jun 2024 19:53:20 +0200 Subject: [PATCH] Fix AbsencesForPersonsCreateMutation id -> pk datetime.now needs timezone get_or_create instead of just create -> could be called several times ParticipationStatus is a CalendarEvent -> more args --- aleksis/apps/alsijil/schema/absences.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/aleksis/apps/alsijil/schema/absences.py b/aleksis/apps/alsijil/schema/absences.py index 57a39bcff..5a4561a20 100644 --- a/aleksis/apps/alsijil/schema/absences.py +++ b/aleksis/apps/alsijil/schema/absences.py @@ -39,9 +39,9 @@ class AbsencesForPersonsCreateMutation(graphene.Mutation): # Create doc for dummies that are already in the past future = False for dummy in dummies: - lesson_event, dummy_start, dummy_end = Documentation.parse_dummy(dummy.id) + lesson_event, dummy_start, dummy_end = Documentation.parse_dummy(dummy.pk) - if dummy_start < datetime.now(): + if dummy_start < datetime.now(dummy_start.tzinfo): # In the past -> Create a Documentation docs.append( Documentation.create_from_lesson_event( @@ -57,19 +57,22 @@ class AbsencesForPersonsCreateMutation(graphene.Mutation): # Create a ParticipationStatus for each documentation for doc in docs: # Set person & absence_reason directly from id - ParticipationStatus.objects.create( + ParticipationStatus.objects.get_or_create( person_id=person, related_documentation=doc, absence_reason_id=reason, + datetime_start=doc.datetime_start, + datetime_end=doc.datetime_end, + timezone=doc.timezone, ) # If there are still dummy documentations in the future # create a Kolego Absence if future: # TODO: Are date_start & date_end from CalendarEvent enough - # or more needed? + # or is time needed? # Set reason & person directly from id - Absence.objects.create( + Absence.objects.get_or_create( date_start=datetime.now().date(), date_end=end, reason_id=reason, -- GitLab