diff options
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: | 
