42 lines
2.0 KiB
Python
42 lines
2.0 KiB
Python
from django import forms
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
from .models import Member
|
|
|
|
class MemberForm(forms.ModelForm):
|
|
first_name = forms.CharField(label=_("First name"), max_length=250)
|
|
last_name = forms.CharField(label=_("Last name"), max_length=250)
|
|
email = forms.EmailField(label=_("Email"))
|
|
|
|
admin = forms.BooleanField(label=_("Admin?"), required=False, help_text=_("If checked will mark this user as a site admin granting them all permissions"))
|
|
|
|
password = forms.CharField(label=_("Password"), widget=forms.PasswordInput, required=False)
|
|
password_confirmation = forms.CharField(label=_("Confirm password"), widget=forms.PasswordInput, required=False)
|
|
|
|
class Meta:
|
|
model = Member
|
|
fields = ["phone_number", "emergency_phone_number", "license", "birthday", "family_members"]
|
|
localized_fields = fields
|
|
|
|
def save(self, commit: bool = True) -> Member:
|
|
password = None
|
|
|
|
if self.cleaned_data["password"] is not None and self.cleaned_data["password"] != "" and self.cleaned_data["password"] == self.cleaned_data["password_confirmation"]:
|
|
password = self.cleaned_data["password"]
|
|
|
|
member = Member.create(first_name=self.cleaned_data["first_name"], last_name=self.cleaned_data["last_name"], email=self.cleaned_data["email"], password=password, member=self.instance)
|
|
member.phone_number = self.cleaned_data["phone_number"]
|
|
member.emergency_phone_number = self.cleaned_data["emergency_phone_number"]
|
|
member.license = self.cleaned_data["license"]
|
|
member.birthday = self.cleaned_data["birthday"]
|
|
|
|
if self.cleaned_data["admin"]:
|
|
member.user.is_superuser = True
|
|
member.user.save(update_fields=["is_superuser"])
|
|
|
|
member.save(update_fields=["phone_number", "emergency_phone_number", "license", "birthday"])
|
|
member.family_members.set(self.cleaned_data["family_members"])
|
|
|
|
return member
|
|
|
|
|