diff --git a/aleksis/core/models.py b/aleksis/core/models.py index 872e4728f93dcb41179642b7d56fda4c66fef0da..28192ebd5c0331f046a2b1a3c64b321a6e7f3493 100644 --- a/aleksis/core/models.py +++ b/aleksis/core/models.py @@ -290,10 +290,19 @@ class Announcement(models.Model): recipient = GenericForeignKey("content_type", "recipient_id") @classmethod - def relevant_for(cls, obj: models.Model) -> models.QuerySet: - """ Get a QuerySet with all announcements relevant for a certain Model (e.g. a Group) """ + def relevant_for(cls, obj: Union[models.Model, models.QuerySet]) -> models.QuerySet: + """ Get a QuerySet with all announcements relevant for a certain Model (e.g. a Group) + or a set of models in a QuerySet. + """ + + if isinstance(obj, models.QuerySet): + ct = ContentType.objects.get_for_model(obj.model) + pks = list(obj.values_list('pk', flat=True)) + else: + ct = ContentType.objects.get_for_model(obj) + pks = [obj.pk] - return cls.objects.filter(content_type=ContentType.objects.get_for_model(obj), recipient_id=obj.id) + return cls.objects.filter(content_type=ct, recipient_id__in=pks) @property def recipient_persons(self) -> Union[models.QuerySet, Sequence[models.Model]]: