Skip to content

Commit 67868ee

Browse files
authored
Filter products per aaq_configs (#6713)
1 parent 899e78d commit 67868ee

File tree

4 files changed

+23
-15
lines changed

4 files changed

+23
-15
lines changed

kitsune/llm/questions/classifiers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ def handle_spam(payload: dict[str, Any], spam_result: dict[str, Any]) -> dict[st
6262
if not ((action == ModerationAction.SPAM) and spam_result.get("maybe_misclassified")):
6363
return {"action": action, "product_result": {}}
6464

65-
payload["products"] = get_products(output_format="JSON")
65+
payload["products"] = get_products(only_with_forums=True, output_format="JSON")
6666
product_result = product_classification_chain.invoke(payload)
6767
new_product = product_result.get("product")
6868

kitsune/products/managers.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from typing import Any
2+
13
from django.db.models import Manager
24

35

@@ -8,12 +10,13 @@ def get_queryset(self):
810

911

1012
class ProductManager(NonArchivedManager):
11-
def with_question_forums(self, request):
12-
return (
13-
self.filter(
14-
aaq_configs__is_active=True,
15-
aaq_configs__enabled_locales__locale=request.LANGUAGE_CODE,
16-
)
17-
.filter(codename="")
18-
.distinct()
19-
)
13+
def with_question_forums(self, language_code: str = ""):
14+
15+
q_kwargs: dict[str, Any] = {
16+
"aaq_configs__is_active": True,
17+
}
18+
19+
if language_code:
20+
q_kwargs["aaq_configs__enabled_locales__locale"] = language_code
21+
22+
return self.filter(**q_kwargs).filter(codename="").distinct()

kitsune/products/utils.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,15 +81,20 @@ def get_topics(parent=None):
8181
return yaml.dump(result, indent=2, sort_keys=False)
8282

8383

84-
def get_products(output_format: str = "YAML") -> str:
84+
def get_products(only_with_forums: bool = False, output_format: str = "YAML") -> str:
8585
"""
8686
Returns the currently active products, each with their title and description,
8787
as a string in the output format requested (either "YAML" or "JSON").
8888
"""
8989
products: list[dict[str, str]] = []
9090
result = dict(products=products)
91+
products_qs = Product.active
9192

92-
for product in Product.active.filter(Q(visible=True) | Q(slug="mozilla-account")):
93+
if only_with_forums:
94+
products_qs = products_qs.with_question_forums()
95+
products_qs = products_qs.filter(Q(visible=True) | Q(slug="mozilla-account"))
96+
97+
for product in products_qs:
9398
products.append(
9499
dict(
95100
title=product.title,

kitsune/questions/views.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ def product_list(request):
125125
return render(
126126
request,
127127
"questions/product_list.html",
128-
{"products": Product.active.with_question_forums(request)},
128+
{"products": Product.active.with_question_forums(request.LANGUAGE_CODE)},
129129
)
130130

131131

@@ -170,7 +170,7 @@ def question_list(request, product_slug=None, topic_slug=None):
170170
request, messages.WARNING, "You cannot list all questions at this time."
171171
)
172172
return HttpResponseRedirect("/")
173-
products = Product.active.with_question_forums(request)
173+
products = Product.active.with_question_forums(request.LANGUAGE_CODE)
174174

175175
multiple = (len(products) > 1) or ("all" in product_slugs)
176176
product_with_aaq = False
@@ -450,7 +450,7 @@ def question_details(
450450

451451
extra_kwargs.update(ans_)
452452

453-
products = Product.active.with_question_forums(request)
453+
products = Product.active.with_question_forums(request.LANGUAGE_CODE)
454454
# Use get_hierarchical_topics instead of topics_for to match the moderate view
455455
topics = get_hierarchical_topics(question.product) if question.product else []
456456

0 commit comments

Comments
 (0)