feat(accounts): home district with 6-month cooldown
- accounts/models.py: add district_changed_at DateTimeField + VALID_DISTRICTS constant (14 Kerala districts) - migration 0013_user_district_changed_at: nullable DateTimeField, no backfill - WebRegisterForm: accept optional district during signup, stamp district_changed_at - UpdateProfileView: enforce 183-day cooldown with human-readable error - LoginView/WebRegisterView/StatusView: include district_changed_at in responses Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -45,7 +45,7 @@ class WebRegisterForm(forms.ModelForm):
|
||||
|
||||
class Meta:
|
||||
model = User
|
||||
fields = ['first_name', 'last_name', 'email', 'phone_number', 'password', 'confirm_password']
|
||||
fields = ['first_name', 'last_name', 'email', 'phone_number', 'password', 'confirm_password', 'district']
|
||||
|
||||
def clean_email(self):
|
||||
email = self.cleaned_data.get('email')
|
||||
@@ -76,6 +76,12 @@ class WebRegisterForm(forms.ModelForm):
|
||||
# Mark as a customer / end-user
|
||||
user.is_customer = True
|
||||
user.role = 'customer'
|
||||
from django.utils import timezone
|
||||
from accounts.models import VALID_DISTRICTS
|
||||
if user.district and user.district in VALID_DISTRICTS:
|
||||
user.district_changed_at = timezone.now()
|
||||
elif user.district:
|
||||
user.district = None # reject invalid district silently
|
||||
if commit:
|
||||
user.save()
|
||||
return user
|
||||
|
||||
Reference in New Issue
Block a user