Coverage for src/mesh/views/forms/role_forms.py: 47%
17 statements
« prev ^ index » next coverage.py v7.7.0, created at 2025-04-28 07:45 +0000
« prev ^ index » next coverage.py v7.7.0, created at 2025-04-28 07:45 +0000
1from typing import Any
3from django import forms
5from mesh.app_settings import app_settings
8class RoleSelectForm(forms.Form):
9 role_code = forms.ChoiceField(
10 choices=[], widget=forms.Select(attrs={"class": "bootstrap-select"})
11 )
13 def __init__(self, *args, **kwargs):
14 role_choices = kwargs.pop("role_choices")
15 super().__init__(*args, **kwargs)
16 self.fields["role_code"].choices = role_choices
19class RoleSwitchForm(forms.Form):
20 role_code = forms.CharField(
21 max_length=64, strip=True, required=True, widget=forms.HiddenInput()
22 )
24 def clean(self) -> dict[str, Any]:
25 """
26 Chosen role is limited to the activated roles of the application.
27 """
28 cleaned_data = super().clean()
29 role_code = cleaned_data["role_code"]
30 if role_code not in app_settings.ENABLED_ROLES:
31 raise forms.ValidationError(f"Error: the selected role '{role_code}' is not enabled.")
32 return cleaned_data