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