Coverage for website/forms/ProfileUpdateForm.py: 89%

19 statements  

« prev     ^ index     » next       coverage.py v7.5.0, created at 2025-09-13 15:29 -0300

1from django import forms 

2 

3 

4class ProfileUpdateForm(forms.Form): 

5 PROFILE_CHOICES = [ 

6 ("author", "Autor"), 

7 ("reader", "Leitor"), 

8 ] 

9 

10 profile_type = forms.ChoiceField( 

11 choices=PROFILE_CHOICES, widget=forms.RadioSelect, label="Tipo de Perfil" 

12 ) 

13 

14 name = forms.CharField( 

15 max_length=100, 

16 label="Nome", 

17 widget=forms.TextInput(attrs={"placeholder": "Digite seu nome"}), 

18 ) 

19 

20 image = forms.ImageField( 

21 required=False, 

22 label="Foto do Perfil", 

23 widget=forms.FileInput(attrs={"accept": "image/*"}), 

24 ) 

25 

26 def __init__(self, user=None, *args, **kwargs): 

27 super().__init__(*args, **kwargs) 

28 

29 if user: 

30 # Pre-populate form if user has existing profile 

31 if hasattr(user, "author"): 

32 self.fields["profile_type"].initial = "author" 

33 self.fields["name"].initial = user.author.author_name 

34 if user.author.image: 

35 self.fields["image"].initial = user.author.image 

36 elif hasattr(user, "reader"): 

37 self.fields["profile_type"].initial = "reader" 

38 self.fields["name"].initial = user.reader.reader_name 

39 if user.reader.image: 

40 self.fields["image"].initial = user.reader.image