huge fix
This commit is contained in:
		
							parent
							
								
									810c87e2e0
								
							
						
					
					
						commit
						b5bf3a5dbe
					
				
					 51 changed files with 2397 additions and 326 deletions
				
			
		| 
						 | 
				
			
			@ -104,7 +104,8 @@ class WellForm(forms.ModelForm):
 | 
			
		|||
            }),
 | 
			
		||||
            'reference_letter_number': forms.TextInput(attrs={
 | 
			
		||||
                'class': 'form-control',
 | 
			
		||||
                'placeholder': 'شماره معرفی نامه'
 | 
			
		||||
                'placeholder': 'شماره معرفی نامه',
 | 
			
		||||
                'required': True
 | 
			
		||||
            }),
 | 
			
		||||
            'reference_letter_date': forms.DateInput(attrs={
 | 
			
		||||
                'class': 'form-control',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										33
									
								
								wells/migrations/0002_alter_historicalwell_utm_x_and_more.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								wells/migrations/0002_alter_historicalwell_utm_x_and_more.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,33 @@
 | 
			
		|||
# Generated by Django 5.2.4 on 2025-09-21 07:37
 | 
			
		||||
 | 
			
		||||
from django.db import migrations, models
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Migration(migrations.Migration):
 | 
			
		||||
 | 
			
		||||
    dependencies = [
 | 
			
		||||
        ('wells', '0001_initial'),
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    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='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'),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,113 @@
 | 
			
		|||
# Generated by Django 5.2.4 on 2025-09-24 11:07
 | 
			
		||||
 | 
			
		||||
from django.db import migrations, models
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Migration(migrations.Migration):
 | 
			
		||||
 | 
			
		||||
    dependencies = [
 | 
			
		||||
        ('wells', '0002_alter_historicalwell_utm_x_and_more'),
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    operations = [
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='historicalwell',
 | 
			
		||||
            name='discharge_pipe_diameter',
 | 
			
		||||
            field=models.PositiveIntegerField(blank=True, null=True, verbose_name='قطر لوله آبده (اینچ)'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='historicalwell',
 | 
			
		||||
            name='driving_force',
 | 
			
		||||
            field=models.CharField(blank=True, max_length=50, null=True, verbose_name='نیرو محرکه چاه'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='historicalwell',
 | 
			
		||||
            name='exploitation_license_number',
 | 
			
		||||
            field=models.CharField(blank=True, max_length=50, null=True, verbose_name='شماره پروانه بهره\u200cبرداری چاه'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='historicalwell',
 | 
			
		||||
            name='meter_size',
 | 
			
		||||
            field=models.CharField(blank=True, max_length=50, null=True, verbose_name='سایز کنتور'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='historicalwell',
 | 
			
		||||
            name='meter_type',
 | 
			
		||||
            field=models.CharField(blank=True, choices=[('smart', 'هوشمند (آبی/برق)'), ('volumetric', 'حجمی')], max_length=20, null=True, verbose_name='نوع کنتور'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='historicalwell',
 | 
			
		||||
            name='motor_power',
 | 
			
		||||
            field=models.PositiveIntegerField(blank=True, null=True, verbose_name='(کیلووات ساعت)قدرت موتور'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='historicalwell',
 | 
			
		||||
            name='post_calibration_flow_rate',
 | 
			
		||||
            field=models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='(لیتر بر ثانیه)دبی بعد از کالیبراسیون'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='historicalwell',
 | 
			
		||||
            name='pre_calibration_flow_rate',
 | 
			
		||||
            field=models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='(لیتر بر ثانیه)دبی قبل از کالیبراسیون'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='historicalwell',
 | 
			
		||||
            name='sim_number',
 | 
			
		||||
            field=models.CharField(blank=True, max_length=20, null=True, verbose_name='شماره سیمکارت'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='historicalwell',
 | 
			
		||||
            name='usage_type',
 | 
			
		||||
            field=models.CharField(blank=True, choices=[('domestic', 'شرب و خدمات'), ('agriculture', 'کشاورزی'), ('industrial', 'صنعتی')], max_length=20, null=True, verbose_name='نوع مصرف'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='well',
 | 
			
		||||
            name='discharge_pipe_diameter',
 | 
			
		||||
            field=models.PositiveIntegerField(blank=True, null=True, verbose_name='قطر لوله آبده (اینچ)'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='well',
 | 
			
		||||
            name='driving_force',
 | 
			
		||||
            field=models.CharField(blank=True, max_length=50, null=True, verbose_name='نیرو محرکه چاه'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='well',
 | 
			
		||||
            name='exploitation_license_number',
 | 
			
		||||
            field=models.CharField(blank=True, max_length=50, null=True, verbose_name='شماره پروانه بهره\u200cبرداری چاه'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='well',
 | 
			
		||||
            name='meter_size',
 | 
			
		||||
            field=models.CharField(blank=True, max_length=50, null=True, verbose_name='سایز کنتور'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='well',
 | 
			
		||||
            name='meter_type',
 | 
			
		||||
            field=models.CharField(blank=True, choices=[('smart', 'هوشمند (آبی/برق)'), ('volumetric', 'حجمی')], max_length=20, null=True, verbose_name='نوع کنتور'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='well',
 | 
			
		||||
            name='motor_power',
 | 
			
		||||
            field=models.PositiveIntegerField(blank=True, null=True, verbose_name='(کیلووات ساعت)قدرت موتور'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='well',
 | 
			
		||||
            name='post_calibration_flow_rate',
 | 
			
		||||
            field=models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='(لیتر بر ثانیه)دبی بعد از کالیبراسیون'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='well',
 | 
			
		||||
            name='pre_calibration_flow_rate',
 | 
			
		||||
            field=models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='(لیتر بر ثانیه)دبی قبل از کالیبراسیون'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='well',
 | 
			
		||||
            name='sim_number',
 | 
			
		||||
            field=models.CharField(blank=True, max_length=20, null=True, verbose_name='شماره سیمکارت'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='well',
 | 
			
		||||
            name='usage_type',
 | 
			
		||||
            field=models.CharField(blank=True, choices=[('domestic', 'شرب و خدمات'), ('agriculture', 'کشاورزی'), ('industrial', 'صنعتی')], max_length=20, null=True, verbose_name='نوع مصرف'),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,93 @@
 | 
			
		|||
# Generated by Django 5.2.4 on 2025-09-24 11:15
 | 
			
		||||
 | 
			
		||||
from django.db import migrations
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Migration(migrations.Migration):
 | 
			
		||||
 | 
			
		||||
    dependencies = [
 | 
			
		||||
        ('wells', '0003_historicalwell_discharge_pipe_diameter_and_more'),
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    operations = [
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='historicalwell',
 | 
			
		||||
            name='discharge_pipe_diameter',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='historicalwell',
 | 
			
		||||
            name='driving_force',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='historicalwell',
 | 
			
		||||
            name='exploitation_license_number',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='historicalwell',
 | 
			
		||||
            name='meter_size',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='historicalwell',
 | 
			
		||||
            name='meter_type',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='historicalwell',
 | 
			
		||||
            name='motor_power',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='historicalwell',
 | 
			
		||||
            name='post_calibration_flow_rate',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='historicalwell',
 | 
			
		||||
            name='pre_calibration_flow_rate',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='historicalwell',
 | 
			
		||||
            name='sim_number',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='historicalwell',
 | 
			
		||||
            name='usage_type',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='well',
 | 
			
		||||
            name='discharge_pipe_diameter',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='well',
 | 
			
		||||
            name='driving_force',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='well',
 | 
			
		||||
            name='exploitation_license_number',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='well',
 | 
			
		||||
            name='meter_size',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='well',
 | 
			
		||||
            name='meter_type',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='well',
 | 
			
		||||
            name='motor_power',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='well',
 | 
			
		||||
            name='post_calibration_flow_rate',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='well',
 | 
			
		||||
            name='pre_calibration_flow_rate',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='well',
 | 
			
		||||
            name='sim_number',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='well',
 | 
			
		||||
            name='usage_type',
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
| 
						 | 
				
			
			@ -15,7 +15,7 @@ from processes.utils import scope_wells_queryset
 | 
			
		|||
from processes.models import ProcessInstance
 | 
			
		||||
 | 
			
		||||
@login_required
 | 
			
		||||
@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT])
 | 
			
		||||
@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT, UserRoles.WATER_RESOURCE_MANAGER])
 | 
			
		||||
def well_list(request):
 | 
			
		||||
    """نمایش لیست چاهها"""
 | 
			
		||||
    base = Well.objects.select_related(
 | 
			
		||||
| 
						 | 
				
			
			@ -40,7 +40,7 @@ def well_list(request):
 | 
			
		|||
 | 
			
		||||
@require_POST
 | 
			
		||||
@login_required
 | 
			
		||||
@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT])
 | 
			
		||||
@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT, UserRoles.WATER_RESOURCE_MANAGER])
 | 
			
		||||
def add_well_ajax(request):
 | 
			
		||||
    """AJAX endpoint for adding wells"""
 | 
			
		||||
    try:
 | 
			
		||||
| 
						 | 
				
			
			@ -98,7 +98,7 @@ def add_well_ajax(request):
 | 
			
		|||
 | 
			
		||||
@require_POST
 | 
			
		||||
@login_required
 | 
			
		||||
@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT])
 | 
			
		||||
@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT, UserRoles.WATER_RESOURCE_MANAGER])
 | 
			
		||||
def edit_well_ajax(request, well_id):
 | 
			
		||||
    """AJAX endpoint for editing wells"""
 | 
			
		||||
    well = get_object_or_404(Well, id=well_id)
 | 
			
		||||
| 
						 | 
				
			
			@ -154,7 +154,7 @@ def edit_well_ajax(request, well_id):
 | 
			
		|||
 | 
			
		||||
@require_POST
 | 
			
		||||
@login_required
 | 
			
		||||
@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT])
 | 
			
		||||
@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT, UserRoles.WATER_RESOURCE_MANAGER])
 | 
			
		||||
def delete_well(request, well_id):
 | 
			
		||||
    """حذف چاه"""
 | 
			
		||||
    well = get_object_or_404(Well, id=well_id)
 | 
			
		||||
| 
						 | 
				
			
			@ -199,7 +199,7 @@ def get_well_data(request, well_id):
 | 
			
		|||
 | 
			
		||||
@require_GET
 | 
			
		||||
@login_required
 | 
			
		||||
@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT])
 | 
			
		||||
@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT, UserRoles.WATER_RESOURCE_MANAGER])
 | 
			
		||||
def get_well_details(request, well_id):
 | 
			
		||||
    """جزئیات کامل چاه برای نمایش در مدال"""
 | 
			
		||||
    well = get_object_or_404(
 | 
			
		||||
| 
						 | 
				
			
			@ -260,7 +260,7 @@ def get_well_details(request, well_id):
 | 
			
		|||
 | 
			
		||||
@require_GET
 | 
			
		||||
@login_required
 | 
			
		||||
@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT])
 | 
			
		||||
@allowed_roles([UserRoles.ADMIN, UserRoles.BROKER, UserRoles.MANAGER, UserRoles.ACCOUNTANT, UserRoles.WATER_RESOURCE_MANAGER])
 | 
			
		||||
def get_well_requests(request, well_id):
 | 
			
		||||
    """سوابق درخواستهای مرتبط با یک چاه"""
 | 
			
		||||
    # Scoped access: reuse base scoping by filtering on ProcessInstance via broker/affairs of current user if needed
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue