From e38829cf313e6a14bbc096b1918e2541964882dd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Benjamin=20H=C3=A4ttasch?=
 <benjamin.haettasch@fachschaft.informatik.tu-darmstadt.de>
Date: Thu, 1 Dec 2022 22:49:16 +0100
Subject: [PATCH 1/2] Fix room adding form

Make sure calendar is only loaded when event was already set
---
 .../admin/AKModel/room_change_form.html       | 26 ++++++++++---------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/AKModel/templates/admin/AKModel/room_change_form.html b/AKModel/templates/admin/AKModel/room_change_form.html
index aac03532..a8db3671 100644
--- a/AKModel/templates/admin/AKModel/room_change_form.html
+++ b/AKModel/templates/admin/AKModel/room_change_form.html
@@ -7,18 +7,20 @@
 {% block extrahead %}
     {{ block.super }}
     {% bootstrap_javascript jquery='slim' %}
-    {% include "AKModel/load_fullcalendar_availabilities.html" %}
+    {% if original.event %}
+        {% include "AKModel/load_fullcalendar_availabilities.html" %}
 
-    <script>
-        {% get_current_language as LANGUAGE_CODE %}
+        <script>
+            {% get_current_language as LANGUAGE_CODE %}
 
-        document.addEventListener('DOMContentLoaded', function () {
-            createAvailabilityEditors(
-                '{{ original.event.timezone }}',
-                '{{ LANGUAGE_CODE }}',
-                '{{ original.event.start | timezone:original.event.timezone | date:"Y-m-d H:i:s" }}',
-                '{{ original.event.end | timezone:original.event.timezone | date:"Y-m-d H:i:s" }}'
-            );
-        });
-    </script>
+            document.addEventListener('DOMContentLoaded', function () {
+                createAvailabilityEditors(
+                    '{{ original.event.timezone }}',
+                    '{{ LANGUAGE_CODE }}',
+                    '{{ original.event.start | timezone:original.event.timezone | date:"Y-m-d H:i:s" }}',
+                    '{{ original.event.end | timezone:original.event.timezone | date:"Y-m-d H:i:s" }}'
+                );
+            });
+        </script>
+    {% endif %}
 {% endblock %}
-- 
GitLab


From 1bacaa705cc5f8c0512c27179d5000e2d9506e51 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Benjamin=20H=C3=A4ttasch?=
 <benjamin.haettasch@fachschaft.informatik.tu-darmstadt.de>
Date: Fri, 2 Dec 2022 20:25:55 +0100
Subject: [PATCH 2/2] Improve room import for virtual rooms

---
 AKModel/views.py | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/AKModel/views.py b/AKModel/views.py
index dde2d17f..973ef0c8 100644
--- a/AKModel/views.py
+++ b/AKModel/views.py
@@ -586,25 +586,32 @@ class RoomBatchCreationView(EventSlugMixin, IntermediateAdminView):
 
     def form_valid(self, form):
         from django.apps import apps
-        VIRTUAL_ROOMS_SUPPORT = False
-        if apps.is_installed("AKOnline"):
-            VIRTUAL_ROOMS_SUPPORT = True
-            from AKOnline.models import VirtualRoom
-
+        virtual_rooms_support = False
         created_count = 0
 
         rooms_raw_dict: csv.DictReader = form.cleaned_data["rooms"]
+
+        if apps.is_installed("AKOnline") and "url" in rooms_raw_dict.fieldnames:
+            virtual_rooms_support = True
+            from AKOnline.models import VirtualRoom
+
         for raw_room in rooms_raw_dict:
             name = raw_room["name"]
             location = raw_room["location"] if "location" in rooms_raw_dict.fieldnames else ""
             capacity = raw_room["capacity"] if "capacity" in rooms_raw_dict.fieldnames else -1
-            url = raw_room["url"] if "url" in rooms_raw_dict.fieldnames else ""
 
             try:
-                if VIRTUAL_ROOMS_SUPPORT and url != "":
-                    VirtualRoom.objects.create(name=name, location=location, capacity=capacity, url=url, event=self.event)
+                if virtual_rooms_support and raw_room["url"] != "":
+                    VirtualRoom.objects.create(name=name,
+                                               location=location,
+                                               capacity=capacity,
+                                               url=raw_room["url"],
+                                               event=self.event)
                 else:
-                    Room.objects.create(name=name, location=location, capacity=capacity, event=self.event)
+                    Room.objects.create(name=name,
+                                        location=location,
+                                        capacity=capacity,
+                                        event=self.event)
                 created_count += 1
             except django.db.Error as e:
                 messages.add_message(self.request, messages.WARNING,
-- 
GitLab