summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_warehouse/management/commands/migrate_to_new_container_management.py13
-rw-r--r--archaeological_warehouse/models.py6
2 files changed, 14 insertions, 5 deletions
diff --git a/archaeological_warehouse/management/commands/migrate_to_new_container_management.py b/archaeological_warehouse/management/commands/migrate_to_new_container_management.py
index d8f701793..44895ce69 100644
--- a/archaeological_warehouse/management/commands/migrate_to_new_container_management.py
+++ b/archaeological_warehouse/management/commands/migrate_to_new_container_management.py
@@ -87,8 +87,17 @@ class Command(BaseCommand):
ref].append(division.reference.strip())
parent = new_container
if parent:
- container.parent = parent
- container.save()
+ q = models.Container.objects.filter(
+ location=container.location,
+ container_type=container.container_type,
+ parent=parent,
+ reference=container.reference).exclude(pk=container.pk)
+ if q.count():
+ other = q.all()[0]
+ other.merge(container)
+ else:
+ container.parent = parent
+ container.save()
data.append((container.id, str(container.responsible),
container.reference, cached_division,
container._generate_cached_division()))
diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py
index 41ec901a4..951830d95 100644
--- a/archaeological_warehouse/models.py
+++ b/archaeological_warehouse/models.py
@@ -452,10 +452,10 @@ class ContainerTree(models.Model):
ORDER BY y.container_id, y.container_parent_id;
-- deactivate deletion
- CREATE RULE container_tree_del AS
- ON DELETE TO container_tree
- DO INSTEAD DELETE FROM archaeological_warehouse_container where id=NULL;
CREATE RULE containers_tree_del AS
+ ON DELETE TO containers_tree
+ DO INSTEAD DELETE FROM archaeological_warehouse_container where id=NULL;
+ CREATE RULE container_tree_del AS
ON DELETE TO container_tree
DO INSTEAD DELETE FROM archaeological_warehouse_container where id=NULL;
"""