diff options
Diffstat (limited to 'archaeological_finds/models_treatments.py')
-rw-r--r-- | archaeological_finds/models_treatments.py | 18 |
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 = { |