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

1from allauth.account.forms import SignupForm as BaseSignupForm 

2from django import forms 

3from django.utils.translation import gettext_lazy as _ 

4 

5from .base_forms import MeshFormMixin 

6 

7 

8class UserForm(MeshFormMixin, forms.Form): 

9 custom_display = "inline" 

10 user = forms.ModelChoiceField(label=_("Target user"), queryset=None, required=True) 

11 

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) 

17 

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 

23 

24 

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 ) 

42 

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