summaryrefslogtreecommitdiff
path: root/ishtar_common/models_common.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2021-11-02 18:19:03 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2021-11-16 17:04:41 +0100
commit64bbb0f222ccdb18d20b95d9c58c8228eca22f0b (patch)
treedb7cc24e1a8d1a119cd78befac2165edbd3d6788 /ishtar_common/models_common.py
parenta6bd637b8bf662d12d96609c018a4e6cb048ee2a (diff)
downloadIshtar-64bbb0f222ccdb18d20b95d9c58c8228eca22f0b.tar.bz2
Ishtar-64bbb0f222ccdb18d20b95d9c58c8228eca22f0b.zip
JSON types: multi valued choices
Diffstat (limited to 'ishtar_common/models_common.py')
-rw-r--r--ishtar_common/models_common.py16
1 files changed, 13 insertions, 3 deletions
diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py
index fe8e65bb1..dc078000e 100644
--- a/ishtar_common/models_common.py
+++ b/ishtar_common/models_common.py
@@ -1077,12 +1077,22 @@ class JsonData(models.Model, CachedGen):
q = cls.objects.filter(data__has_key=key[len("data__") :]).values_list(
"data", flat=True
)
+ multi = False
for value in q.all():
for k in splitted_key:
value = value[k]
- choices.add(value)
- choices = [("", "")] + [(v, v) for v in sorted(list(choices))]
- cache.set(cache_key, choices, settings.CACHE_SMALLTIMEOUT)
+ if isinstance(value, list):
+ multi = True
+ for v in value:
+ if v:
+ choices.add(v)
+ else:
+ choices.add(value)
+ c = []
+ if not multi:
+ c = [("", "")]
+ c += [(v, v) for v in sorted(list(choices))]
+ cache.set(cache_key, c, settings.CACHE_SMALLTIMEOUT)
return choices