fix complete profile for new user

This commit is contained in:
aminhashemi92 2025-09-13 13:11:12 +03:30
parent f95beb726f
commit 855ad3912c
3 changed files with 40 additions and 0 deletions

View file

@ -90,6 +90,19 @@ class CustomerForm(forms.ModelForm):
return national_code return national_code
def save(self, commit=True): def save(self, commit=True):
def _compute_completed(cleaned):
try:
first_ok = bool((cleaned.get('first_name') or '').strip())
last_ok = bool((cleaned.get('last_name') or '').strip())
nc_ok = bool((cleaned.get('national_code') or '').strip())
phone_ok = bool((cleaned.get('phone_number_1') or '').strip() or (cleaned.get('phone_number_2') or '').strip())
addr_ok = bool((cleaned.get('address') or '').strip())
bank_ok = bool(cleaned.get('bank_name'))
card_ok = bool((cleaned.get('card_number') or '').strip())
acc_ok = bool((cleaned.get('account_number') or '').strip())
return all([first_ok, last_ok, nc_ok, phone_ok, addr_ok, bank_ok, card_ok, acc_ok])
except Exception:
return False
# Check if this is an update (instance exists) # Check if this is an update (instance exists)
if self.instance and self.instance.pk: if self.instance and self.instance.pk:
# Update existing profile # Update existing profile
@ -108,6 +121,18 @@ class CustomerForm(forms.ModelForm):
profile.affairs = current_user_profile.affairs profile.affairs = current_user_profile.affairs
profile.county = current_user_profile.county profile.county = current_user_profile.county
profile.broker = current_user_profile.broker profile.broker = current_user_profile.broker
# Set completion flag based on provided form data
profile.is_completed = _compute_completed({
'first_name': user.first_name,
'last_name': user.last_name,
'national_code': self.cleaned_data.get('national_code'),
'phone_number_1': self.cleaned_data.get('phone_number_1'),
'phone_number_2': self.cleaned_data.get('phone_number_2'),
'address': self.cleaned_data.get('address'),
'bank_name': self.cleaned_data.get('bank_name'),
'card_number': self.cleaned_data.get('card_number'),
'account_number': self.cleaned_data.get('account_number'),
})
if commit: if commit:
profile.save() profile.save()
@ -142,6 +167,18 @@ class CustomerForm(forms.ModelForm):
profile.affairs = current_user_profile.affairs profile.affairs = current_user_profile.affairs
profile.county = current_user_profile.county profile.county = current_user_profile.county
profile.broker = current_user_profile.broker profile.broker = current_user_profile.broker
# Set completion flag based on provided form data
profile.is_completed = _compute_completed({
'first_name': user.first_name,
'last_name': user.last_name,
'national_code': self.cleaned_data.get('national_code'),
'phone_number_1': self.cleaned_data.get('phone_number_1'),
'phone_number_2': self.cleaned_data.get('phone_number_2'),
'address': self.cleaned_data.get('address'),
'bank_name': self.cleaned_data.get('bank_name'),
'card_number': self.cleaned_data.get('card_number'),
'account_number': self.cleaned_data.get('account_number'),
})
if commit: if commit:
profile.save() profile.save()

View file

@ -19,6 +19,9 @@ def login_view(request):
renders login page and authenticating user POST requests renders login page and authenticating user POST requests
to log user in to log user in
""" """
# If already authenticated, go straight to request list
if request.user.is_authenticated:
return redirect("processes:request_list")
if request.method == "POST": if request.method == "POST":
username = request.POST.get("username") username = request.POST.get("username")
password = request.POST.get("password") password = request.POST.get("password")

Binary file not shown.