diff options
| 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 | 
| commit | 24af25278bff6927e0d442f537efeb6c7bf7182c (patch) | |
| tree | 7e3804a3de1bd2ca6e18a3e557036a4d4ef3afe4 /archaeological_context_records/models.py | |
| parent | f5680038fdd0bb230c160fd4df3d2c1deab07faf (diff) | |
| download | Ishtar-24af25278bff6927e0d442f537efeb6c7bf7182c.tar.bz2 Ishtar-24af25278bff6927e0d442f537efeb6c7bf7182c.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.py | 24 | 
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: | 
