diff options
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 |
commit | 64bbb0f222ccdb18d20b95d9c58c8228eca22f0b (patch) | |
tree | db7cc24e1a8d1a119cd78befac2165edbd3d6788 /ishtar_common/models_common.py | |
parent | a6bd637b8bf662d12d96609c018a4e6cb048ee2a (diff) | |
download | Ishtar-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.py | 16 |
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 |