126 lines
4.8 KiB
Python
126 lines
4.8 KiB
Python
from django.db import migrations, models
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
initial = True
|
|
|
|
dependencies = []
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name="SimulationScenario",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.BigAutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
("name", models.CharField(blank=True, default="", max_length=255)),
|
|
(
|
|
"scenario_type",
|
|
models.CharField(
|
|
choices=[
|
|
("single", "Single Simulation"),
|
|
("crop_comparison", "Crop Comparison"),
|
|
("fertilization_comparison", "Fertilization Comparison"),
|
|
],
|
|
db_index=True,
|
|
default="single",
|
|
max_length=64,
|
|
),
|
|
),
|
|
(
|
|
"model_name",
|
|
models.CharField(default="Wofost72_WLP_CWB", max_length=128),
|
|
),
|
|
(
|
|
"status",
|
|
models.CharField(
|
|
choices=[
|
|
("pending", "Pending"),
|
|
("running", "Running"),
|
|
("success", "Success"),
|
|
("failure", "Failure"),
|
|
],
|
|
db_index=True,
|
|
default="pending",
|
|
max_length=32,
|
|
),
|
|
),
|
|
("input_payload", models.JSONField(blank=True, default=dict)),
|
|
("result_payload", models.JSONField(blank=True, default=dict)),
|
|
("error_message", models.TextField(blank=True, default="")),
|
|
("created_at", models.DateTimeField(auto_now_add=True, db_index=True)),
|
|
("updated_at", models.DateTimeField(auto_now=True)),
|
|
],
|
|
options={
|
|
"ordering": ["-created_at"],
|
|
"verbose_name": "Simulation Scenario",
|
|
"verbose_name_plural": "Simulation Scenarios",
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="SimulationRun",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.BigAutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
("run_key", models.CharField(max_length=64)),
|
|
("label", models.CharField(max_length=255)),
|
|
(
|
|
"status",
|
|
models.CharField(
|
|
choices=[
|
|
("pending", "Pending"),
|
|
("running", "Running"),
|
|
("success", "Success"),
|
|
("failure", "Failure"),
|
|
],
|
|
db_index=True,
|
|
default="pending",
|
|
max_length=32,
|
|
),
|
|
),
|
|
("weather_payload", models.JSONField(blank=True, default=list)),
|
|
("soil_payload", models.JSONField(blank=True, default=dict)),
|
|
("crop_payload", models.JSONField(blank=True, default=dict)),
|
|
("site_payload", models.JSONField(blank=True, default=dict)),
|
|
("agromanagement_payload", models.JSONField(blank=True, default=list)),
|
|
("result_payload", models.JSONField(blank=True, default=dict)),
|
|
("error_message", models.TextField(blank=True, default="")),
|
|
("created_at", models.DateTimeField(auto_now_add=True)),
|
|
("updated_at", models.DateTimeField(auto_now=True)),
|
|
(
|
|
"scenario",
|
|
models.ForeignKey(
|
|
on_delete=models.deletion.CASCADE,
|
|
related_name="runs",
|
|
to="crop_simulation.simulationscenario",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"ordering": ["scenario_id", "id"],
|
|
"verbose_name": "Simulation Run",
|
|
"verbose_name_plural": "Simulation Runs",
|
|
},
|
|
),
|
|
migrations.AddConstraint(
|
|
model_name="simulationrun",
|
|
constraint=models.UniqueConstraint(
|
|
fields=("scenario", "run_key"),
|
|
name="crop_simulation_unique_run_key_per_scenario",
|
|
),
|
|
),
|
|
]
|