89 lines
2.3 KiB
Python
89 lines
2.3 KiB
Python
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
|