From d370d60eefb67fd89af72d645f28547a39c9fb65 Mon Sep 17 00:00:00 2001
From: Grollicus <cccvgitlab.db5c7b60@grollmann.eu>
Date: Thu, 17 Aug 2023 13:53:39 +0200
Subject: [PATCH] don't show events without schedule_end set, as they will
 crash the template anyways

---
 src/plainui/views.py | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/plainui/views.py b/src/plainui/views.py
index 54750c3ea..e82a2ac4c 100644
--- a/src/plainui/views.py
+++ b/src/plainui/views.py
@@ -251,7 +251,7 @@ class TagView(ConferenceRequiredMixin, TemplateView):
         # TODO other types. What should we link here?
         context['events'] = Event.objects.conference_accessible(self.conf).filter(
             id__in=TagItem.objects.filter(tag=tag, target_type=ContentType.objects.get_for_model(Event)).values_list('target_id')
-        )
+        ).filter(schedule_start__isnull=False, schedule_end__isnull=False)
         context['my_favorite_events'] = _session_get_favorite_events(self.request.session, self.request.user)
         context['my_scheduled_events'] = _session_get_scheduled_events(self.request.session, self.request.user)
 
@@ -766,11 +766,11 @@ class ProfileView(ConferenceRequiredMixin, UpdateView):
         context['badges'] = UserBadge.objects.filter(user=user, accepted_by_user=True).select_related('badge')
         context['amount_badges_not_accepted'] = len(UserBadge.objects.filter(user=user, accepted_by_user=False).select_related('badge'))
         context['is_favorite_events'] = favorite_events = _session_get_favorite_events(self.request.session, self.request.user)
-        context['my_favorite_events'] = Event.objects.conference_accessible(conference=self.conf).filter(pk__in=favorite_events)
+        context['my_favorite_events'] = Event.objects.conference_accessible(conference=self.conf).filter(pk__in=favorite_events).filter(schedule_start__isnull=False, schedule_end__isnull=False)
         context['is_favorite_assemblies'] = favorite_assemblies = _session_get_favorite_assemblies(self.request.session, self.request.user)
         context['my_favorite_assemblies'] = Assembly.objects.conference_accessible(conference=self.conf).filter(pk__in=favorite_assemblies)
         context['is_fahrplan_events'] = scheduled_events = _session_get_scheduled_events(self.request.session, self.request.user)
-        context['my_fahrplan_events'] = Event.objects.conference_accessible(conference=self.conf).filter(pk__in=scheduled_events)
+        context['my_fahrplan_events'] = Event.objects.conference_accessible(conference=self.conf).filter(pk__in=scheduled_events).filter(schedule_start__isnull=False, schedule_end__isnull=False)
         context['dereferrer_allowlist'] = UserDereferrerAllowlist.objects.filter(user=self.request.user)
         context['redeem_badge_form'] = RedeemBadgeForm
         return context
@@ -2087,7 +2087,7 @@ class ChannelEventsView(ConferenceRequiredMixin, TemplateView):
             current_events[event.room_id] = event
 
         next_events_qs = Event.objects.conference_accessible(self.conf)\
-            .filter(room_id__in=room_ids, schedule_start__gt=now).order_by('room_id', 'schedule_start').distinct('room_id')
+            .filter(room_id__in=room_ids, schedule_start__gt=now, schedule_end__isnull=False).order_by('room_id', 'schedule_start').distinct('room_id')
         speakers = EventParticipant.objects.filter(is_public=True, role=EventParticipant.Role.SPEAKER).order_by('participant__username')
         speakers = speakers.annotate(speaker_name=F('participant__username'))
         next_events_qs = next_events_qs.prefetch_related(
-- 
GitLab