summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_finds/tests.py18
-rw-r--r--ishtar_common/utils.py24
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: