From f409f8dd593f95298850671893d2164e0a6862c0 Mon Sep 17 00:00:00 2001
From: Grollicus <cccvgitlab.db5c7b60@grollmann.eu>
Date: Sat, 26 Dec 2020 14:23:21 +0100
Subject: [PATCH] is_public_fahrplan flag

---
 src/core/admin.py                              |  2 +-
 src/core/locale/de/LC_MESSAGES/django.po       |  6 ++++++
 src/core/locale/en/LC_MESSAGES/django.po       |  6 ++++++
 .../migrations/0050_Room_is_public_fahrplan.py | 18 ++++++++++++++++++
 src/core/models/rooms.py                       |  2 ++
 src/plainui/views.py                           |  6 ++++--
 6 files changed, 37 insertions(+), 3 deletions(-)
 create mode 100644 src/core/migrations/0050_Room_is_public_fahrplan.py

diff --git a/src/core/admin.py b/src/core/admin.py
index 670b8fd99..819f7fa5a 100644
--- a/src/core/admin.py
+++ b/src/core/admin.py
@@ -342,7 +342,7 @@ class RoomAdmin(admin.ModelAdmin):
 
     fieldsets = (
         ('Organisation', {
-            'fields': ['id', 'conference', 'assembly', 'blocked', 'reserve_capacity'],
+            'fields': ['id', 'conference', 'assembly', 'is_public_fahrplan', 'blocked', 'reserve_capacity'],
         }),
         ('Data', {
             'fields': ['name', 'room_type', 'capacity', 'occupants'],
diff --git a/src/core/locale/de/LC_MESSAGES/django.po b/src/core/locale/de/LC_MESSAGES/django.po
index 2ba3b3a1e..936e656c0 100644
--- a/src/core/locale/de/LC_MESSAGES/django.po
+++ b/src/core/locale/de/LC_MESSAGES/django.po
@@ -810,6 +810,12 @@ msgstr "öffentliche Information (Markdown unterstützt)"
 msgid "Room__description"
 msgstr "Beschreibung"
 
+msgid "Room__is_public_fahrplan__help"
+msgstr "wird im public fahrplan angezeigt (insbes. ohne Login)"
+
+msgid "Room__is_public_fahrplan"
+msgstr "public_fahrplan"
+
 msgid "Room__type__help"
 msgstr "Art des Raums"
 
diff --git a/src/core/locale/en/LC_MESSAGES/django.po b/src/core/locale/en/LC_MESSAGES/django.po
index 204ae3184..703748746 100644
--- a/src/core/locale/en/LC_MESSAGES/django.po
+++ b/src/core/locale/en/LC_MESSAGES/django.po
@@ -816,6 +816,12 @@ msgstr "public information"
 msgid "Room__description"
 msgstr "description"
 
+msgid "Room__is_public_fahrplan__help"
+msgstr "shown in the public fahrplan"
+
+msgid "Room__is_public_fahrplan"
+msgstr "public fahrplan"
+
 msgid "Room__type__help"
 msgstr "type of room"
 
diff --git a/src/core/migrations/0050_Room_is_public_fahrplan.py b/src/core/migrations/0050_Room_is_public_fahrplan.py
new file mode 100644
index 000000000..e81e06bbf
--- /dev/null
+++ b/src/core/migrations/0050_Room_is_public_fahrplan.py
@@ -0,0 +1,18 @@
+# Generated by Django 3.1.4 on 2020-12-26 13:19
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('core', '0049_Event_repair_start'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='room',
+            name='is_public_fahrplan',
+            field=models.BooleanField(default=False, help_text='Room__is_public_fahrplan__help', verbose_name='Room__is_public_fahrplan'),
+        ),
+    ]
diff --git a/src/core/models/rooms.py b/src/core/models/rooms.py
index 3df44acb4..ca6a33d56 100644
--- a/src/core/models/rooms.py
+++ b/src/core/models/rooms.py
@@ -119,6 +119,8 @@ class Room(models.Model):
     """Description of the room/project."""
     description_html = models.TextField(blank=True, null=True)
 
+    is_public_fahrplan = models.BooleanField(default=False, help_text=_('Room__is_public_fahrplan__help'), verbose_name=_('Room__is_public_fahrplan'))
+
     room_type = models.CharField(max_length=20, choices=RoomType.choices, help_text=_('Room__type__help'), verbose_name=_('Room__type'))
     """Style of the room."""
 
diff --git a/src/plainui/views.py b/src/plainui/views.py
index aca532f9b..8265b33cb 100644
--- a/src/plainui/views.py
+++ b/src/plainui/views.py
@@ -1030,7 +1030,7 @@ def _organize_events_for_calendar(conf, events):
 UPCOMING_WINDOW = timedelta(minutes=30)
 
 
-def _event_filter(user, conf, day=None, curated=None, assembly=None, track=None, room=None, user_schedule_only=False, upcoming=False):
+def _event_filter(user, conf, day=None, curated=None, assembly=None, track=None, room=None, user_schedule_only=False, upcoming=False, public_fahrplan=False):
     min_date, max_date = conf.start, conf.end
     if min_date is None or max_date is None:
         return Event.objects.none()
@@ -1049,6 +1049,8 @@ def _event_filter(user, conf, day=None, curated=None, assembly=None, track=None,
         filters['room'] = room
     if user_schedule_only:
         filters['in_personal_calendar'] = user
+    if public_fahrplan:
+        filters['room__is_public_fahrplan'] = True
 
     events = Event.objects.conference_accessible(conf)
     if upcoming:
@@ -1182,7 +1184,7 @@ class PublicFahrplanView(ConferenceRequiredMixin, TemplateView):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(conf=self.conf, **kwargs)
         context['mode'] = 'calendar'
-        events = _event_filter(self.request.user, self.conf, curated=True)
+        events = _event_filter(self.request.user, self.conf, curated=True, public_fahrplan=True)
         context['events'] = _organize_events_for_calendar(self.conf, events)
         return context
 
-- 
GitLab