diff --git a/src/core/admin.py b/src/core/admin.py index 670b8fd99bcf77c81e6c55f983ecae3c413630a8..819f7fa5a9d9b8a05b03067f88893ca5f3a8ef55 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 2ba3b3a1edabb4f68915231c26f8c4d831f7e54e..936e656c0c45a3ca1badd9de8c41d9af534f2282 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 204ae3184274a6c2afba4bb2ce7ba07230177541..7037487469959983ca8f0ba7da1935ff3c512554 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 0000000000000000000000000000000000000000..e81e06bbf637a464ace5c21c9761d5cb477d2388 --- /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 3df44acb4eabc05867bd5c9b0086418b080b3dc1..ca6a33d56c8b2ceb54859a08d181a29f832fa189 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/tests.py b/src/plainui/tests.py index 131b2e631b9aa11f16f06c19e11796efa9973bed..f7344af7cd63a130a8c7f476c24ccd6a4aa6e638 100644 --- a/src/plainui/tests.py +++ b/src/plainui/tests.py @@ -1497,8 +1497,10 @@ class ViewsTest(TestCase): assembly = Assembly(conference=self.conf, slug='assembly1', name='Assembly1', state=Assembly.State.PLACED) assembly.save() - room = Room(conference=self.conf, assembly=assembly, name='Some Room') + room = Room(conference=self.conf, assembly=assembly, name='Some Room', is_public_fahrplan=True) room.save() + room2 = Room(conference=self.conf, assembly=assembly, name='Some Other Room', is_public_fahrplan=False) + room2.save() event = Event( conference=self.conf, assembly=assembly, name='Event1_1', is_public=True, room=room, schedule_start=datetime(2020, 1, 2, 0, 0, 0, tzinfo=utc), schedule_duration=timedelta(minutes=45), @@ -1512,7 +1514,7 @@ class ViewsTest(TestCase): ) event2.save() event3 = Event( - conference=self.conf, assembly=assembly, name='Event1_3', is_public=True, room=room, + conference=self.conf, assembly=assembly, name='Event1_3', is_public=True, room=room2, schedule_start=datetime(2020, 1, 2, 2, 0, 0, tzinfo=utc), schedule_duration=timedelta(minutes=45), kind=Event.Kind.ASSEMBLY, ) diff --git a/src/plainui/views.py b/src/plainui/views.py index aca532f9b3dfc85ab3d2007165f7cbaa536abfd2..1c8b61bcc108422a529a2a5266c14470ad4d837a 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, public_fahrplan=True) context['events'] = _organize_events_for_calendar(self.conf, events) return context