feat: admin panel enrichment

This commit is contained in:
mohamad
2026-07-19 14:31:28 +03:30
parent d8d7819eca
commit 1042fba121
77 changed files with 4616 additions and 2 deletions
+102
View File
@@ -0,0 +1,102 @@
from django import forms
from django.contrib.auth.forms import AuthenticationForm, UserCreationForm
from django.contrib.auth.models import User
from .models import ClientProfile
class SignUpForm(UserCreationForm):
first_name = forms.CharField(max_length=150, required=True)
last_name = forms.CharField(max_length=150, required=True)
email = forms.EmailField(required=True)
company = forms.CharField(max_length=200, required=False)
phone = forms.CharField(max_length=50, required=False)
timezone = forms.ChoiceField(choices=ClientProfile.TIMEZONE_CHOICES, required=True)
class Meta:
model = User
fields = ("username", "first_name", "last_name", "email", "password1", "password2")
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for field_name in ("username", "first_name", "last_name", "email", "company", "phone", "timezone"):
if field_name in self.fields:
self.fields[field_name].widget.attrs.setdefault("class", "form-control")
for field_name in ("password1", "password2"):
self.fields[field_name].widget.attrs.setdefault("class", "form-control")
def clean_email(self):
email = self.cleaned_data["email"].strip().lower()
if User.objects.filter(email__iexact=email).exists():
raise forms.ValidationError("An account with this email already exists.")
return email
def save(self, commit=True):
user = super().save(commit=False)
user.email = self.cleaned_data["email"]
user.first_name = self.cleaned_data["first_name"]
user.last_name = self.cleaned_data["last_name"]
if commit:
user.save()
ClientProfile.objects.create(
user=user,
company=self.cleaned_data.get("company", ""),
phone=self.cleaned_data.get("phone", ""),
timezone=self.cleaned_data.get("timezone", "UTC"),
)
return user
class ClientLoginForm(AuthenticationForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields["username"].widget.attrs.update(
{"placeholder": "Username or email", "class": "form-control"}
)
self.fields["password"].widget.attrs.update(
{"placeholder": "Password", "class": "form-control"}
)
class ClientProfileForm(forms.ModelForm):
first_name = forms.CharField(max_length=150, required=True)
last_name = forms.CharField(max_length=150, required=True)
email = forms.EmailField(required=True)
class Meta:
model = ClientProfile
fields = ("company", "phone", "timezone")
widgets = {
"company": forms.TextInput(attrs={"class": "form-control"}),
"phone": forms.TextInput(attrs={"class": "form-control"}),
"timezone": forms.Select(attrs={"class": "form-control"}),
}
def __init__(self, *args, **kwargs):
self.user = kwargs.pop("user")
super().__init__(*args, **kwargs)
self.fields["first_name"].initial = self.user.first_name
self.fields["last_name"].initial = self.user.last_name
self.fields["email"].initial = self.user.email
for name in ("first_name", "last_name", "email"):
self.fields[name].widget.attrs.setdefault("class", "form-control")
def clean_email(self):
email = self.cleaned_data["email"].strip().lower()
if (
User.objects.filter(email__iexact=email)
.exclude(pk=self.user.pk)
.exists()
):
raise forms.ValidationError("An account with this email already exists.")
return email
def save(self, commit=True):
profile = super().save(commit=False)
self.user.first_name = self.cleaned_data["first_name"]
self.user.last_name = self.cleaned_data["last_name"]
self.user.email = self.cleaned_data["email"]
if commit:
self.user.save()
profile.save()
return profile