From 001dc313f6f1a01da8122b1c1a5202c3ec8661c8 Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Sat, 4 Oct 2025 14:05:33 +0330 Subject: [PATCH] add requiered field --- accounts/forms.py | 10 +++++++--- accounts/models.py | 10 ---------- db.sqlite3 | Bin 3833856 -> 3854336 bytes installations/forms.py | 43 +++++++++++++++++++++++++++-------------- wells/forms.py | 8 +++----- wells/models.py | 6 ++++-- 6 files changed, 42 insertions(+), 35 deletions(-) diff --git a/accounts/forms.py b/accounts/forms.py index e5f3b90..eca6ffc 100644 --- a/accounts/forms.py +++ b/accounts/forms.py @@ -64,21 +64,25 @@ class CustomerForm(forms.ModelForm): 'address': forms.Textarea(attrs={ 'class': 'form-control', 'placeholder': 'آدرس کامل', - 'rows': '3' + 'rows': '3', + 'required': True }), 'card_number': forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': 'شماره کارت بانکی', - 'maxlength': '16' + 'maxlength': '16', + 'required': True }), 'account_number': forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': 'شماره حساب بانکی', - 'maxlength': '20' + 'maxlength': '20', + 'required': True }), 'bank_name': forms.Select(attrs={ 'class': 'form-control', 'placeholder': 'نام بانک', + 'required': True }), } labels = { diff --git a/accounts/models.py b/accounts/models.py index f6ccf3d..b896581 100644 --- a/accounts/models.py +++ b/accounts/models.py @@ -27,9 +27,7 @@ class Profile(BaseModel): ) national_code = models.CharField( max_length=10, - null=True, verbose_name="کد ملی", - blank=True, validators=[ RegexValidator( regex=r'^\d+$', @@ -39,15 +37,11 @@ class Profile(BaseModel): ] ) address = models.TextField( - null=True, verbose_name="آدرس", - blank=True ) card_number = models.CharField( max_length=16, - null=True, verbose_name="شماره کارت", - blank=True, validators=[ RegexValidator( regex=r'^\d+$', @@ -58,9 +52,7 @@ class Profile(BaseModel): ) account_number = models.CharField( max_length=20, - null=True, verbose_name="شماره حساب", - blank=True, validators=[ RegexValidator( regex=r'^\d+$', @@ -72,9 +64,7 @@ class Profile(BaseModel): bank_name = models.CharField( max_length=255, choices=BANK_CHOICES, - null=True, verbose_name="نام بانک", - blank=True ) phone_number_1 = models.CharField( max_length=11, diff --git a/db.sqlite3 b/db.sqlite3 index 02dd5e48ff840e6b3f07141a66237bed9aaa5cc6..54d44d296cedfc0b5ea29060c277b1b986714ea5 100644 GIT binary patch delta 31174 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 diff --git a/installations/forms.py b/installations/forms.py index ae1a13c..86e7428 100644 --- a/installations/forms.py +++ b/installations/forms.py @@ -34,24 +34,29 @@ class InstallationReportForm(forms.ModelForm): 'required': True }), 'new_water_meter_serial': forms.TextInput(attrs={ - 'class': 'form-control' + 'class': 'form-control', + 'required': True }), 'seal_number': forms.TextInput(attrs={ - 'class': 'form-control' + 'class': 'form-control', + 'required': True }), 'utm_x': forms.NumberInput(attrs={ 'class': 'form-control', - 'step': '1' + 'step': '1', + 'required': True }), 'utm_y': forms.NumberInput(attrs={ 'class': 'form-control', - 'step': '1' + 'step': '1', + 'required': True }), 'meter_type': forms.Select(attrs={ - 'class': 'form-select' + 'class': 'form-select', + 'required': True }, choices=[ ('', 'انتخاب کنید'), - ('smart', 'هوشمند (آبی/برق)'), + ('smart', 'هوشمند (آب و برق)'), ('volumetric', 'حجمی') ]), 'meter_size': forms.TextInput(attrs={ @@ -60,10 +65,12 @@ class InstallationReportForm(forms.ModelForm): 'discharge_pipe_diameter': forms.NumberInput(attrs={ 'class': 'form-control', 'min': '0', - 'step': '1' + 'step': '1', + 'required': True }), 'usage_type': forms.Select(attrs={ - 'class': 'form-select' + 'class': 'form-select', + 'required': True }, choices=[ ('', 'انتخاب کنید'), ('domestic', 'شرب و خدمات'), @@ -77,31 +84,37 @@ class InstallationReportForm(forms.ModelForm): 'motor_power': forms.NumberInput(attrs={ 'class': 'form-control', 'min': '0', - 'step': '1' + 'step': '1', + 'required': True }), 'pre_calibration_flow_rate': forms.NumberInput(attrs={ 'class': 'form-control', 'min': '0', - 'step': '0.01' + 'step': '0.01', + 'required': True }), 'post_calibration_flow_rate': forms.NumberInput(attrs={ 'class': 'form-control', 'min': '0', - 'step': '0.01' + 'step': '0.01', + 'required': True }), 'water_meter_manufacturer': forms.Select(attrs={ 'class': 'form-select', - 'id': 'id_water_meter_manufacturer' + 'id': 'id_water_meter_manufacturer', + 'required': True }), 'sim_number': forms.TextInput(attrs={ - 'class': 'form-control' + 'class': 'form-control', + 'required': True }), 'driving_force': forms.TextInput(attrs={ - 'class': 'form-control' + 'class': 'form-control', + 'required': True }), 'is_meter_suspicious': forms.CheckboxInput(attrs={ 'class': 'form-check-input', - 'id': 'id_is_meter_suspicious' + 'id': 'id_is_meter_suspicious', }), 'description': forms.Textarea(attrs={ 'class': 'form-control', diff --git a/wells/forms.py b/wells/forms.py index 7917117..8c132ca 100644 --- a/wells/forms.py +++ b/wells/forms.py @@ -83,12 +83,10 @@ class WellForm(forms.ModelForm): 'utm_x': forms.NumberInput(attrs={ 'class': 'form-control', 'placeholder': 'X UTM', - 'required': 'required', }), 'utm_y': forms.NumberInput(attrs={ 'class': 'form-control', 'placeholder': 'Y UTM', - 'required': 'required', }), 'utm_zone': forms.NumberInput(attrs={ 'class': 'form-control', @@ -97,17 +95,17 @@ class WellForm(forms.ModelForm): 'max': '60' }), 'utm_hemisphere': forms.Select(attrs={ - 'class': 'form-select' + 'class': 'form-select', }), 'well_power': forms.NumberInput(attrs={ 'class': 'form-control', 'placeholder': 'قدرت چاه', - 'min': '0' + 'min': '0', + 'required': True }), 'reference_letter_number': forms.TextInput(attrs={ 'class': 'form-control', 'placeholder': 'شماره معرفی نامه', - 'required': True }), 'reference_letter_date': forms.DateInput(attrs={ 'class': 'form-control', diff --git a/wells/models.py b/wells/models.py index c82f052..2af3d8e 100644 --- a/wells/models.py +++ b/wells/models.py @@ -80,11 +80,15 @@ class Well(SluggedModel): max_digits=10, decimal_places=0, verbose_name="X UTM", + null=True, + blank=True ) utm_y = models.DecimalField( max_digits=10, decimal_places=0, verbose_name="Y UTM", + null=True, + blank=True ) utm_zone = models.PositiveIntegerField( verbose_name="زون UTM", @@ -103,8 +107,6 @@ class Well(SluggedModel): well_power = models.PositiveIntegerField( verbose_name="قدرت چاه", - null=True, - blank=True ) reference_letter_number = models.CharField(