diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-05-23 21:52:31 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-05-23 22:37:16 +0200 |
commit | 9122bc96d1c755e55b65b0f2d9c48f55965e61a9 (patch) | |
tree | c3a081cd292900bd1edd7ce5ab11296ab8981bae | |
parent | 37f879d59734220e4760fda70ddacbf1629ff2bd (diff) | |
download | Ishtar-9122bc96d1c755e55b65b0f2d9c48f55965e61a9.tar.bz2 Ishtar-9122bc96d1c755e55b65b0f2d9c48f55965e61a9.zip |
Search: fix manual sort with None value
-rw-r--r-- | ishtar_common/views_item.py | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index 9ec62f511..0cb61eee2 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -2148,7 +2148,26 @@ def get_item( if type(col) in (list, tuple) and manual_sort_key in col: idx_col = idx + 1 if idx_col is not None: - datas = sorted(datas, key=lambda x: x[idx_col]) + null_value = None + for d in datas: + if isinstance(d[idx_col], (int, float)): + null_value = 0 + break + if isinstance(d[idx_col], str): + null_value = "" + break + if isinstance(d[idx_col], datetime.date): + null_value = datetime.date(1, 1, 1) + break + if isinstance(d[idx_col], datetime.datetime): + null_value = datetime.datetime(1, 1, 1) + break + if not null_value: + null_value = "" + datas = sorted( + datas, + key=lambda x: x[idx_col] if x[idx_col] is not None else null_value + ) if sign == "-": datas = reversed(datas) datas = list(datas)[start:end] |