diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-10-18 12:11:10 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-10-18 12:11:10 +0200 | 
| commit | 98b200c630474559eb13e48c173473bab7b3735b (patch) | |
| tree | f75751af60131cc704270c0b4dc3c52e8957f6a4 | |
| parent | c56e12387267e4cabb3b3e364bd60222134148c7 (diff) | |
| download | Ishtar-98b200c630474559eb13e48c173473bab7b3735b.tar.bz2 Ishtar-98b200c630474559eb13e48c173473bab7b3735b.zip  | |
ID generation: fix custom filters for jinja format
| -rw-r--r-- | archaeological_finds/tests.py | 18 | ||||
| -rw-r--r-- | ishtar_common/utils.py | 24 | 
2 files changed, 30 insertions, 12 deletions
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py index d0adc766a..c2979d074 100644 --- a/archaeological_finds/tests.py +++ b/archaeological_finds/tests.py @@ -958,6 +958,24 @@ class FindTest(FindInit, TestCase):          find.save()          find = models.Find.objects.get(pk=find.pk)          self.assertEqual(find.external_id, "pat-12345-a1-new-label-too-hop") +        # jinja 2 +        profile.find_external_id = ( +            "{{get_first_base_find__context_record__external_id}}-{{label}}-" +            "{{label}}" +        ) +        profile.save() +        find.save() +        find = models.Find.objects.get(pk=find.pk) +        self.assertEqual(find.external_id, "PAT-12345-A1-new-label-too-hop-hop") +        # jinja 2 + custom filters +        profile.find_external_id = ( +            "{{get_first_base_find__context_record__external_id}}-{{label}}-" +            "{{label}}||lower||deduplicate" +        ) +        profile.save() +        find.save() +        find = models.Find.objects.get(pk=find.pk) +        self.assertEqual(find.external_id, "pat-12345-a1-new-label-too-hop")      def testIndex(self):          profile = get_current_profile() diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py index ed183e4d1..e6283ae5e 100644 --- a/ishtar_common/utils.py +++ b/ishtar_common/utils.py @@ -2002,18 +2002,18 @@ def get_generated_id(key, item):          for key in set(key_list):              _update_gen_id_dct(item, dct, key)          tpl = Template(formula) -        return tpl.render(dct) - -    for fkey in PARSE_FORMULA.findall(formula): -        filtered = fkey.split("|") -        initial_key = fkey[:] -        fkey = filtered[0] -        filters = [] -        for filtr in filtered[1:]: -            if filtr in FORMULA_FILTERS: -                filters.append(FORMULA_FILTERS[filtr]) -        _update_gen_id_dct(item, dct, initial_key, fkey, filters=filters) -    values = formula.format(**dct).split("||") +        values = tpl.render(dct).split("||") +    else: +        for fkey in PARSE_FORMULA.findall(formula): +            filtered = fkey.split("|") +            initial_key = fkey[:] +            fkey = filtered[0] +            filters = [] +            for filtr in filtered[1:]: +                if filtr in FORMULA_FILTERS: +                    filters.append(FORMULA_FILTERS[filtr]) +            _update_gen_id_dct(item, dct, initial_key, fkey, filters=filters) +        values = formula.format(**dct).split("||")      value = values[0]      for filtr in values[1:]:          if filtr not in FORMULA_FILTERS:  | 
