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 | cba7cfcb6cab18bcf738dfa7effd6656371cb3f7 (patch) | |
tree | f75751af60131cc704270c0b4dc3c52e8957f6a4 | |
parent | 8f97641c8c34d141b5910331c2db17a28c3968d1 (diff) | |
download | Ishtar-cba7cfcb6cab18bcf738dfa7effd6656371cb3f7.tar.bz2 Ishtar-cba7cfcb6cab18bcf738dfa7effd6656371cb3f7.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: |