summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2023-08-10 13:37:23 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2023-08-10 13:41:14 +0200
commit7f98a4e7d80f7ebba5568447db9bdef33c37c54f (patch)
treef4d8486c54d5badc74cd536f5875e085da1f5e7d
parent8fd611a4a28fcdf150b53aa3e5157038ce57fa42 (diff)
downloadIshtar-7f98a4e7d80f7ebba5568447db9bdef33c37c54f.tar.bz2
Ishtar-7f98a4e7d80f7ebba5568447db9bdef33c37c54f.zip
🐛 imports - linking: delete irrelevant keys
-rw-r--r--changelog/en/changelog_2022-06-15.md4
-rw-r--r--changelog/fr/changelog_2023-01-25.md4
-rw-r--r--ishtar_common/data_importer.py15
3 files changed, 18 insertions, 5 deletions
diff --git a/changelog/en/changelog_2022-06-15.md b/changelog/en/changelog_2022-06-15.md
index 91e2580d3..8b4bd116d 100644
--- a/changelog/en/changelog_2022-06-15.md
+++ b/changelog/en/changelog_2022-06-15.md
@@ -1,3 +1,7 @@
+### Technical ###
+- imports - linking: remove irrelevant keys
+
+
v4.0.55 - 2023-08-07
--------------------
diff --git a/changelog/fr/changelog_2023-01-25.md b/changelog/fr/changelog_2023-01-25.md
index 37928cbf7..6ff0d1bdc 100644
--- a/changelog/fr/changelog_2023-01-25.md
+++ b/changelog/fr/changelog_2023-01-25.md
@@ -1,3 +1,7 @@
+
+### Technique ###
+- imports - correspondance : suppression de clés non pertinentes
+
v4.0.55 - 2023-08-07
--------------------
diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py
index 673bcdde7..e8fe4e3c0 100644
--- a/ishtar_common/data_importer.py
+++ b/ishtar_common/data_importer.py
@@ -520,6 +520,7 @@ class StrChoiceFormater(Formater, ChoiceChecker):
for value in values:
new_values += r.split(value)
values = new_values
+ TargetKey = apps.get_model("ishtar_common", "TargetKey")
for value in set(values):
base_value = copy.copy(value)
value = self.prepare(value)
@@ -558,8 +559,6 @@ class StrChoiceFormater(Formater, ChoiceChecker):
else:
self.equiv_dict[value] = None
if self.equiv_dict[value] and self.db_target:
- from ishtar_common.models import TargetKey
-
q = {"target": self.db_target, "key": value}
query = TargetKey.objects.filter(**q)
query = query.filter(self._base_target_filter(user))
@@ -578,11 +577,17 @@ class StrChoiceFormater(Formater, ChoiceChecker):
except IntegrityError:
pass
if output == "db" and self.db_target:
- from ishtar_common.models import TargetKey
-
for missing in self.missings:
q = {"target": self.db_target, "key": missing}
query = TargetKey.objects.filter(**q)
+ query_clean = query.filter(
+ associated_import__isnull=True,
+ associated_user__isnull=True,
+ associated_group__isnull=True,
+ is_set=False
+ )
+ if query_clean.count(): # bad keys for this target
+ query_clean.delete()
query = query.filter(self._base_target_filter(user))
if query.count():
continue
@@ -795,7 +800,7 @@ class StrToBoolean(Formater, ChoiceChecker):
self.dct[value] = None
self.new_keys[value] = str(self.dct[value])
if output == "db" and self.db_target:
- from ishtar_common.models import TargetKey
+ TargetKey = apps.get_model("ishtar_common", "TargetKey")
for missing in self.missings:
try: