From 3060d66c81d201f57425f889c37eaef7ea793fac Mon Sep 17 00:00:00 2001
From: Lucas Brandstaetter <lucas@brandstaetter.tech>
Date: Sat, 7 Dec 2024 17:21:58 +0100
Subject: [PATCH] Add team form

---
 src/core/forms/__init__.py               |  2 ++
 src/core/forms/teams.py                  | 32 ++++++++++++++++++++++++
 src/core/locale/de/LC_MESSAGES/django.po |  3 +++
 src/core/locale/en/LC_MESSAGES/django.po |  3 +++
 4 files changed, 40 insertions(+)
 create mode 100644 src/core/forms/teams.py

diff --git a/src/core/forms/__init__.py b/src/core/forms/__init__.py
index f7d33eb1b..caa5a9cce 100644
--- a/src/core/forms/__init__.py
+++ b/src/core/forms/__init__.py
@@ -3,6 +3,7 @@ from core.forms.conferences import ConferencePublicationForm, ConferenceRegistra
 from core.forms.invitations import InvitationHabitatForm
 from core.forms.links import LinkForm, LinkFormSet
 from core.forms.projects import ProjectForm
+from core.forms.teams import TeamForm
 
 __all__ = [
     'ConferencePublicationForm',
@@ -14,4 +15,5 @@ __all__ = [
     'PasswordResetForm',
     'ProjectForm',
     'RegistrationForm',
+    'TeamForm',
 ]
diff --git a/src/core/forms/teams.py b/src/core/forms/teams.py
new file mode 100644
index 000000000..e1f91be9e
--- /dev/null
+++ b/src/core/forms/teams.py
@@ -0,0 +1,32 @@
+from django.forms import ModelForm
+from django.utils.translation import gettext_lazy as _
+
+from core.models import Team
+
+
+class TeamForm(ModelForm):
+    class Meta:
+        model = Team
+        fields = [
+            'name',
+            'description_en',
+            'description_de',
+            'require_staff',
+        ]
+        help_texts = {
+            'name': _('Team__name__help'),
+        }
+
+    def __init__(self, *args, instance: Team | None = None, conference, super_user: bool = False, **kwargs):
+        self.create = instance is None
+        self.conference = conference
+        super().__init__(*args, instance=instance, **kwargs)
+        if not super_user:
+            del self.fields['require_staff']
+
+    def save(self, commit: bool = True) -> Team:
+        team = super().save(commit=False)
+        team.conference = self.conference
+        if commit:  # pragma: no branch
+            team.save()
+        return team
diff --git a/src/core/locale/de/LC_MESSAGES/django.po b/src/core/locale/de/LC_MESSAGES/django.po
index 870d86a83..3dd78c958 100644
--- a/src/core/locale/de/LC_MESSAGES/django.po
+++ b/src/core/locale/de/LC_MESSAGES/django.po
@@ -167,6 +167,9 @@ msgstr "Der Besitzer eines Projekts kann nicht geändert werden!"
 msgid "Project__conference__unchangeable"
 msgstr "Die Konferenz eines Projekts kann nicht geändert werden!"
 
+msgid "Team__name__help"
+msgstr "Der Name des Teams"
+
 msgid "Request failed"
 msgstr "Anfrage fehlgeschlagen"
 
diff --git a/src/core/locale/en/LC_MESSAGES/django.po b/src/core/locale/en/LC_MESSAGES/django.po
index e720fec65..be9a71840 100644
--- a/src/core/locale/en/LC_MESSAGES/django.po
+++ b/src/core/locale/en/LC_MESSAGES/django.po
@@ -167,6 +167,9 @@ msgstr "The owner of a project cannot be changed!"
 msgid "Project__conference__unchangeable"
 msgstr "The conference of a project cannot be changed!"
 
+msgid "Team__name__help"
+msgstr "name of the team"
+
 msgid "Request failed"
 msgstr "Request failed"
 
-- 
GitLab