68 lines
3.8 KiB
Python
68 lines
3.8 KiB
Python
from django.conf import settings
|
|
from django.db import migrations, models
|
|
import django.db.models.deletion
|
|
|
|
|
|
def initial_stages(apps, schema_editor):
|
|
Device = apps.get_model("inventory", "Device")
|
|
for device in Device.objects.select_related("status").iterator():
|
|
label = device.status.label.casefold()
|
|
if label == "ausgegeben":
|
|
stage = "ISSUED"
|
|
elif label in {"fertig", "reserviert"}:
|
|
stage = "STORAGE"
|
|
elif label == "defekt":
|
|
stage = "REPAIR"
|
|
else:
|
|
stage = "INTAKE"
|
|
Device.objects.filter(pk=device.pk).update(stage=stage)
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
dependencies = [
|
|
("inventory", "0006_device_revision"),
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
]
|
|
|
|
operations = [
|
|
migrations.AddField(
|
|
model_name="device", name="stage",
|
|
field=models.CharField(max_length=12, choices=[
|
|
("INTAKE", "Eingang"), ("INSPECTION", "Inspektion"),
|
|
("REPAIR", "Reparatur"), ("STORAGE", "Lagerung"), ("ISSUED", "Ausgegeben"),
|
|
], default="INTAKE", db_index=True),
|
|
),
|
|
migrations.CreateModel(
|
|
name="DeviceTask",
|
|
fields=[
|
|
("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
|
|
("created_at", models.DateTimeField(auto_now_add=True)),
|
|
("updated_at", models.DateTimeField(auto_now=True)),
|
|
("title", models.CharField(max_length=200)),
|
|
("description", models.TextField(blank=True)),
|
|
("state", models.CharField(max_length=8, choices=[("OPEN", "Offen"), ("DONE", "Erledigt")], default="OPEN", db_index=True)),
|
|
("completed_at", models.DateTimeField(null=True, blank=True)),
|
|
("due_date", models.DateField(null=True, blank=True)),
|
|
("assigned_to", models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=django.db.models.deletion.SET_NULL, related_name="assigned_device_tasks", null=True, blank=True)),
|
|
("completed_by", models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=django.db.models.deletion.SET_NULL, related_name="completed_device_tasks", null=True, blank=True)),
|
|
("created_by", models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=django.db.models.deletion.SET_NULL, related_name="created_device_tasks", null=True)),
|
|
("device", models.ForeignKey(to="inventory.device", on_delete=django.db.models.deletion.CASCADE, related_name="tasks")),
|
|
],
|
|
options={"ordering": ["state", "-created_at"]},
|
|
),
|
|
migrations.CreateModel(
|
|
name="WorkflowEvent",
|
|
fields=[
|
|
("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
|
|
("from_stage", models.CharField(max_length=12, choices=[("INTAKE", "Eingang"), ("INSPECTION", "Inspektion"), ("REPAIR", "Reparatur"), ("STORAGE", "Lagerung"), ("ISSUED", "Ausgegeben")], blank=True)),
|
|
("to_stage", models.CharField(max_length=12, choices=[("INTAKE", "Eingang"), ("INSPECTION", "Inspektion"), ("REPAIR", "Reparatur"), ("STORAGE", "Lagerung"), ("ISSUED", "Ausgegeben")])),
|
|
("note", models.CharField(max_length=500, blank=True)),
|
|
("created_at", models.DateTimeField(auto_now_add=True)),
|
|
("device", models.ForeignKey(to="inventory.device", on_delete=django.db.models.deletion.CASCADE, related_name="workflow_events")),
|
|
("user", models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=django.db.models.deletion.SET_NULL, null=True)),
|
|
],
|
|
options={"ordering": ["-created_at", "-id"]},
|
|
),
|
|
migrations.RunPython(initial_stages, migrations.RunPython.noop),
|
|
]
|