Merge remote-tracking branch 'origin' into shafafiyat/production
This commit is contained in:
commit
916c66a281
8 changed files with 159 additions and 35 deletions
|
|
@ -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 = {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,74 @@
|
|||
# Generated by Django 5.2.4 on 2025-10-04 10:36
|
||||
|
||||
import django.core.validators
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('accounts', '0008_alter_historicalprofile_phone_number_1_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='historicalprofile',
|
||||
name='account_number',
|
||||
field=models.CharField(default=1, max_length=20, validators=[django.core.validators.RegexValidator(code='invalid_account_number', message='شماره حساب باید فقط شامل اعداد باشد.', regex='^\\d+$')], verbose_name='شماره حساب'),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='historicalprofile',
|
||||
name='address',
|
||||
field=models.TextField(default=1, verbose_name='آدرس'),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='historicalprofile',
|
||||
name='bank_name',
|
||||
field=models.CharField(choices=[('mellat', 'بانک ملت'), ('saman', 'بانک سامان'), ('parsian', 'بانک پارسیان'), ('sina', 'بانک سینا'), ('tejarat', 'بانک تجارت'), ('tosee', 'بانک توسعه'), ('iran_zamin', 'بانک ایران زمین'), ('meli', 'بانک ملی'), ('saderat', 'بانک توسعه صادرات'), ('iran_zamin', 'بانک ایران زمین'), ('refah', 'بانک رفاه'), ('eghtesad_novin', 'بانک اقتصاد نوین'), ('pasargad', 'بانک پاسارگاد'), ('other', 'سایر')], default=1, max_length=255, verbose_name='نام بانک'),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='historicalprofile',
|
||||
name='card_number',
|
||||
field=models.CharField(default=1, max_length=16, validators=[django.core.validators.RegexValidator(code='invalid_card_number', message='شماره کارت باید فقط شامل اعداد باشد.', regex='^\\d+$')], verbose_name='شماره کارت'),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='historicalprofile',
|
||||
name='national_code',
|
||||
field=models.CharField(default=1, max_length=10, validators=[django.core.validators.RegexValidator(code='invalid_national_code', message='کد ملی باید فقط شامل اعداد باشد.', regex='^\\d+$')], verbose_name='کد ملی'),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='profile',
|
||||
name='account_number',
|
||||
field=models.CharField(default=1, max_length=20, validators=[django.core.validators.RegexValidator(code='invalid_account_number', message='شماره حساب باید فقط شامل اعداد باشد.', regex='^\\d+$')], verbose_name='شماره حساب'),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='profile',
|
||||
name='address',
|
||||
field=models.TextField(default=1, verbose_name='آدرس'),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='profile',
|
||||
name='bank_name',
|
||||
field=models.CharField(choices=[('mellat', 'بانک ملت'), ('saman', 'بانک سامان'), ('parsian', 'بانک پارسیان'), ('sina', 'بانک سینا'), ('tejarat', 'بانک تجارت'), ('tosee', 'بانک توسعه'), ('iran_zamin', 'بانک ایران زمین'), ('meli', 'بانک ملی'), ('saderat', 'بانک توسعه صادرات'), ('iran_zamin', 'بانک ایران زمین'), ('refah', 'بانک رفاه'), ('eghtesad_novin', 'بانک اقتصاد نوین'), ('pasargad', 'بانک پاسارگاد'), ('other', 'سایر')], default=1, max_length=255, verbose_name='نام بانک'),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='profile',
|
||||
name='card_number',
|
||||
field=models.CharField(default=1, max_length=16, validators=[django.core.validators.RegexValidator(code='invalid_card_number', message='شماره کارت باید فقط شامل اعداد باشد.', regex='^\\d+$')], verbose_name='شماره کارت'),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='profile',
|
||||
name='national_code',
|
||||
field=models.CharField(default=1, max_length=10, validators=[django.core.validators.RegexValidator(code='invalid_national_code', message='کد ملی باید فقط شامل اعداد باشد.', regex='^\\d+$')], verbose_name='کد ملی'),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
||||
|
|
@ -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,
|
||||
|
|
|
|||
BIN
db.sqlite3
BIN
db.sqlite3
Binary file not shown.
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
43
wells/migrations/0006_alter_historicalwell_utm_x_and_more.py
Normal file
43
wells/migrations/0006_alter_historicalwell_utm_x_and_more.py
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
# Generated by Django 5.2.4 on 2025-10-04 10:43
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('wells', '0005_alter_historicalwell_utm_x_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='historicalwell',
|
||||
name='utm_x',
|
||||
field=models.DecimalField(blank=True, decimal_places=0, max_digits=10, null=True, verbose_name='X UTM'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='historicalwell',
|
||||
name='utm_y',
|
||||
field=models.DecimalField(blank=True, decimal_places=0, max_digits=10, null=True, verbose_name='Y UTM'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='historicalwell',
|
||||
name='well_power',
|
||||
field=models.PositiveIntegerField(verbose_name='قدرت چاه'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='well',
|
||||
name='utm_x',
|
||||
field=models.DecimalField(blank=True, decimal_places=0, max_digits=10, null=True, verbose_name='X UTM'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='well',
|
||||
name='utm_y',
|
||||
field=models.DecimalField(blank=True, decimal_places=0, max_digits=10, null=True, verbose_name='Y UTM'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='well',
|
||||
name='well_power',
|
||||
field=models.PositiveIntegerField(verbose_name='قدرت چاه'),
|
||||
),
|
||||
]
|
||||
|
|
@ -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(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue