From 129500bc1d267ec4085ada2f96db5f5ec624f933 Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Thu, 9 Oct 2025 12:38:28 +0330 Subject: [PATCH] fix callibration to accept 0.0001 --- db.sqlite3 | Bin 4235264 -> 4251648 bytes installations/forms.py | 6 ++--- ...ort_post_calibration_flow_rate_and_more.py | 23 ++++++++++++++++++ installations/models.py | 4 +-- 4 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 installations/migrations/0008_alter_installationreport_post_calibration_flow_rate_and_more.py diff --git a/db.sqlite3 b/db.sqlite3 index 18e25d423e6879c79a1ca3cacd066535d7789263..ec04a213d68986aa1573d6a493091fc942c27b50 100644 GIT binary patch delta 19505 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 R#MAYoH%tQ_bR$##e*s(GHQE3G delta 10794 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 ILaCPj29fxUz5oCK diff --git a/installations/forms.py b/installations/forms.py index e877b2b..2fa60ec 100644 --- a/installations/forms.py +++ b/installations/forms.py @@ -72,7 +72,6 @@ class InstallationReportForm(forms.ModelForm): 'discharge_pipe_diameter': forms.NumberInput(attrs={ 'class': 'form-control', 'min': '0', - 'step': '1', 'required': True }), 'usage_type': forms.Select(attrs={ @@ -91,19 +90,18 @@ class InstallationReportForm(forms.ModelForm): 'motor_power': forms.NumberInput(attrs={ 'class': 'form-control', 'min': '0', - 'step': '1', 'required': True }), 'pre_calibration_flow_rate': forms.NumberInput(attrs={ 'class': 'form-control', 'min': '0', - 'step': '0.01', + 'step': '0.0001', 'required': True }), 'post_calibration_flow_rate': forms.NumberInput(attrs={ 'class': 'form-control', 'min': '0', - 'step': '0.01', + 'step': '0.0001', 'required': True }), 'water_meter_manufacturer': forms.Select(attrs={ diff --git a/installations/migrations/0008_alter_installationreport_post_calibration_flow_rate_and_more.py b/installations/migrations/0008_alter_installationreport_post_calibration_flow_rate_and_more.py new file mode 100644 index 0000000..b69ada5 --- /dev/null +++ b/installations/migrations/0008_alter_installationreport_post_calibration_flow_rate_and_more.py @@ -0,0 +1,23 @@ +# Generated by Django 5.2.4 on 2025-10-09 08:44 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('installations', '0007_installationreport_meter_model'), + ] + + operations = [ + migrations.AlterField( + model_name='installationreport', + name='post_calibration_flow_rate', + field=models.DecimalField(blank=True, decimal_places=4, max_digits=10, null=True, verbose_name='(لیتر بر ثانیه)دبی بعد از کالیبراسیون'), + ), + migrations.AlterField( + model_name='installationreport', + name='pre_calibration_flow_rate', + field=models.DecimalField(blank=True, decimal_places=4, max_digits=10, null=True, verbose_name='(لیتر بر ثانیه)دبی قبل از کالیبراسیون'), + ), + ] diff --git a/installations/models.py b/installations/models.py index 6cd48bd..e1e5850 100644 --- a/installations/models.py +++ b/installations/models.py @@ -62,8 +62,8 @@ class InstallationReport(BaseModel): usage_type = models.CharField(max_length=20, choices=USAGE_TYPE_CHOICES, null=True, verbose_name='نوع مصرف') exploitation_license_number = models.CharField(max_length=50, verbose_name='شماره پروانه بهره‌برداری چاه') motor_power = models.PositiveIntegerField(null=True, blank=True, verbose_name='(کیلووات ساعت) قدرت موتور') - pre_calibration_flow_rate = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True, verbose_name='(لیتر بر ثانیه)دبی قبل از کالیبراسیون') - post_calibration_flow_rate = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True, verbose_name='(لیتر بر ثانیه)دبی بعد از کالیبراسیون') + pre_calibration_flow_rate = models.DecimalField(max_digits=10, decimal_places=4, null=True, blank=True, verbose_name='(لیتر بر ثانیه)دبی قبل از کالیبراسیون') + post_calibration_flow_rate = models.DecimalField(max_digits=10, decimal_places=4, null=True, blank=True, verbose_name='(لیتر بر ثانیه)دبی بعد از کالیبراسیون') water_meter_manufacturer = models.ForeignKey('wells.WaterMeterManufacturer', on_delete=models.SET_NULL, null=True, blank=True, verbose_name='شرکت سازنده کنتور آب') sim_number = models.CharField(max_length=20, null=True, blank=True, verbose_name='شماره سیمکارت') driving_force = models.CharField(max_length=50, null=True, blank=True, verbose_name='نیرو محرکه چاه')