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