Skip to content
Snippets Groups Projects
Commit 2d2b0245 authored by Ernesto Rico Schmidt's avatar Ernesto Rico Schmidt
Browse files

Fix query to get timeslots in time rage, add type annotations

parent 61543621
No related branches found
No related tags found
No related merge requests found
...@@ -28,7 +28,7 @@ from versatileimagefield.fields import PPOIField, VersatileImageField ...@@ -28,7 +28,7 @@ from versatileimagefield.fields import PPOIField, VersatileImageField
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.db import models from django.db import models
from django.db.models import Q from django.db.models import Q, QuerySet
from django.forms.models import model_to_dict from django.forms.models import model_to_dict
from django.utils import timezone from django.utils import timezone
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
...@@ -1062,11 +1062,17 @@ class TimeSlotManager(models.Manager): ...@@ -1062,11 +1062,17 @@ class TimeSlotManager(models.Manager):
) )
@staticmethod @staticmethod
def get_timerange_timeslots(start: datetime, end: datetime): def get_timerange_timeslots(start_timerange: datetime, end_timerange: datetime) -> QuerySet:
"""get the timeslots in the timerange between start and end""" """get the timeslots between start_timerange and end_timerange"""
return TimeSlot.objects.filter( return TimeSlot.objects.filter(
Q(start__lte=start, end__gte=start) | Q(start__gt=start, start__lt=end) # start before start_timerange, end after start_timerange
).exclude(end=start) Q(start__lt=start_timerange, end__gt=start_timerange)
# start after/at start_timerange, end before/at end_timerange
| Q(start__gte=start_timerange, end__lte=end_timerange)
# start before end_timerange, end after/at end_timerange
| Q(start__lt=end_timerange, end__gte=end_timerange)
)
@staticmethod @staticmethod
def get_colliding_timeslots(timeslot): def get_colliding_timeslots(timeslot):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment