summaryrefslogtreecommitdiff
path: root/archaeological_context_records/models.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2021-06-21 11:42:59 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2021-06-21 11:42:59 +0200
commit0a6b8708431eb45fcd426227fa7b54505d6eb668 (patch)
tree7e3804a3de1bd2ca6e18a3e557036a4d4ef3afe4 /archaeological_context_records/models.py
parentaa6033dea383be81c7ddef058d77f695ef8bea14 (diff)
downloadIshtar-0a6b8708431eb45fcd426227fa7b54505d6eb668.tar.bz2
Ishtar-0a6b8708431eb45fcd426227fa7b54505d6eb668.zip
Context records: auto generate relation tree on insert and update
Diffstat (limited to 'archaeological_context_records/models.py')
-rw-r--r--archaeological_context_records/models.py24
1 files changed, 21 insertions, 3 deletions
diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py
index 454e83e8a..5dfaa427a 100644
--- a/archaeological_context_records/models.py
+++ b/archaeological_context_records/models.py
@@ -1217,7 +1217,23 @@ class RecordRelations(GeneralRecordRelations, models.Model):
return self.left_record.uuid, self.right_record.uuid, self.relation_type.txt_idx
-post_delete.connect(post_delete_record_relation, sender=RecordRelations)
+def post_delete_cr_record_relation(sender, instance, **kwargs):
+ if getattr(sender, "_no_post_treatments", False):
+ return
+ post_delete_record_relation(sender, instance, **kwargs)
+ ContextRecordTree.update(instance.left_record_id)
+ ContextRecordTree.update(instance.right_record_id)
+
+
+def post_save_cr_record_relation(sender, instance, **kwargs):
+ if getattr(sender, "_no_post_treatments", False):
+ return
+ ContextRecordTree.update(instance.left_record_id)
+ ContextRecordTree.update(instance.right_record_id)
+
+
+post_delete.connect(post_delete_cr_record_relation, sender=RecordRelations)
+post_save.connect(post_save_cr_record_relation, sender=RecordRelations)
class RecordRelationView(models.Model):
@@ -1363,9 +1379,9 @@ class ContextRecordTree(RelationsViews):
cr_id integer NOT NULL,
cr_parent_id integer NOT NULL,
CONSTRAINT fk1_{table} FOREIGN KEY(cr_id)
- REFERENCES {fk_table}(id),
+ REFERENCES {fk_table}(id) ON DELETE CASCADE,
CONSTRAINT fk2_{table} FOREIGN KEY(cr_parent_id)
- REFERENCES {fk_table}(id)
+ REFERENCES {fk_table}(id) ON DELETE CASCADE
);
CREATE INDEX {table}_id ON {table} (cr_id);
CREATE INDEX {table}_parent_id ON {table} (cr_parent_id);
@@ -1377,11 +1393,13 @@ class ContextRecordTree(RelationsViews):
"archaeological_context_records.ContextRecord",
verbose_name=_("Context record"),
related_name="context_record_tree_parent",
+ on_delete=models.CASCADE
)
cr_parent = models.ForeignKey(
"archaeological_context_records.ContextRecord",
verbose_name=_("Context record parent"),
related_name="context_record_tree_child",
+ on_delete=models.CASCADE
)
class Meta: