def document_listing(request, template, product_slug, topic_slug, subtopic_slug=None): """The document listing page for a product + topic.""" product = get_object_or_404(Product, slug=product_slug) topic = get_object_or_404(Topic, slug=topic_slug, product=product, parent__isnull=True) doc_kw = {"locale": request.LANGUAGE_CODE, "products": [product]} if subtopic_slug is not None: subtopic = get_object_or_404(Topic, slug=subtopic_slug, product=product, parent=topic) doc_kw["topics"] = [subtopic] else: subtopic = None doc_kw["topics"] = [topic] documents, fallback_documents = documents_for(**doc_kw) user_agent = request.META.get("HTTP_USER_AGENT", "") browser = get_browser(user_agent) show_fx_download = product.slug == "thunderbird" and browser != "Firefox" return render( request, template, { "product": product, "topic": topic, "subtopic": subtopic, "topics": topics_for(product=product, parent=None), "subtopics": topics_for(product=product, parent=topic), "documents": documents, "fallback_documents": fallback_documents, "search_params": {"product": product_slug}, "show_fx_download": show_fx_download, }, )
def document_listing(request, template, product_slug, topic_slug, subtopic_slug=None): """The document listing page for a product + topic.""" product = get_object_or_404(Product, slug=product_slug) topic = get_object_or_404(Topic, slug=topic_slug, product=product, parent__isnull=True) doc_kw = {'locale': request.LANGUAGE_CODE, 'products': [product]} if subtopic_slug is not None: subtopic = get_object_or_404(Topic, slug=subtopic_slug, product=product, parent=topic) doc_kw['topics'] = [subtopic] else: subtopic = None doc_kw['topics'] = [topic] documents, fallback_documents = documents_for(**doc_kw) return render(request, template, { 'product': product, 'topic': topic, 'subtopic': subtopic, 'topics': topics_for(product=product, parent=None), 'subtopics': topics_for(product=product, parent=topic), 'documents': documents, 'fallback_documents': fallback_documents, 'search_params': {'product': product_slug} })
def document_listing(request, product_slug, topic_slug, subtopic_slug=None): """The document listing page for a product + topic.""" product = get_object_or_404(Product, slug=product_slug) topic = get_object_or_404( Topic, slug=topic_slug, product=product, parent__isnull=True ) template = "products/documents.html" doc_kw = {"locale": request.LANGUAGE_CODE, "products": [product]} if subtopic_slug is not None: subtopic = get_object_or_404( Topic, slug=subtopic_slug, product=product, parent=topic ) doc_kw["topics"] = [subtopic] else: subtopic = None doc_kw["topics"] = [topic] documents, fallback_documents = documents_for(**doc_kw) return render( request, template, { "product": product, "topic": topic, "subtopic": subtopic, "topics": topics_for(product=product, parent=None), "subtopics": topics_for(product=product, parent=topic), "documents": documents, "fallback_documents": fallback_documents, "search_params": {"product": product_slug}, }, )
def document_listing(request, template, product_slug, topic_slug, subtopic_slug=None): """The document listing page for a product + topic.""" product = get_object_or_404(Product, slug=product_slug) topic = get_object_or_404(Topic, slug=topic_slug, product=product, parent__isnull=True) doc_kw = {"locale": request.LANGUAGE_CODE, "products": [product]} if subtopic_slug is not None: subtopic = get_object_or_404(Topic, slug=subtopic_slug, product=product, parent=topic) doc_kw["topics"] = [subtopic] else: subtopic = None doc_kw["topics"] = [topic] documents, fallback_documents = documents_for(**doc_kw) return render( request, template, { "product": product, "topic": topic, "subtopic": subtopic, "topics": topics_for(products=[product], parent=None), "subtopics": topics_for(products=[product], parent=topic), "documents": documents, "fallback_documents": fallback_documents, "search_params": {"product": product_slug}, }, )
def document_listing(request, template, product_slug, topic_slug, subtopic_slug=None): """The document listing page for a product + topic.""" product = get_object_or_404(Product, slug=product_slug) topic = get_object_or_404(Topic, slug=topic_slug, product=product, parent__isnull=True) doc_kw = {'locale': request.LANGUAGE_CODE, 'products': [product]} if subtopic_slug is not None: subtopic = get_object_or_404(Topic, slug=subtopic_slug, product=product, parent=topic) doc_kw['topics'] = [subtopic] else: subtopic = None doc_kw['topics'] = [topic] documents, fallback_documents = documents_for(**doc_kw) user_agent = request.META.get('HTTP_USER_AGENT', '') browser = get_browser(user_agent) show_fx_download = (product.slug == 'thunderbird' and browser != 'Firefox') return render(request, template, { 'product': product, 'topic': topic, 'subtopic': subtopic, 'topics': topics_for(product=product, parent=None), 'subtopics': topics_for(product=product, parent=topic), 'documents': documents, 'fallback_documents': fallback_documents, 'search_params': {'product': product_slug}, 'show_fx_download': show_fx_download})
def hot_topics(request): """The hot topics landing page.""" topics = get_list_or_404(Topic, slug=HOT_TOPIC_SLUG) data = dict(topic=topics[0]) docs, fallback = documents_for(locale=request.LANGUAGE_CODE, topics=[topics[0]]) data.update(documents=docs, fallback_documents=fallback) return render(request, 'landings/hot.html', data)
def hot_topics(request): """The hot topics landing page.""" topic = get_object_or_404(Topic, slug='hot') data = dict(topic=topic) docs, fallback = documents_for( locale=request.LANGUAGE_CODE, topics=[topic]) data.update(documents=docs, fallback_documents=fallback) return render(request, 'landings/hot.html', data)
def _fallback_results(locale, product_slugs): """Return the top 20 articles by votes for the given product(s).""" products = [] for slug in product_slugs: try: p = Product.objects.get(slug=slug) products.append(p) except Product.DoesNotExist: pass docs, fallback = documents_for(locale, products=products) docs = docs + (fallback or []) return docs[:20]
def document_listing(request, template, product_slug, topic_slug, subtopic_slug=None): """The document listing page for a product + topic.""" product = get_object_or_404(Product, slug=product_slug) topic = get_object_or_404(Topic, slug=topic_slug, product=product, parent__isnull=True) doc_kw = {'locale': request.LANGUAGE_CODE, 'products': [product]} if subtopic_slug is not None: subtopic = get_object_or_404(Topic, slug=subtopic_slug, product=product, parent=topic) doc_kw['topics'] = [subtopic] else: subtopic = None doc_kw['topics'] = [topic] documents, fallback_documents = documents_for(**doc_kw) user_agent = request.META.get('HTTP_USER_AGENT', '') browser = get_browser(user_agent) show_fx_download = (product.slug == 'thunderbird' and browser != 'Firefox') return render( request, template, { 'product': product, 'topic': topic, 'subtopic': subtopic, 'topics': topics_for(product=product, parent=None), 'subtopics': topics_for(product=product, parent=topic), 'documents': documents, 'fallback_documents': fallback_documents, 'search_params': { 'product': product_slug }, 'show_fx_download': show_fx_download })
def product_landing(request, template, slug): """The product landing page.""" product = get_object_or_404(Product, slug=slug) if request.is_ajax(): # Return a list of topics/subtopics for the product topic_list = list() for t in Topic.objects.filter(product=product, visible=True): topic_list.append({'id': t.id, 'title': t.title}) return HttpResponse(json.dumps({'topics': topic_list}), mimetype='application/json') try: topic = Topic.objects.get(product=product, slug=HOT_TOPIC_SLUG) hot_docs, fallback_hot_docs = documents_for( locale=request.LANGUAGE_CODE, topics=[topic], products=[product]) except Topic.DoesNotExist: # "hot" topic doesn't exist, move on. hot_docs = fallback_hot_docs = None hot_questions = [] try: hot_tag = Tag.objects.get(slug=HOT_TOPIC_SLUG) if request.LANGUAGE_CODE in settings.AAQ_LANGUAGES: hot_questions = Question.objects.filter( locale=request.LANGUAGE_CODE, products=product, tags=hot_tag) hot_questions = hot_questions.order_by('-created')[:3] except Tag.DoesNotExist: pass return render( request, template, { 'product': product, 'products': Product.objects.filter(visible=True), 'topics': topics_for(products=[product], parent=None), 'hot_docs': hot_docs, 'hot_questions': hot_questions, 'fallback_hot_docs': fallback_hot_docs, 'search_params': { 'product': slug } })
def product_landing(request, template, slug): """The product landing page.""" product = get_object_or_404(Product, slug=slug) if request.is_ajax(): # Return a list of topics/subtopics for the product topic_list = list() for t in Topic.objects.filter(product=product, visible=True): topic_list.append({'id': t.id, 'title': t.title}) return HttpResponse(json.dumps({'topics': topic_list}), mimetype='application/json') try: topic = Topic.objects.get(product=product, slug=HOT_TOPIC_SLUG) hot_docs, fallback_hot_docs = documents_for( locale=request.LANGUAGE_CODE, topics=[topic], products=[product]) except Topic.DoesNotExist: # "hot" topic doesn't exist, move on. hot_docs = fallback_hot_docs = None hot_questions = [] try: hot_tag = Tag.objects.get(slug=HOT_TOPIC_SLUG) if request.LANGUAGE_CODE in settings.AAQ_LANGUAGES: hot_questions = Question.objects.filter( locale=request.LANGUAGE_CODE, products=product, tags=hot_tag) hot_questions = hot_questions.order_by('-created')[:3] except Tag.DoesNotExist: pass return render(request, template, { 'product': product, 'products': Product.objects.filter(visible=True), 'topics': topics_for(products=[product], parent=None), 'hot_docs': hot_docs, 'hot_questions': hot_questions, 'fallback_hot_docs': fallback_hot_docs, 'search_params': {'product': slug}})
def product_landing(request, template, slug): """The product landing page.""" product = get_object_or_404(Product, slug=slug) try: topic = Topic.objects.get(product=product, slug=HOT_TOPIC_SLUG) hot_docs, fallback_hot_docs = documents_for( locale=request.LANGUAGE_CODE, topics=[topic], products=[product]) except Topic.DoesNotExist: # "hot" topic doesn't exist, move on. hot_docs = fallback_hot_docs = None hot_questions = [] try: hot_tag = Tag.objects.get(slug=HOT_TOPIC_SLUG) if request.LANGUAGE_CODE in settings.AAQ_LANGUAGES: hot_questions = Question.objects.filter( locale=request.LANGUAGE_CODE, products=product, tags=hot_tag) hot_questions = hot_questions.order_by('-created')[:3] except Tag.DoesNotExist: pass return render(request, template, { 'product': product, 'products': Product.objects.filter(visible=True), 'topics': topics_for( products=[product], parent=None), 'hot_docs': hot_docs, 'hot_questions': hot_questions, 'fallback_hot_docs': fallback_hot_docs, 'search_params': {'product': slug}})
def product_landing(request, template, slug): """The product landing page.""" product = get_object_or_404(Product, slug=slug) try: topic = Topic.objects.get(product=product, slug=HOT_TOPIC_SLUG) hot_docs, fallback_hot_docs = documents_for(locale=request.LANGUAGE_CODE, topics=[topic], products=[product]) except Topic.DoesNotExist: # "hot" topic doesn't exist, move on. hot_docs = fallback_hot_docs = None return render( request, template, { "product": product, "products": Product.objects.filter(visible=True), "topics": topics_for(products=[product], parent=None), "hot_docs": hot_docs, "fallback_hot_docs": fallback_hot_docs, "search_params": {"product": slug}, }, )
def test_documents_for_fallback(self): """Verify the fallback in documents_for.""" general_bookmarks_documents, fallback = documents_for( locale="es", topics=[self.general_d, self.bookmarks_d]) eq_(len(general_bookmarks_documents), 0) eq_(len(fallback), 1)
def test_documents_for_fallback(self): """Verify the fallback in documents_for.""" general_bookmarks_documents, fallback = documents_for( locale='es', topics=[self.general_d, self.bookmarks_d]) eq_(len(general_bookmarks_documents), 0) eq_(len(fallback), 1)