Files
Ai/irrigation/management/commands/seed_irrigation_methods.py
T

101 lines
4.6 KiB
Python
Raw Normal View History

2026-03-19 22:54:29 +03:30
"""
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."
)
)