diff --git a/src/plainui/jinja2/plainui/components/list_events.html b/src/plainui/jinja2/plainui/components/list_events.html
index 6c09a54fa75a337c91ecb05cbca9dadfc2a8fdee..4720be0b7b3a0785896ab3d231f9e153cc44bd9f 100644
--- a/src/plainui/jinja2/plainui/components/list_events.html
+++ b/src/plainui/jinja2/plainui/components/list_events.html
@@ -11,7 +11,7 @@
     {% if events %}
         <ul class="list-unstyled d-flex flex-column gap-3 mb-0">
         {# using a list here to be able to set a value in the nested block #}
-        {% set first_now_done = [] %}
+        {% set ns = namespace(first_now_done=false) %}
 
         {% for event in events %}
             {% if event.schedule_end < now %}
@@ -28,11 +28,11 @@
                   scheduled=true if event.id | safe in my_scheduled_events,
                   first=loop.first,
                   event_when=event_when,
-                  first_now=true if event_when == 'now' and not first_now_done[0]
+                  first_now=true if event_when == 'now' and not ns.first_now_done
             ) }}
 
-            {% if when == 'now' and not first_now_done[0] %}
-              {% set ignore = first_now_done.append(True) %}
+            {% if event_when == 'now' %}
+              {% set ns.first_now_done = true %}
             {% endif %}
         {% endfor %}
         </ul>
diff --git a/src/plainui/views.py b/src/plainui/views.py
index c794cc9a2b1eb4c5ae915a50c335f8cc42f5693e..3e9a6b5463ef10465028bf983bdb2b10964c6d1c 100644
--- a/src/plainui/views.py
+++ b/src/plainui/views.py
@@ -1746,6 +1746,7 @@ def _event_filter(
         filters['room__is_public_fahrplan'] = public_fahrplan
 
     events = Event.objects.conference_accessible(conf)
+    events = events.filter(schedule_start__isnull=False, schedule_end__isnull=False)
     if upcoming:
         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))