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 02dd5e4..54d44d2 100644 Binary files a/db.sqlite3 and b/db.sqlite3 differ 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(