diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-04-12 14:56:52 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-04-12 14:56:52 +0200 |
commit | cd6cabc87e5cc6cd188188050fc009f88220d85d (patch) | |
tree | 9693ae76626bc1d11b50909a35170abc20fe3a63 /ishtar_common/views_item.py | |
parent | 5b5a8e2f2af0ddd9655012ba3f9ddfb69de640fd (diff) | |
download | Ishtar-cd6cabc87e5cc6cd188188050fc009f88220d85d.tar.bz2 Ishtar-cd6cabc87e5cc6cd188188050fc009f88220d85d.zip |
Statistics: add modification year modality
Diffstat (limited to 'ishtar_common/views_item.py')
-rw-r--r-- | ishtar_common/views_item.py | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index 31a16b672..5e689367b 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -29,6 +29,7 @@ from django.db.models import ( FileField, ) from django.db.models.fields import FieldDoesNotExist +from django.db.models.functions import ExtractYear from django.db.utils import ProgrammingError from django.forms.models import model_to_dict from django.http import HttpResponse @@ -1422,10 +1423,15 @@ def _format_modality(value): def _get_json_stats( items, stats_sum_variable, stats_modality_1, stats_modality_2, multiply=1 ): - if stats_modality_2: - q = items.values(stats_modality_1, stats_modality_2) - else: - q = items.values(stats_modality_1) + q = items + value_keys = [] + for stat in (stats_modality_1, stats_modality_2): + if not stat: + continue + if stat.endswith("__year"): + q = q.annotate(**{stat: ExtractYear(stat[:-len("__year")])}) + value_keys.append(stat) + q = q.values(*value_keys) if stats_sum_variable == "pk": q = q.annotate(sum=Count("pk")) else: |