diff --git a/src/core/models/badges.py b/src/core/models/badges.py index 1417a2d3a291a61ba4096f63a3cb73812c075261..f9e62844f626ca611da09cf301d5b0df49f8e713 100644 --- a/src/core/models/badges.py +++ b/src/core/models/badges.py @@ -67,18 +67,20 @@ def get_badge_filename(instance: 'Badge', filename: str): class BadgeManager(ConferenceManagerMixin['Badge']): def apply_public_filter(self, queryset: 'QuerySet[Badge]', member: ConferenceMember | None = None) -> 'QuerySet[Badge]': if member is None: - return queryset.filter(state=Badge.State.PUBLIC) - return queryset.filter(Q(state=Badge.State.PUBLIC) | Q(users__user=member.user)) + return queryset.filter(state=Badge.State.PUBLIC, issuing_assembly__state__in=Assembly.PUBLIC_STATES) + return queryset.filter(Q(state=Badge.State.PUBLIC, issuing_assembly__state__in=Assembly.PUBLIC_STATES) | Q(users__user=member.user)) def accessible_by_user(self, user: PlatformUser, conference: Conference, staff_can_manage=True) -> 'QuerySet[Badge]': if user is None or not user.is_authenticated: user = PlatformUser.get_anonymous_user() qs = self.get_queryset() if not user.is_authenticated: - return qs.filter(state=Badge.State.PUBLIC) + return qs.filter(state=Badge.State.PUBLIC, issuing_assembly__state__in=Assembly.PUBLIC_STATES) manageable = Assembly.objects.manageable_by_user(conference, user=user, staff_can_manage=staff_can_manage) - return qs.filter(Q(state=Badge.State.PUBLIC) | Q(users__user=user) | Q(issuing_assembly__in=manageable)) + return qs.filter( + Q(state=Badge.State.PUBLIC, issuing_assembly__state__in=Assembly.PUBLIC_STATES) | Q(users__user=user) | Q(issuing_assembly__in=manageable) + ) def get_badge_image_help_text() -> str: