diff --git a/accounts/forms.py b/accounts/forms.py index 7654a13..76beb31 100644 --- a/accounts/forms.py +++ b/accounts/forms.py @@ -90,6 +90,19 @@ class CustomerForm(forms.ModelForm): return national_code 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) if self.instance and self.instance.pk: # Update existing profile @@ -108,6 +121,18 @@ class CustomerForm(forms.ModelForm): profile.affairs = current_user_profile.affairs profile.county = current_user_profile.county 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: profile.save() @@ -142,6 +167,18 @@ class CustomerForm(forms.ModelForm): profile.affairs = current_user_profile.affairs profile.county = current_user_profile.county 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: profile.save() diff --git a/accounts/views.py b/accounts/views.py index beb49ff..c5bec75 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -19,6 +19,9 @@ def login_view(request): renders login page and authenticating user POST requests 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": username = request.POST.get("username") password = request.POST.get("password") diff --git a/db.sqlite3 b/db.sqlite3 index d80d44c..b3c2c85 100644 Binary files a/db.sqlite3 and b/db.sqlite3 differ