Coverage for sites/comments_site/comments_database/forms.py: 44%
30 statements
« prev ^ index » next coverage.py v7.6.4, created at 2024-10-25 11:29 +0000
« prev ^ index » next coverage.py v7.6.4, created at 2024-10-25 11:29 +0000
1from django import forms
2from django.contrib.auth.forms import UserChangeForm as BaseUserChangeForm
3from django.contrib.auth.forms import UserCreationForm as BaseUserCreationForm
5from ptf.site_register import SITE_REGISTER
7from .models import User
10def check_website_data(form: forms.BaseForm, data: dict):
11 url = data.get("url")
12 mathdoc_site = data.get("mathdoc_site")
13 if url and not mathdoc_site:
14 form.add_error("mathdoc_site", "Mathdoc site must be checked when filling the URL")
15 # If the user to create is flagged as a mathdoc website, its username must be
16 # an entry in the site_register
17 if mathdoc_site:
18 username = data.get("username")
19 if username not in SITE_REGISTER:
20 form.add_error(
21 "username",
22 "The username MUST match an entry in site_register.py when mathdoc site is checked",
23 )
26class UserCreationForm(BaseUserCreationForm):
27 class Meta:
28 model = User
29 fields = ("email", "mathdoc_site", "url")
31 def clean(self) -> dict:
32 cleaned_data = super().clean()
33 check_website_data(self, cleaned_data)
34 return cleaned_data
37class UserChangeForm(BaseUserChangeForm):
38 class Meta:
39 model = User
40 fields = ("email", "mathdoc_site", "url")
42 def clean(self) -> dict:
43 cleaned_data = super().clean()
44 check_website_data(self, cleaned_data)
45 return cleaned_data