Coverage for src/mesh/views/forms/user_forms.py: 39%
25 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 allauth.account.forms import SignupForm as BaseSignupForm
2from django import forms
3from django.utils.translation import gettext_lazy as _
5from .base_forms import MeshFormMixin
8class UserForm(MeshFormMixin, forms.Form):
9 custom_display = "inline"
10 user = forms.ModelChoiceField(label=_("Target user"), queryset=None, required=True)
12 def __init__(self, *args, **kwargs):
13 users = kwargs.pop("_users")
14 hide_user = kwargs.pop("_hide_user", False)
15 user_label = kwargs.pop("_user_label", None)
16 super().__init__(*args, **kwargs)
18 self.fields["user"].queryset = users
19 if hide_user:
20 self.fields["user"].widget = forms.HiddenInput()
21 if user_label:
22 self.fields["user"].label = user_label
25class SignupForm(BaseSignupForm):
26 first_name = forms.CharField(
27 label=_("First name"),
28 max_length=32,
29 required=True,
30 widget=forms.TextInput(
31 attrs={"placeholder": _("First name"), "autocomplete": "given-name"}
32 ),
33 )
34 last_name = forms.CharField(
35 label=_("Last name"),
36 max_length=32,
37 required=True,
38 widget=forms.TextInput(
39 attrs={"placeholder": _("Last name"), "autocomplete": "family-name"}
40 ),
41 )
43 def clean_email(self):
44 """
45 Raise a validation error if the email is already used.
46 With our setup, allauth silences the validation error
47 """
48 value = super().clean_email()
49 if self.account_already_exists:
50 raise forms.ValidationError(f"The provided email, {value}, is already used.")
51 return value