summaryrefslogtreecommitdiff
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
commit8cb99f12facad17d2367ac59d18578d5f14af572 (patch)
tree9693ae76626bc1d11b50909a35170abc20fe3a63
parent7cd34208b72ebe39b7b6e2178807b5c5548b9a27 (diff)
downloadIshtar-8cb99f12facad17d2367ac59d18578d5f14af572.tar.bz2
Ishtar-8cb99f12facad17d2367ac59d18578d5f14af572.zip
Statistics: add modification year modality
-rw-r--r--archaeological_context_records/models.py1
-rw-r--r--archaeological_finds/models_finds.py1
-rw-r--r--archaeological_operations/models.py2
-rw-r--r--ishtar_common/views_item.py14
4 files changed, 14 insertions, 4 deletions
diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py
index 83c2d6b43..6b26825be 100644
--- a/archaeological_context_records/models.py
+++ b/archaeological_context_records/models.py
@@ -453,6 +453,7 @@ class ContextRecord(
("activity__label", _("Activity")),
("excavation_technic__label", _("Excavation technique")),
("documents__source_type__label", _("Associated document type")),
+ ("last_modified__year", _("Modification (year)")),
]
)
STATISTIC_MODALITIES = [key for key, lbl in STATISTIC_MODALITIES_OPTIONS.items()]
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py
index 0e4e89745..d825a8bb2 100644
--- a/archaeological_finds/models_finds.py
+++ b/archaeological_finds/models_finds.py
@@ -1114,6 +1114,7 @@ class Find(
("alteration_causes__label", _("Alteration cause")),
("treatment_emergency__label", _("Treatment emergency")),
("documents__source_type__label", _("Associated document type")),
+ ("last_modified__year", _("Modification (year)")),
]
)
STATISTIC_MODALITIES = [key for key, lbl in STATISTIC_MODALITIES_OPTIONS.items()]
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index 691af56e1..7bc50d0b0 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -193,6 +193,7 @@ class ArchaeologicalSite(
("periods__label", _("Periods")),
("remains__label", _("Remains")),
("documents__source_type__label", _("Associated document type")),
+ ("last_modified__year", _("Modification (year)")),
]
)
STATISTIC_MODALITIES = [key for key, lbl in STATISTIC_MODALITIES_OPTIONS.items()]
@@ -813,6 +814,7 @@ class Operation(
("documentation_received", _("Documentation received")),
("finds_received", _("Finds received")),
("documents__source_type__label", _("Associated document type")),
+ ("last_modified__year", _("Modification (year)")),
]
)
STATISTIC_MODALITIES = [key for key, lbl in STATISTIC_MODALITIES_OPTIONS.items()]
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: