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 ...@@ -2,6 +2,7 @@ import datetime
from typing import List from typing import List
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied
from django.db.models import Q
import graphene import graphene
...@@ -41,15 +42,27 @@ class AbsencesForPersonsCreateMutation(graphene.Mutation): ...@@ -41,15 +42,27 @@ class AbsencesForPersonsCreateMutation(graphene.Mutation):
for person in persons: for person in persons:
if not info.context.user.has_perm("alsijil.register_absence_rule", person): if not info.context.user.has_perm("alsijil.register_absence_rule", person):
raise PermissionDenied() raise PermissionDenied()
# TODO: fix timeframe
kolego_absence, __ = Absence.objects.get_or_create( # Check if there is an existing absence with overlapping datetime
datetime_start=start, absences = Absence.objects.filter(
datetime_end=end, 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, reason_id=reason,
person=person, 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( events = ParticipationStatus.get_single_events(
start, start,
end, 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