diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-09-24 12:20:43 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-09-26 11:25:21 +0200 |
commit | 397435bff29c26a328d984d90492b79b3550e689 (patch) | |
tree | e141abbb3f3b1b7c41a0fcf3edc190b43069cdff | |
parent | defd93897c0999cacf72bcc992551c49b7cbde22 (diff) | |
download | Ishtar-397435bff29c26a328d984d90492b79b3550e689.tar.bz2 Ishtar-397435bff29c26a328d984d90492b79b3550e689.zip |
🩹 fix self context record relation creation
-rw-r--r-- | archaeological_context_records/models.py | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index 90f961c0a..c54256cf6 100644 --- a/archaeological_context_records/models.py +++ b/archaeological_context_records/models.py @@ -1392,8 +1392,9 @@ def context_record_post_save(sender, **kwargs): instance = kwargs.get("instance", None) if not instance or not instance.pk: return - if kwargs.get("created", False): # on creation: manage self relation - ContextRecordTree.update(instance.pk) + profile = get_current_profile() + if profile.parent_relations_engine == "T": + ContextRecordTree._update_self_relation(instance.pk) # on creation: manage self relation BaseFind = apps.get_model("archaeological_finds", "BaseFind") Find = apps.get_model("archaeological_finds", "Find") for bf in instance.base_finds.all(): @@ -1810,14 +1811,19 @@ class ContextRecordTree(RelationsViews): return set(keys) @classmethod - def _update(cls, item_id, already_updated=None): - all_relations = set() - if not ContextRecord.objects.filter(pk=item_id).count(): - return + def _update_self_relation(cls, item_id): # add self relation cls.objects.get_or_create( key=f"{item_id}_{item_id}", cr_id=item_id, cr_parent_id=item_id ) + + @classmethod + def _update(cls, item_id, already_updated=None): + all_relations = set() + if not ContextRecord.objects.filter(pk=item_id).count(): + return + if not already_updated: + cls._update_self_relation(item_id) all_relations.add((item_id, item_id)) current_relations_as_child = list( cls.objects.filter(cr_id=item_id).values_list("cr_parent_id", flat=True) |