summaryrefslogtreecommitdiff
path: root/ishtar_common/views_item.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/views_item.py')
-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: