diff options
| -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:  | 
