summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
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
commitcd6cabc87e5cc6cd188188050fc009f88220d85d (patch)
tree9693ae76626bc1d11b50909a35170abc20fe3a63 /ishtar_common
parent5b5a8e2f2af0ddd9655012ba3f9ddfb69de640fd (diff)
downloadIshtar-cd6cabc87e5cc6cd188188050fc009f88220d85d.tar.bz2
Ishtar-cd6cabc87e5cc6cd188188050fc009f88220d85d.zip
Statistics: add modification year modality
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/views_item.py14
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: