Skip to content
Snippets Groups Projects
Commit e975f7bf authored by Roang's avatar Roang
Browse files

Add event list annotations

- Add upcoming annotation to events
parent ed25a079
No related branches found
No related tags found
No related merge requests found
...@@ -6,7 +6,8 @@ from django.conf import settings ...@@ -6,7 +6,8 @@ from django.conf import settings
from django.contrib import messages from django.contrib import messages
from django.contrib.auth import mixins as auth_mixins from django.contrib.auth import mixins as auth_mixins
from django.core.exceptions import ImproperlyConfigured, ValidationError from django.core.exceptions import ImproperlyConfigured, ValidationError
from django.db.models import F, Prefetch, Q from django.db.models import Case, F, Prefetch, Q, When
from django.forms import BooleanField
from django.http import HttpResponse from django.http import HttpResponse
from django.shortcuts import redirect from django.shortcuts import redirect
from django.urls import reverse from django.urls import reverse
...@@ -215,9 +216,16 @@ def event_filter( ...@@ -215,9 +216,16 @@ def event_filter(
events = Event.objects.conference_accessible(conf) events = Event.objects.conference_accessible(conf)
events = events.filter(schedule_start__isnull=False, schedule_end__isnull=False) events = events.filter(schedule_start__isnull=False, schedule_end__isnull=False)
if upcoming:
now = timezone.now() now = timezone.now()
events = events.filter(Q(schedule_start__lt=now, schedule_end__gte=now) | Q(schedule_start__gte=now, schedule_start__lt=now + UPCOMING_WINDOW)) events = events.annotate(
upcoming=Case(
When(Q(schedule_start__lt=now, schedule_end__gte=now) | Q(schedule_start__gte=now, schedule_start__lt=now + UPCOMING_WINDOW)),
default=False,
output_field=BooleanField(),
)
)
if upcoming:
events = events.filter(upcoming=True)
if calendar_mode: if calendar_mode:
events = events.filter(room__isnull=False) events = events.filter(room__isnull=False)
res = events.filter(schedule_duration__isnull=False, **filters).order_by('schedule_start', 'schedule_end') res = events.filter(schedule_duration__isnull=False, **filters).order_by('schedule_start', 'schedule_end')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment