summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_finds/models_finds.py4
-rw-r--r--archaeological_finds/models_treatments.py18
2 files changed, 20 insertions, 2 deletions
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py
index 93a3286bc..4c410f668 100644
--- a/archaeological_finds/models_finds.py
+++ b/archaeological_finds/models_finds.py
@@ -2848,7 +2848,9 @@ class Find(
def associated_treatment_files(self):
TreatmentFile = apps.get_model("archaeological_finds", "TreatmentFile")
return TreatmentFile.objects.filter(
- associated_basket__items__pk=self.pk
+ associated_basket_id__in=FindBasket.objects.filter(
+ items__pk=self.pk
+ ).values_list("pk", flat=True)
).order_by("reception_date", "creation_date", "end_date")
def associated_treatment_files_count(self):
diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py
index c7c4fcac9..9a9455ea1 100644
--- a/archaeological_finds/models_treatments.py
+++ b/archaeological_finds/models_treatments.py
@@ -113,6 +113,22 @@ class AssociatedFindBasket:
elif associated_basket and associated_basket.pk != self.associated_basket_id:
self.associated_basket_id = associated_basket.pk
+ @classmethod
+ def has_q_associated_basket_item_ids(cls):
+ # used by permission queries
+ return cls.objects.filter(
+ associated_basket_id__in=FindBasket.objects.filter(
+ items__pk__isnull=False).values_list("pk", flat=True)
+ )
+
+ @classmethod
+ def q_associated_basket_item_ids(cls, ids):
+ # used by permission queries
+ return cls.objects.filter(
+ associated_basket_id__in=FindBasket.objects.filter(
+ items__pk__in=ids
+ )
+ )
class Treatment(
@@ -1189,7 +1205,7 @@ class TreatmentFile(
]
UPPER_PERMISSIONS = [
(("archaeological_finds", "find"),
- "associated_basket__items__pk"),
+ "q_associated_basket_item_ids"),
]
# alternative names of fields for searches
ALT_NAMES = {