From 84483050272d718f8f102074e79e01c33b065e27 Mon Sep 17 00:00:00 2001
From: Grollicus <cccvgitlab.db5c7b60@grollmann.eu>
Date: Fri, 17 Dec 2021 13:06:32 +0100
Subject: [PATCH] disallow setting state_assembly=state_channel=none

---
 src/backoffice/forms.py                  | 5 +++++
 src/core/locale/de/LC_MESSAGES/django.po | 3 +++
 src/core/locale/en/LC_MESSAGES/django.po | 3 +++
 3 files changed, 11 insertions(+)

diff --git a/src/backoffice/forms.py b/src/backoffice/forms.py
index e211c295b..1ddb05345 100644
--- a/src/backoffice/forms.py
+++ b/src/backoffice/forms.py
@@ -126,6 +126,11 @@ class AssemblyEditForm(forms.ModelForm):
         # call original .clean() which e.g. removes 'slug' from cleaned_data if that isn't a slug
         super().clean()
 
+        # ensure assembly is either a channel or an assembly
+        if self.cleaned_data.get('state_assembly') == Assembly.State.NONE and self.cleaned_data.get('state_channel') == Assembly.State.NONE:
+            self.add_error('state_assembly', _('Assembly__states_must_not_be_none'))
+            self.add_error('state_channel', _('Assembly__states_must_not_be_none'))
+
         # slug must not already exist in the conference
         slug = self.cleaned_data.get('slug')
         if slug is not None and Assembly.objects.filter(conference=self.instance.conference, slug=slug).exclude(pk=self.instance.pk).exists():
diff --git a/src/core/locale/de/LC_MESSAGES/django.po b/src/core/locale/de/LC_MESSAGES/django.po
index b13824bf5..7dad9e681 100644
--- a/src/core/locale/de/LC_MESSAGES/django.po
+++ b/src/core/locale/de/LC_MESSAGES/django.po
@@ -255,6 +255,9 @@ msgstr "Die Assembly muss einen Typ haben (zumindest eins von physisch/virtuell/
 msgid "Assembly__technical_user__must_be_assembly"
 msgstr "Der technische Benutzer muss vom Typ 'Assembly' sein."
 
+msgid "Assembly__states_must_not_be_none"
+msgstr "Assemblystate oder Channelstate muss gesetzt sein!"
+
 msgid "Assembly__slug__is_forbidden"
 msgstr "Dieser Kurzname ist verboten!"
 
diff --git a/src/core/locale/en/LC_MESSAGES/django.po b/src/core/locale/en/LC_MESSAGES/django.po
index 7eddfc35b..62b73f72e 100644
--- a/src/core/locale/en/LC_MESSAGES/django.po
+++ b/src/core/locale/en/LC_MESSAGES/django.po
@@ -255,6 +255,9 @@ msgstr "The assembly requires a type (at least one of physical/virtual/remote)."
 msgid "Assembly__technical_user__must_be_assembly"
 msgstr "The technical user must be of type 'assembly'."
 
+msgid "Assembly__states_must_not_be_none"
+msgstr "assembly state or channel state must be set!"
+
 msgid "Assembly__slug__is_forbidden"
 msgstr "this short name is forbidden"
 
-- 
GitLab