Files
Ai/farm_data/management/commands/seed_sensor_parameters.py
2026-04-06 23:50:24 +03:30

71 lines
2.2 KiB
Python

"""
Management command to seed the 7 initial sensor parameters.
Run: python manage.py seed_sensor_parameters
"""
from django.core.management.base import BaseCommand
from farm_data.models import (
DEFAULT_SENSOR_DATA_TYPE,
DEFAULT_SENSOR_KEY,
ParameterUpdateLog,
SensorParameter,
)
INITIAL_PARAMETERS = [
("soil_moisture", "رطوبت خاک", "%"),
("soil_temperature", "دما خاک", "°C"),
("soil_ph", "pH خاک", ""),
("electrical_conductivity", "هدایت الکتریکی", "dS/m"),
("nitrogen", "ازت (N)", "mg/kg"),
("phosphorus", "فسفر", "mg/kg"),
("potassium", "پتاسیم", "mg/kg"),
]
class Command(BaseCommand):
help = "Seed 7 initial sensor parameters (soil_moisture, soil_temperature, etc.)"
def add_arguments(self, parser):
parser.add_argument(
"--sensor-key",
default=DEFAULT_SENSOR_KEY,
help='کلید سنسور مثل "sensor-7-1" یا "leaf-sensor"',
)
def handle(self, *args, **options):
sensor_key = options["sensor_key"]
created_count = 0
for code, name_fa, unit in INITIAL_PARAMETERS:
param, created = SensorParameter.objects.get_or_create(
sensor_key=sensor_key,
code=code,
defaults={
"name_fa": name_fa,
"unit": unit,
"data_type": DEFAULT_SENSOR_DATA_TYPE,
},
)
if created:
ParameterUpdateLog.objects.create(
parameter=param,
action="added",
payload={
"sensor_key": sensor_key,
"code": code,
"name_fa": name_fa,
"unit": unit,
},
)
created_count += 1
self.stdout.write(
self.style.SUCCESS(
f" Created: {sensor_key}.{code} ({name_fa})"
)
)
self.stdout.write(
self.style.SUCCESS(
f"\nDone. Created {created_count} new parameters for {sensor_key}."
)
)