From 2af596ae6f7bb7ff9ec03bc605962ac737519038 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Benjamin=20H=C3=A4ttasch?=
 <benjamin.haettasch@fachschaft.informatik.tu-darmstadt.de>
Date: Mon, 15 May 2023 19:59:47 +0200
Subject: [PATCH] Allow creating default availabilities in batch room import

This implements #175
---
 AKModel/forms.py                           |  5 +++++
 AKModel/locale/de_DE/LC_MESSAGES/django.po | 22 +++++++++++++++-------
 AKModel/views/room.py                      |  7 ++++++-
 3 files changed, 26 insertions(+), 8 deletions(-)

diff --git a/AKModel/forms.py b/AKModel/forms.py
index 0ca5c1c5..606b5753 100644
--- a/AKModel/forms.py
+++ b/AKModel/forms.py
@@ -140,6 +140,11 @@ class RoomBatchCreationForm(AdminIntermediateForm):
         widget=forms.Textarea,
         required=True,
     )
+    create_default_availabilities = forms.BooleanField(
+        label=_('Default availabilities?'),
+        help_text=_('Create default availabilities for all rooms?'),
+        required=False
+    )
 
     def clean_rooms(self):
         rooms_raw_text = self.cleaned_data["rooms"]
diff --git a/AKModel/locale/de_DE/LC_MESSAGES/django.po b/AKModel/locale/de_DE/LC_MESSAGES/django.po
index 13f41c7f..f1f5756b 100644
--- a/AKModel/locale/de_DE/LC_MESSAGES/django.po
+++ b/AKModel/locale/de_DE/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-05-15 20:03+0200\n"
+"POT-Creation-Date: 2023-05-15 20:19+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -240,7 +240,15 @@ msgstr ""
 "Spalten sind \"location\", \"capacity\", und \"url\" for Online-/"
 "HybridräumeTrennzeichen: Semikolon"
 
-#: AKModel/forms.py:149
+#: AKModel/forms.py:144
+msgid "Default availabilities?"
+msgstr "Standardverfügbarkeiten?"
+
+#: AKModel/forms.py:145
+msgid "Create default availabilities for all rooms?"
+msgstr "Standardverfügbarkeiten für alle Räume anlegen?"
+
+#: AKModel/forms.py:154
 msgid "CSV must contain a name column"
 msgstr "CSV muss eine name-Spalte enthalten"
 
@@ -1227,26 +1235,26 @@ msgid "Updated {u} slot(s). created {c} new slot(s) and deleted {d} slot(s)"
 msgstr ""
 "{u} Slot(s) aktualisiert, {c} Slot(s) hinzugefügt und {d} Slot(s) gelöscht"
 
-#: AKModel/views/room.py:31
+#: AKModel/views/room.py:32
 #, python-format
 msgid "Created Room '%(room)s'"
 msgstr "Raum '%(room)s' angelegt"
 
-#: AKModel/views/room.py:37 AKModel/views/status.py:64
+#: AKModel/views/room.py:38 AKModel/views/status.py:64
 msgid "Import Rooms from CSV"
 msgstr "Räume aus CSV importieren"
 
-#: AKModel/views/room.py:68
+#: AKModel/views/room.py:73
 #, python-brace-format
 msgid "Could not import room {name}: {e}"
 msgstr "Konnte Raum {name} nicht importieren: {e}"
 
-#: AKModel/views/room.py:72
+#: AKModel/views/room.py:77
 #, python-brace-format
 msgid "Imported {count} room(s)"
 msgstr "{count} Raum/Räume importiert"
 
-#: AKModel/views/room.py:74
+#: AKModel/views/room.py:79
 msgid "No rooms imported"
 msgstr "Keine Räume importiert"
 
diff --git a/AKModel/views/room.py b/AKModel/views/room.py
index 94c16b89..adead3ba 100644
--- a/AKModel/views/room.py
+++ b/AKModel/views/room.py
@@ -8,6 +8,7 @@ from django.urls import reverse_lazy
 from django.utils.translation import gettext_lazy as _
 from django.views.generic import CreateView
 
+from AKModel.availability.models import Availability
 from AKModel.forms import RoomForm, RoomBatchCreationForm
 from AKModel.metaviews.admin import AdminViewMixin, EventSlugMixin, IntermediateAdminView
 from AKModel.models import Room
@@ -37,10 +38,11 @@ class RoomBatchCreationView(EventSlugMixin, IntermediateAdminView):
     title = _("Import Rooms from CSV")
 
     def get_success_url(self):
-        return reverse_lazy('admin:event_status', kwargs={'slug': self.event.slug})
+        return reverse_lazy('admin:event_status', kwargs={'event_slug': self.event.slug})
 
     def form_valid(self, form):
         virtual_rooms_support = False
+        create_default_availabilities = form.cleaned_data["create_default_availabilities"]
         created_count = 0
 
         rooms_raw_dict: csv.DictReader = form.cleaned_data["rooms"]
@@ -62,6 +64,9 @@ class RoomBatchCreationView(EventSlugMixin, IntermediateAdminView):
                 if virtual_rooms_support and raw_room["url"] != "":
                     VirtualRoom.objects.create(room=r,
                                                url=raw_room["url"])
+                if create_default_availabilities:
+                    a = Availability.with_event_length(event=self.event, room=r)
+                    a.save()
                 created_count += 1
             except django.db.Error as e:
                 messages.add_message(self.request, messages.WARNING,
-- 
GitLab