diff --git a/tildes/tildes/schemas/listing.py b/tildes/tildes/schemas/listing.py
index c11508f..4cdc783 100644
--- a/tildes/tildes/schemas/listing.py
+++ b/tildes/tildes/schemas/listing.py
@@ -35,6 +35,7 @@ class TopicListingSchema(PaginatedListingSchema):
order = Enum(TopicSortOption, missing=None)
tag = Ltree(missing=None)
unfiltered = Boolean(missing=False)
+ all_subgroups = Boolean(missing=False)
rank_start = Integer(data_key="n", validate=Range(min=1), missing=None)
@pre_load
diff --git a/tildes/tildes/templates/topic_listing.jinja2 b/tildes/tildes/templates/topic_listing.jinja2
index 5d0a1c0..8d17477 100644
--- a/tildes/tildes/templates/topic_listing.jinja2
+++ b/tildes/tildes/templates/topic_listing.jinja2
@@ -101,6 +101,25 @@
{% block filter_info %}
+
+{% if request.context is group %}
+ {% set is_single_group = True %}
+{% else %}
+ {% set is_single_group = False %}
+{% endif %}
+
+{% if is_single_group and subgroups %}
+
+{% endif %}
+
{% if tag %}
{% if is_single_group %}
diff --git a/tildes/tildes/views/topic.py b/tildes/tildes/views/topic.py
index 0d59776..b6be6ff 100644
--- a/tildes/tildes/views/topic.py
+++ b/tildes/tildes/views/topic.py
@@ -156,6 +156,7 @@ def get_group_topics( # noqa
per_page: int,
rank_start: Optional[int],
tag: Optional[Ltree],
+ all_subgroups: bool,
unfiltered: bool,
**kwargs: Any
) -> dict:
@@ -181,6 +182,11 @@ def get_group_topics( # noqa
# otherwise, just topics from the single group that we're looking at
groups = [request.context]
+ groups.extend([
+ sub.group for sub in request.user.subscriptions
+ if sub.group.is_subgroup_of(request.context)
+ ])
+
subgroups = (
request.query(Group)
.filter(
@@ -207,7 +213,9 @@ def get_group_topics( # noqa
query = (
request.query(Topic)
.join_all_relationships()
- .inside_groups(groups, include_subgroups=not is_home_page)
+ .inside_groups(
+ groups, include_subgroups=not is_home_page and all_subgroups
+ )
.exclude_ignored()
.apply_sort_option(order)
)
@@ -315,6 +323,7 @@ def get_group_topics( # noqa
),
"rank_start": rank_start,
"tag": tag,
+ "all_subgroups": all_subgroups,
"unfiltered": unfiltered,
"wiki_pages": wiki_pages,
"wiki_has_index": wiki_has_index,