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
« 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
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
11User = get_user_model()
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 )
24 class Meta:
25 model = Author
26 fields = ["author_name", "image"]
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 )
51 class Meta:
52 model = User
53 fields = ("username", "email", "password", "confirm_pass")
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
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
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 )
86 class Meta:
87 model = SocialMedia
88 fields = ["social_media", "social_media_profile"]
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 }
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 }