From a846a49078299208356be0c377dc5902f2f74fec Mon Sep 17 00:00:00 2001 From: SilviaAmAm Date: Wed, 1 May 2024 16:26:16 +0200 Subject: [PATCH] :sparkles: [maykinmedia/archiefbeheercomponent#340] Added model for items and assignee --- .../0002_destructionlistassignee.py | 67 +++++++++++++++++++ .../openarchiefbeheer/destruction/models.py | 26 +++++++ 2 files changed, 93 insertions(+) create mode 100644 backend/src/openarchiefbeheer/destruction/migrations/0002_destructionlistassignee.py diff --git a/backend/src/openarchiefbeheer/destruction/migrations/0002_destructionlistassignee.py b/backend/src/openarchiefbeheer/destruction/migrations/0002_destructionlistassignee.py new file mode 100644 index 00000000..af2a20ab --- /dev/null +++ b/backend/src/openarchiefbeheer/destruction/migrations/0002_destructionlistassignee.py @@ -0,0 +1,67 @@ +# Generated by Django 4.2.11 on 2024-05-01 14:25 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ("destruction", "0001_initial"), + ] + + operations = [ + migrations.CreateModel( + name="DestructionListAssignee", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "order", + models.PositiveIntegerField( + db_index=True, editable=False, verbose_name="order" + ), + ), + ( + "assigned_on", + models.DateTimeField( + blank=True, null=True, verbose_name="assigned on" + ), + ), + ( + "destruction_list", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="assignees", + to="destruction.destructionlist", + verbose_name="destruction list", + ), + ), + ( + "user", + models.ForeignKey( + help_text="The user assigned to the destruction list.", + on_delete=django.db.models.deletion.PROTECT, + to=settings.AUTH_USER_MODEL, + verbose_name="user", + ), + ), + ], + options={ + "verbose_name": "destruction list assignee", + "verbose_name_plural": "destruction list assignees", + "ordering": ("order",), + "abstract": False, + "unique_together": {("destruction_list", "user")}, + }, + ), + ] diff --git a/backend/src/openarchiefbeheer/destruction/models.py b/backend/src/openarchiefbeheer/destruction/models.py index f22a62fd..057259f4 100644 --- a/backend/src/openarchiefbeheer/destruction/models.py +++ b/backend/src/openarchiefbeheer/destruction/models.py @@ -1,6 +1,8 @@ from django.db import models from django.utils.translation import gettext_lazy as _ +from ordered_model.models import OrderedModel + from openarchiefbeheer.destruction.constants import ListItemStatus, ListStatus @@ -96,3 +98,27 @@ class Meta: def __str__(self): return f"{self.destruction_list}: {self.zaak}" + + +class DestructionListAssignee(OrderedModel): + destruction_list = models.ForeignKey( + DestructionList, + on_delete=models.CASCADE, + related_name="assignees", + verbose_name=_("destruction list"), + ) + user = models.ForeignKey( + "accounts.User", + on_delete=models.PROTECT, + verbose_name=_("user"), + help_text=_("The user assigned to the destruction list."), + ) + assigned_on = models.DateTimeField(_("assigned on"), blank=True, null=True) + + class Meta(OrderedModel.Meta): + verbose_name = _("destruction list assignee") + verbose_name_plural = _("destruction list assignees") + unique_together = ("destruction_list", "user") + + def __str__(self): + return f"{self.user} ({self.destruction_list}, {self.order})"