from __future__ import unicode_literals import frappe def get_context(context): context.no_cache = 1 context.align_greeting = '' setting = frappe.get_doc("Support Settings") context.greeting_title = setting.greeting_title context.greeting_subtitle = setting.greeting_subtitle # Support content favorite_articles = get_favorite_articles_by_page_view() if len(favorite_articles) < 6: name_list = [] if favorite_articles: for article in favorite_articles: name_list.append(article.name) for record in (frappe.get_all("Help Article", fields=["title", "content", "route", "category"], filters={"name": ['not in', tuple(name_list)], "published": 1}, order_by="creation desc", limit=(6-len(favorite_articles)))): favorite_articles.append(record) context.favorite_article_list = get_favorite_articles(favorite_articles) context.help_article_list = get_help_article_list() def get_favorite_articles_by_page_view(): return frappe.db.sql( """ SELECT t1.name as name, t1.title as title, t1.content as content, t1.route as route, t1.category as category, count(t1.route) as count FROM `tabHelp Article` AS t1 INNER JOIN `tabWeb Page View` AS t2 ON t1.route = t2.path WHERE t1.published = 1 GROUP BY route ORDER BY count DESC LIMIT 6; """, as_dict=True) def get_favorite_articles(favorite_articles): favorite_article_list=[] for article in favorite_articles: description = frappe.utils.strip_html(article.content) if len(description) > 120: description = description[:120] + '...' favorite_article_dict = { 'title': article.title, 'description': description, 'route': article.route, 'category': article.category, } favorite_article_list.append(favorite_article_dict) return favorite_article_list def get_help_article_list(): help_article_list=[] category_list = frappe.get_all("Help Category", fields="name") for category in category_list: help_articles = frappe.get_all("Help Article", fields="*", filters={"category": category.name, "published": 1}, order_by="modified desc", limit=5) if help_articles: help_aricles_per_caetgory = { 'category': category, 'articles': help_articles, } help_article_list.append(help_aricles_per_caetgory) return help_article_list