agendas: simplify get_open_events method (#62635)
This commit is contained in:
parent
d6cf33068b
commit
7769ffabf6
|
@ -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):
|
||||
|
|
|
@ -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 = [
|
||||
|
|
Loading…
Reference in New Issue