diff --git a/club/forms.py b/club/forms.py index 4e5797e2..3ab9efd9 100644 --- a/club/forms.py +++ b/club/forms.py @@ -321,9 +321,6 @@ class ClubRoleForm(forms.ModelForm): "is_active": forms.CheckboxInput(attrs={"class": "switch"}), } - def __init__(self, *args, label_suffix="", **kwargs): - super().__init__(*args, label_suffix=label_suffix, **kwargs) - def clean(self): cleaned_data = super().clean() if "ORDER" in cleaned_data: @@ -331,6 +328,31 @@ class ClubRoleForm(forms.ModelForm): return cleaned_data +class ClubRoleCreateForm(forms.ModelForm): + """Form to create a club role. + + Notes: + For UX purposes, users are not meant to fill `is_presidency` + and `is_board`, so those values are required by the form constructor + in order to initialize the instance properly. + """ + + error_css_class = "error" + required_css_class = "required" + + class Meta: + model = ClubRole + fields = ["name", "description"] + + def __init__( + self, *args, club: Club, is_presidency: bool, is_board: bool, **kwargs + ): + super().__init__(*args, **kwargs) + self.instance.club = club + self.instance.is_presidency = is_presidency + self.instance.is_board = is_board + + class ClubRoleBaseFormSet(forms.BaseInlineFormSet): ordering_widget = forms.HiddenInput() diff --git a/club/templates/club/club_roles.jinja b/club/templates/club/club_roles.jinja index ab9310ba..b008419a 100644 --- a/club/templates/club/club_roles.jinja +++ b/club/templates/club/club_roles.jinja @@ -54,7 +54,14 @@ {{ form.management_form }} {{ form.non_form_errors() }}