Initialize clean CSR inventory repository
This commit is contained in:
67
inventory/migrations/0007_workflow_tasks.py
Normal file
67
inventory/migrations/0007_workflow_tasks.py
Normal file
@@ -0,0 +1,67 @@
|
||||
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),
|
||||
]
|
||||
Reference in New Issue
Block a user