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), ]