summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commit397435bff29c26a328d984d90492b79b3550e689 (patch)
treee141abbb3f3b1b7c41a0fcf3edc190b43069cdff
parentdefd93897c0999cacf72bcc992551c49b7cbde22 (diff)
downloadIshtar-397435bff29c26a328d984d90492b79b3550e689.tar.bz2
Ishtar-397435bff29c26a328d984d90492b79b3550e689.zip
🩹 fix self context record relation creation
-rw-r--r--archaeological_context_records/models.py18
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)