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
 |