101 lines
4.6 KiB
Python
101 lines
4.6 KiB
Python
|
|
"""
|
|||
|
|
Management command to seed initial irrigation methods.
|
|||
|
|
Run: python manage.py seed_irrigation_methods
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
from django.core.management.base import BaseCommand
|
|||
|
|
|
|||
|
|
from irrigation.models import IrrigationMethod
|
|||
|
|
|
|||
|
|
|
|||
|
|
INITIAL_METHODS = [
|
|||
|
|
{
|
|||
|
|
"name": "آبیاری قطرهای",
|
|||
|
|
"category": "موضعی",
|
|||
|
|
"description": "آب با دبی کم و بهصورت قطرهای مستقیماً به ریشه گیاه رسانده میشود. مناسبترین روش برای مناطق خشک و کمآب.",
|
|||
|
|
"water_efficiency_percent": 90.0,
|
|||
|
|
"water_pressure_required": "۱-۲ اتمسفر",
|
|||
|
|
"flow_rate": "۲-۸ لیتر در ساعت",
|
|||
|
|
"coverage_area": "بسته به طراحی سیستم",
|
|||
|
|
"soil_type": "تمام انواع خاک",
|
|||
|
|
"climate_suitability": "گرم و خشک",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"name": "آبیاری بارانی",
|
|||
|
|
"category": "تحت فشار",
|
|||
|
|
"description": "آب تحت فشار از طریق آبپاشها بهصورت قطرات ریز مانند باران پخش میشود.",
|
|||
|
|
"water_efficiency_percent": 75.0,
|
|||
|
|
"water_pressure_required": "۲-۴ اتمسفر",
|
|||
|
|
"flow_rate": "۵-۲۰ لیتر در دقیقه",
|
|||
|
|
"coverage_area": "۱۰-۳۰ متر شعاع پاشش",
|
|||
|
|
"soil_type": "لومی، لومی شنی",
|
|||
|
|
"climate_suitability": "معتدل، مرطوب",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"name": "آبیاری سطحی (غرقابی)",
|
|||
|
|
"category": "سطحی",
|
|||
|
|
"description": "آب در سطح زمین جاری شده و بهصورت ثقلی زمین را آبیاری میکند. سادهترین و قدیمیترین روش.",
|
|||
|
|
"water_efficiency_percent": 50.0,
|
|||
|
|
"water_pressure_required": "نیاز به فشار ندارد (ثقلی)",
|
|||
|
|
"flow_rate": "متغیر بر اساس شیب زمین",
|
|||
|
|
"coverage_area": "وابسته به اندازه کرت",
|
|||
|
|
"soil_type": "رسی، لومی رسی",
|
|||
|
|
"climate_suitability": "تمام اقلیمها (مناطق پرآب)",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"name": "آبیاری نشتی (تیپ)",
|
|||
|
|
"category": "موضعی",
|
|||
|
|
"description": "آب از طریق نوارهای تیپ با منافذ ریز بهصورت نشتی به خاک رسانده میشود.",
|
|||
|
|
"water_efficiency_percent": 85.0,
|
|||
|
|
"water_pressure_required": "۰.۵-۱.۵ اتمسفر",
|
|||
|
|
"flow_rate": "۱-۴ لیتر در ساعت به ازای هر متر",
|
|||
|
|
"coverage_area": "ردیفی، مناسب زراعت",
|
|||
|
|
"soil_type": "لومی، لومی شنی",
|
|||
|
|
"climate_suitability": "گرم و خشک",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"name": "آبیاری زیرسطحی",
|
|||
|
|
"category": "موضعی",
|
|||
|
|
"description": "لولههای آبیاری در زیر سطح خاک کار گذاشته شده و آب مستقیماً به منطقه ریشه میرسد.",
|
|||
|
|
"water_efficiency_percent": 95.0,
|
|||
|
|
"water_pressure_required": "۱-۲ اتمسفر",
|
|||
|
|
"flow_rate": "۱-۴ لیتر در ساعت",
|
|||
|
|
"coverage_area": "بسته به طراحی",
|
|||
|
|
"soil_type": "لومی، لومی رسی",
|
|||
|
|
"climate_suitability": "تمام اقلیمها",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"name": "آبیاری بابلر",
|
|||
|
|
"category": "موضعی",
|
|||
|
|
"description": "آب با دبی بیشتر از قطرهای ولی کمتر از بارانی، بهصورت حبابی در پای درخت پخش میشود. مناسب درختان میوه.",
|
|||
|
|
"water_efficiency_percent": 80.0,
|
|||
|
|
"water_pressure_required": "۱-۲ اتمسفر",
|
|||
|
|
"flow_rate": "۸-۶۰ لیتر در ساعت",
|
|||
|
|
"coverage_area": "شعاع ۱-۲ متر اطراف درخت",
|
|||
|
|
"soil_type": "لومی، لومی رسی",
|
|||
|
|
"climate_suitability": "گرم و خشک",
|
|||
|
|
},
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
|
|||
|
|
class Command(BaseCommand):
|
|||
|
|
help = "Seed initial irrigation methods (6 common methods)"
|
|||
|
|
|
|||
|
|
def handle(self, *args, **options):
|
|||
|
|
created_count = 0
|
|||
|
|
for method_data in INITIAL_METHODS:
|
|||
|
|
_, created = IrrigationMethod.objects.get_or_create(
|
|||
|
|
name=method_data["name"],
|
|||
|
|
defaults=method_data,
|
|||
|
|
)
|
|||
|
|
if created:
|
|||
|
|
created_count += 1
|
|||
|
|
self.stdout.write(
|
|||
|
|
self.style.SUCCESS(f" Created: {method_data['name']}")
|
|||
|
|
)
|
|||
|
|
self.stdout.write(
|
|||
|
|
self.style.SUCCESS(
|
|||
|
|
f"\nDone. Created {created_count} new irrigation methods."
|
|||
|
|
)
|
|||
|
|
)
|