| 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 |