diff --git a/src/core/models/base_managers.py b/src/core/models/base_managers.py
index 7afc9a73b718685c7a61aa195b78841ae0e838c6..651ba1c3bf0315b2a57647d3c30a82cb5bf2a8fc 100644
--- a/src/core/models/base_managers.py
+++ b/src/core/models/base_managers.py
@@ -169,6 +169,7 @@ class ConferenceManagerMixin(models.Manager, Generic[_ModelType]):
         member: ConferenceMember | None = None,
         only_manageable: bool | None = None,
         staff_can_manage: bool = True,
+        show_public: bool = False,
     ) -> QuerySet[_ModelType]:
         if not user and not member:
             raise ValueError('Either user or member must be given')
@@ -179,19 +180,18 @@ class ConferenceManagerMixin(models.Manager, Generic[_ModelType]):
         member = self.get_member(conference, user, member)
         qs = self.get_conference_queryset(conference)
         if not isinstance(member, ConferenceMember):
-            return qs.none()
+            return self.conference_accessible(conference=conference, member=member) if show_public else qs.none()
         if member.is_staff and staff_can_manage:
             if self.staff_permissions is None or (self.staff_permissions and member.has_staff_permission(*self.staff_permissions)):
                 return qs
-        return (
-            qs.filter(
-                id__in=self.apply_assembly_rights_filter(qs, member, only_manageable=only_manageable)
-                .values('id')
-                .union(self.apply_self_organized_rights_filter(qs, member, only_manageable=only_manageable).values('id'))
-            )
-            .select_related(*self.select_related_fields or [])
-            .prefetch_related(*self.prefetch_related_fields or [])
+        id_list = (
+            self.apply_assembly_rights_filter(qs, member, only_manageable=only_manageable)
+            .values('id')
+            .union(self.apply_self_organized_rights_filter(qs, member, only_manageable=only_manageable).values('id'))
         )
+        if show_public:
+            id_list = id_list.union(self.apply_public_filter(qs, member).values('id'))
+        return qs.filter(id__in=id_list).select_related(*self.select_related_fields or []).prefetch_related(*self.prefetch_related_fields or [])
 
     def associated_with_user(
         self,
@@ -200,6 +200,7 @@ class ConferenceManagerMixin(models.Manager, Generic[_ModelType]):
         user: 'PlatformUser | None' = None,
         member: ConferenceMember | None = None,
         staff_can_see: bool = True,
+        show_public: bool = False,
     ) -> QuerySet[_ModelType]:
         """Returns a queryset of objects that are accessible by the given user.
 
@@ -223,6 +224,7 @@ class ConferenceManagerMixin(models.Manager, Generic[_ModelType]):
             member=member,
             only_manageable=False,
             staff_can_manage=staff_can_see,
+            show_public=show_public,
         )
 
     def manageable_by_user(