Coverage for website/forms/EditAuthorForm.py: 100%

55 statements  

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

1from django import forms 

2from django.contrib.auth import get_user_model 

3from django.contrib.auth.forms import UserChangeForm as BaseUserChangeForm 

4from django.forms import ModelForm 

5 

6from website.models import Author, SocialMedia 

7from website.models.__init__ import SOCIAL_MEDIA 

8from website.models.GraduationsModel import Graduation 

9from website.models.JobsModel import Job 

10 

11User = get_user_model() 

12 

13 

14class EditAuthorForm(ModelForm): 

15 author_name = forms.CharField( 

16 label="Nome completo", widget=forms.TextInput(attrs={"class": "form-control"}) 

17 ) 

18 image = forms.FileField( 

19 label="Foto do autor", 

20 widget=forms.FileInput(attrs={"class": "form-control-file"}), 

21 required=False, 

22 ) 

23 

24 class Meta: 

25 model = Author 

26 fields = ["author_name", "image"] 

27 

28 

29class UserChangeForm(BaseUserChangeForm): 

30 username = forms.CharField( 

31 label="Nome do Usuário", widget=forms.TextInput(attrs={"class": "form-control"}) 

32 ) 

33 email = forms.EmailField( 

34 label="Email", widget=forms.EmailInput(attrs={"class": "form-control"}) 

35 ) 

36 password = forms.CharField( 

37 label="Senha", 

38 widget=forms.PasswordInput( 

39 attrs={"placeholder": "Digite a nova senha", "class": "form-control"} 

40 ), 

41 required=False, 

42 ) 

43 confirm_pass = forms.CharField( 

44 label="Confirme a senha", 

45 widget=forms.PasswordInput( 

46 attrs={"placeholder": "Repita a nova senha", "class": "form-control"} 

47 ), 

48 required=False, 

49 ) 

50 

51 class Meta: 

52 model = User 

53 fields = ("username", "email", "password", "confirm_pass") 

54 

55 def clean(self): 

56 cleaned = super().clean() 

57 pw = cleaned.get("password") 

58 cpw = cleaned.get("confirm_pass") 

59 if pw or cpw: 

60 if pw != cpw: 

61 self.add_error("confirm_pass", "As senhas não coincidem.") 

62 return cleaned 

63 

64 def save(self, commit=True): 

65 user = super().save(commit=False) 

66 pw = self.cleaned_data.get("password") 

67 if pw: 

68 user.set_password(pw) 

69 if commit: 

70 user.save() 

71 return user 

72 

73 

74class SocialMediaForm(ModelForm): 

75 social_media = forms.ChoiceField( 

76 choices=SOCIAL_MEDIA, 

77 widget=forms.Select(attrs={"class": "custom-select"}), 

78 required=False, 

79 ) 

80 social_media_profile = forms.CharField( 

81 label="Perfil", 

82 widget=forms.TextInput(attrs={"class": "form-control"}), 

83 required=False, 

84 ) 

85 

86 class Meta: 

87 model = SocialMedia 

88 fields = ["social_media", "social_media_profile"] 

89 

90 

91class GraduationForm(ModelForm): 

92 class Meta: 

93 model = Graduation 

94 fields = [ 

95 "graduation_level", 

96 "course", 

97 "school", 

98 "year_graduation", 

99 "concluded", 

100 ] 

101 widgets = { 

102 "graduation_level": forms.Select(attrs={"class": "custom-select"}), 

103 "course": forms.TextInput(attrs={"class": "form-control"}), 

104 "school": forms.TextInput(attrs={"class": "form-control"}), 

105 "year_graduation": forms.NumberInput( 

106 attrs={"class": "form-control", "min": 1900, "max": 2100} 

107 ), 

108 "concluded": forms.CheckboxInput(attrs={"class": "form-check-input"}), 

109 } 

110 

111 

112class JobForm(ModelForm): 

113 class Meta: 

114 model = Job 

115 fields = [ 

116 "occupation", 

117 "month_begin", 

118 "year_begin", 

119 "month_end", 

120 "year_end", 

121 "current_job", 

122 "roles_description", 

123 ] 

124 widgets = { 

125 "occupation": forms.TextInput(attrs={"class": "form-control"}), 

126 "month_begin": forms.Select(attrs={"class": "custom-select"}), 

127 "year_begin": forms.NumberInput( 

128 attrs={"class": "form-control", "min": 1900, "max": 2100} 

129 ), 

130 "month_end": forms.Select(attrs={"class": "custom-select"}), 

131 "year_end": forms.NumberInput( 

132 attrs={"class": "form-control", "min": 1900, "max": 2100} 

133 ), 

134 "current_job": forms.CheckboxInput(attrs={"class": "form-check-input"}), 

135 "roles_description": forms.Textarea( 

136 attrs={"class": "form-control", "rows": 3} 

137 ), 

138 }