summaryrefslogtreecommitdiff
path: root/archaeological_finds/models_treatments.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_finds/models_treatments.py')
-rw-r--r--archaeological_finds/models_treatments.py18
1 files changed, 17 insertions, 1 deletions
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 = {