diff --git a/apps/promotions/models.py b/apps/promotions/models.py index ae8c384..25d107f 100644 --- a/apps/promotions/models.py +++ b/apps/promotions/models.py @@ -136,9 +136,16 @@ class Plan(BaseModel): return self.title def get_configured_promotion_amount(self, user_uuid=None): + recipients = list(self.recipients.filter(recipient_uuid_field='->event:user')) #TODO: instead of hard code use better soloution + restricted_ids = [r.pk for r in recipients if r.access_type == RecipientTypeChoices.RESTRICTED] + allowed_ids = set( + AllowedUser.objects.filter(recipient_id__in=restricted_ids, user__uuid=user_uuid) + .values_list('recipient_id', flat=True) + ) if restricted_ids and user_uuid else set() + amount = 0 - for recipient in self.recipients.filter(recipient_uuid_field='->event:user'): #TODO: instead of hard code use better soloution - if not recipient.is_user_allowed(user_uuid): + for recipient in recipients: + if recipient.access_type == RecipientTypeChoices.RESTRICTED and recipient.pk not in allowed_ids: continue base_amount, promotion_amount = recipient.get_promotion_amount() amount += promotion_amount