diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-05-14 16:12:21 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-06-17 13:21:28 +0200 |
commit | d9d5223d34083900b1eb66fcb4c70d3e23ae24d1 (patch) | |
tree | 634b407ea8c7b7b778c485744fcea9ac493f5541 /ishtar_common/views_item.py | |
parent | 60d7d9edb2fe286fd6c1cf47b6df04cdadcc8a7c (diff) | |
download | Ishtar-d9d5223d34083900b1eb66fcb4c70d3e23ae24d1.tar.bz2 Ishtar-d9d5223d34083900b1eb66fcb4c70d3e23ae24d1.zip |
Statistics - JS and templates to manage graphs and tables
Diffstat (limited to 'ishtar_common/views_item.py')
-rw-r--r-- | ishtar_common/views_item.py | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index 145c56ca4..5b32a5fce 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -1207,19 +1207,29 @@ def _get_data_from_query_old(items, query_table_cols, request, def _get_json_stats(items, stats_sum_variable, stats_modality_1, stats_modality_2): - q = items.values(stats_modality_1, stats_modality_2) + if stats_modality_2: + q = items.values(stats_modality_1, stats_modality_2) + else: + q = items.values(stats_modality_1) if stats_sum_variable == 'pk': q = q.annotate(sum=Count('pk')) else: q = q.annotate(sum=Sum(stats_sum_variable)) data = [] - for values in q.order_by(stats_modality_1, stats_modality_2).all(): - modality_1 = values[stats_modality_1] - if not data or data[-1][0] != modality_1: - data.append([modality_1, []]) - data[-1][1].append( - (values[stats_modality_2], values["sum"]) - ) + if stats_modality_2 and stats_modality_2 != stats_modality_1: + q = q.order_by(stats_modality_1, stats_modality_2) + for values in q.all(): + modality_1 = values[stats_modality_1] + if not data or data[-1][0] != modality_1: + data.append([modality_1, []]) + data[-1][1].append( + (values[stats_modality_2], values["sum"]) + ) + else: + q = q.order_by(stats_modality_1) + for values in q.all(): + modality_1 = values[stats_modality_1] + data.append([modality_1, values["sum"]]) data = json.dumps({"data": data}) return HttpResponse(data, content_type='application/json') @@ -1634,9 +1644,8 @@ def get_item(model, func_name, default_name, extra_request_keys=None, if not stats_modality_1 or \ stats_modality_1 not in model.STATISTIC_MODALITIES: stats_modality_1 = model.STATISTIC_MODALITIES[0] - if not stats_modality_2 or \ - stats_modality_2 not in model.STATISTIC_MODALITIES: - stats_modality_2 = model.STATISTIC_MODALITIES[1] + if stats_modality_2 not in model.STATISTIC_MODALITIES: + stats_modality_2 = None stats_sum_variable = request_items.get('stats_sum_variable', None) stats_sum_variable_keys = list(model.STATISTIC_SUM_VARIABLE.keys()) if not stats_sum_variable or \ |