diff options
| 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 | 
| commit | 7f98a4e7d80f7ebba5568447db9bdef33c37c54f (patch) | |
| tree | f4d8486c54d5badc74cd536f5875e085da1f5e7d | |
| parent | 8fd611a4a28fcdf150b53aa3e5157038ce57fa42 (diff) | |
| download | Ishtar-7f98a4e7d80f7ebba5568447db9bdef33c37c54f.tar.bz2 Ishtar-7f98a4e7d80f7ebba5568447db9bdef33c37c54f.zip  | |
🐛 imports - linking: delete irrelevant keys
| -rw-r--r-- | changelog/en/changelog_2022-06-15.md | 4 | ||||
| -rw-r--r-- | changelog/fr/changelog_2023-01-25.md | 4 | ||||
| -rw-r--r-- | ishtar_common/data_importer.py | 15 | 
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:  | 
