Skip to content
Snippets Groups Projects
Commit dd632b2b authored by Julian's avatar Julian
Browse files

Update logic for checking for pre-existing absences

parent 47edcb1a
No related branches found
No related tags found
1 merge request!392Resolve "Absence creation form should support datetimes"
Pipeline #192362 failed
......@@ -2,6 +2,7 @@ import datetime
from typing import List
from django.core.exceptions import PermissionDenied
from django.db.models import Q
import graphene
......@@ -41,15 +42,27 @@ 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(
datetime_start=start,
datetime_end=end,
# Check if there is an existing absence with overlapping datetime
absences = Absence.objects.filter(
Q(datetime_start__lte=start) | Q(date_start__lte=start.date()),
Q(datetime_end__gte=end) | Q(date_end__gte=end.date()),
reason_id=reason,
person=person,
defaults={"comment": comment},
)
if len(absences) > 0:
kolego_absence = absences.first()
else:
# Check for same times and create otherwise
kolego_absence, __ = Absence.objects.get_or_create(
datetime_start=start,
datetime_end=end,
reason_id=reason,
person=person,
defaults={"comment": comment},
)
events = ParticipationStatus.get_single_events(
start,
end,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment