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