From b5580aaf590fce9628ae1bea5d16725df998f9ab Mon Sep 17 00:00:00 2001
From: Julian Leucker <leuckerj@gmail.com>
Date: Wed, 7 Aug 2024 09:19:43 +0200
Subject: [PATCH] Make absence creation endpoint accept datetimes instead of
 dates

---
 .../coursebook/absences/absenceCreation.graphql     |  6 +++---
 aleksis/apps/alsijil/schema/__init__.py             |  8 ++++----
 aleksis/apps/alsijil/schema/absences.py             | 13 +++++++------
 3 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/absenceCreation.graphql b/aleksis/apps/alsijil/frontend/components/coursebook/absences/absenceCreation.graphql
index 21ce30d0b..5a520453f 100644
--- a/aleksis/apps/alsijil/frontend/components/coursebook/absences/absenceCreation.graphql
+++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/absenceCreation.graphql
@@ -6,7 +6,7 @@ query persons {
   }
 }
 
-query lessonsForPersons($persons: [ID]!, $start: Date!, $end: Date!) {
+query lessonsForPersons($persons: [ID]!, $start: DateTime!, $end: DateTime!) {
   items: lessonsForPersons(persons: $persons, start: $start, end: $end) {
     id
     lessons {
@@ -31,8 +31,8 @@ query lessonsForPersons($persons: [ID]!, $start: Date!, $end: Date!) {
 # Use absencesInputType?
 mutation createAbsencesForPersons(
   $persons: [ID]!
-  $start: Date!
-  $end: Date!
+  $start: DateTime!
+  $end: DateTime!
   $comment: String
   $reason: ID!
 ) {
diff --git a/aleksis/apps/alsijil/schema/__init__.py b/aleksis/apps/alsijil/schema/__init__.py
index f63b8c2c9..ab87c4306 100644
--- a/aleksis/apps/alsijil/schema/__init__.py
+++ b/aleksis/apps/alsijil/schema/__init__.py
@@ -63,8 +63,8 @@ class Query(graphene.ObjectType):
     lessons_for_persons = graphene.List(
         LessonsForPersonType,
         persons=graphene.List(graphene.ID, required=True),
-        start=graphene.Date(required=True),
-        end=graphene.Date(required=True),
+        start=graphene.DateTime(required=True),
+        end=graphene.DateTime(required=True),
     )
 
     extra_marks = FilterOrderList(ExtraMarkType)
@@ -213,8 +213,8 @@ class Query(graphene.ObjectType):
         for person in persons:
             docs, dummies = Documentation.get_documentations_for_person(
                 person,
-                datetime.combine(start, datetime.min.time()),
-                datetime.combine(end, datetime.max.time()),
+                start,
+                end,
             )
 
             lessons_for_person.append(LessonsForPersonType(id=person, lessons=docs + dummies))
diff --git a/aleksis/apps/alsijil/schema/absences.py b/aleksis/apps/alsijil/schema/absences.py
index d05ac5521..dcfe1427e 100644
--- a/aleksis/apps/alsijil/schema/absences.py
+++ b/aleksis/apps/alsijil/schema/absences.py
@@ -14,8 +14,8 @@ from .participation_status import ParticipationStatusType
 class AbsencesForPersonsCreateMutation(graphene.Mutation):
     class Arguments:
         persons = graphene.List(graphene.ID, required=True)
-        start = graphene.Date(required=True)
-        end = graphene.Date(required=True)
+        start = graphene.DateTime(required=True)
+        end = graphene.DateTime(required=True)
         comment = graphene.String(required=False)
         reason = graphene.ID(required=True)
 
@@ -31,17 +31,18 @@ class AbsencesForPersonsCreateMutation(graphene.Mutation):
         for person in persons:
             if not info.context.user.has_perm("alsijil.register_absence_rule", person):
                 raise PermissionDenied()
+            # TODO: fix timeframe
             kolego_absence, __ = Absence.objects.get_or_create(
-                date_start=start,
-                date_end=end,
+                datetime_start=start,
+                datetime_end=end,
                 reason_id=reason,
                 person=person,
                 defaults={"comment": comment},
             )
 
             events = ParticipationStatus.get_single_events(
-                datetime.combine(start, datetime.min.time()),
-                datetime.combine(end, datetime.max.time()),
+                start,
+                end,
                 None,
                 {"person": person},
                 with_reference_object=True,
-- 
GitLab