agendas: simplify get_open_events method (#62635)

This commit is contained in:
Valentin Deniaud 2022-03-16 15:16:08 +01:00
parent d6cf33068b
commit 7769ffabf6
2 changed files with 5 additions and 17 deletions

View File

@ -694,10 +694,8 @@ class Agenda(models.Model):
def get_open_events(
self,
prefetched_queryset=False,
include_full=True,
min_start=None,
max_start=None,
user_external_id=None,
bypass_delays=False,
show_out_of_minimal_delay=False,
show_only_subscribed=False,
@ -719,8 +717,6 @@ class Agenda(models.Model):
entries = entries.filter(
Q(publication_datetime__isnull=True) | Q(publication_datetime__lte=now())
)
if not include_full:
entries = entries.filter(Q(full=False) | Q(primary_event__isnull=False))
if not bypass_delays and not show_out_of_minimal_delay and self.minimal_booking_delay:
min_start = max(self.min_booking_datetime, min_start) if min_start else self.min_booking_datetime
@ -740,9 +736,6 @@ class Agenda(models.Model):
else:
entries = entries.filter(start_datetime__lt=max_start)
if user_external_id and not prefetched_queryset:
entries = Event.annotate_queryset_for_user(entries, user_external_id)
return entries
def get_past_events(
@ -750,7 +743,6 @@ class Agenda(models.Model):
prefetched_queryset=False,
min_start=None,
max_start=None,
user_external_id=None,
show_only_subscribed=False,
):
assert self.kind == 'events'
@ -773,9 +765,6 @@ class Agenda(models.Model):
if max_start and not prefetched_queryset:
entries = entries.filter(start_datetime__lt=max_start)
if user_external_id:
entries = Event.annotate_queryset_for_user(entries, user_external_id)
return entries
def get_open_recurring_events(self):

View File

@ -374,7 +374,7 @@ def get_agenda_detail(request, agenda, check_events=False):
)
}
if check_events:
agenda_detail['opened_events_available'] = bool(agenda.get_open_events(include_full=False))
agenda_detail['opened_events_available'] = bool(agenda.get_open_events().filter(full=False))
if agenda.absence_reasons_group:
agenda_detail['absence_reasons'] = [
{'id': r.slug, 'slug': r.slug, 'text': r.label, 'label': r.label}
@ -789,20 +789,19 @@ class Datetimes(APIView):
book_past = bookable_events in ['all', 'past']
book_future = bookable_events in ['all', 'future']
entries = []
entries = Event.objects.none()
if book_past:
entries += agenda.get_past_events(
entries |= agenda.get_past_events(
min_start=payload.get('date_start'),
max_start=payload.get('date_end'),
user_external_id=user_external_id,
)
if book_future:
entries += agenda.get_open_events(
entries |= agenda.get_open_events(
min_start=payload.get('date_start'),
max_start=payload.get('date_end'),
user_external_id=user_external_id,
bypass_delays=payload.get('bypass_delays'),
)
entries = Event.annotate_queryset_for_user(entries, user_external_id)
if payload['hide_disabled']:
entries = [