Filter by product in topic navigation.

This commit is contained in:
Tasos Katsoulas 2024-07-29 22:03:52 +03:00
Родитель 98a3902bed
Коммит 5f23b341ae
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 66D7743B4FCCFCBC
2 изменённых файлов: 20 добавлений и 17 удалений

Просмотреть файл

@ -24,21 +24,22 @@
{%- endmacro %}
{% macro product_dropdown(products, topic, selected_product=None) -%}
<h3 class="sidebar-subheading large-only">{{ _('Filter by product') }}</h3>
<nav class="sidebar-nav topics">
<span class="details-heading"></span>
<select id="products-topics-dropdown" class="sidebar-nav--dropdown">
<option value="{{ url('products.topic_documents', topic_slug=topic.slug) }}" {% if selected_product is none %}selected{% endif %}>
{{ _('All Products') }}
</option>
{% for product in products %}
<option value="{{ url('products.topic_product_documents', topic_slug=topic.slug, product_slug=product.slug) }}"
{% if selected_product == product %}selected{% endif %}>
{{ pgettext('DB: products.Product.title', product.title) }}
</option>
{% endfor %}
</select>
</nav>
{% if products|length > 1 %}
<h3 class="sidebar-subheading large-only">{{ _('Filter by product') }}</h3>
<nav class="sidebar-nav topics">
<span class="details-heading"></span>
<select id="products-topics-dropdown" class="sidebar-nav--dropdown">
<option value="{{ url('products.topic_documents', topic_slug=topic.slug) }}" {% if selected_product is none %}selected{% endif %}>
{{ _('All Products') }}
</option>
{% for product in products %}
<option value="{{ url('products.topic_product_documents', topic_slug=topic.slug, product_slug=product.slug) }}"
{% if selected_product == product %}selected{% endif %}>
{{ pgettext('DB: products.Product.title', product.title) }}
</option>
{% endfor %}
</select>
</nav>
{% endif %}
{%- endmacro %}

Просмотреть файл

@ -117,6 +117,7 @@ def document_listing(request, topic_slug, product_slug=None, subtopic_slug=None)
subtopic = None
topic_list = []
product_topics = []
relevant_products = []
topic_kw = {
"slug": topic_slug,
"visible": True,
@ -137,6 +138,7 @@ def document_listing(request, topic_slug, product_slug=None, subtopic_slug=None)
.values("id")[:1]
)
topic_list = Topic.active.filter(id__in=Subquery(topic_subquery))
relevant_products = Product.active.filter(m2m_topics=topic)
else:
topic = get_object_or_404(Topic, slug=topic_slug, product=product, parent__isnull=True)
product_topics = topics_for(request.user, product=product, parent=None)
@ -171,6 +173,6 @@ def document_listing(request, topic_slug, product_slug=None, subtopic_slug=None)
"search_params": {"product": product_slug},
"topic_navigation": topic_navigation,
"topic_list": topic_list,
"products": Product.active.filter(topics__in=product_topics),
"products": relevant_products,
},
)