From 10106ed065f41325f5e16c938047822b4f5361c4 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 27 Jun 2016 18:35:07 +0530 Subject: [PATCH] [minor] [portal] sidebar_items --- frappe/templates/includes/web_sidebar.html | 4 +--- frappe/website/context.py | 25 +++++++++------------- frappe/website/render.py | 1 + frappe/www/list.py | 4 ++-- 4 files changed, 14 insertions(+), 20 deletions(-) diff --git a/frappe/templates/includes/web_sidebar.html b/frappe/templates/includes/web_sidebar.html index 51209449f1..1cd78fc750 100644 --- a/frappe/templates/includes/web_sidebar.html +++ b/frappe/templates/includes/web_sidebar.html @@ -18,15 +18,13 @@ - {% for item in my_account_list -%} - {% if item.count or (not item.reference_doctype) or item.show_always %} + {% for item in sidebar_menu -%} - {% endif %} {%- endfor %} diff --git a/frappe/website/context.py b/frappe/website/context.py index 60ffe2ce43..3d25a10f01 100644 --- a/frappe/website/context.py +++ b/frappe/website/context.py @@ -3,6 +3,7 @@ from __future__ import unicode_literals import frappe +import json from frappe.website.doctype.website_settings.website_settings import get_website_settings from frappe.website.router import get_page_context @@ -43,9 +44,6 @@ def build_context(context): context.update(get_website_settings()) context.update(frappe.local.conf.get("website_context") or {}) - if context.show_sidebar: - add_sidebar_data(context) - # provide doc if context.doc: context.update(context.doc.as_dict()) @@ -80,6 +78,9 @@ def build_context(context): add_metatags(context) + if context.show_sidebar: + add_sidebar_data(context) + # determine templates to be used if not context.base_template_path: app_base = frappe.get_hooks("base_template") @@ -91,20 +92,14 @@ def add_sidebar_data(context): from frappe.utils.user import get_fullname_and_avatar import frappe.www.list - context.my_account_list = [] - my_account_list = frappe.get_all('Portal Menu Item', + sidebar_items = json.loads(frappe.cache().get('sidebar_items') or '[]') + if not sidebar_items: + sidebar_items = frappe.get_all('Portal Menu Item', fields=['title', 'route', 'reference_doctype', 'show_always'], filters={'enabled': 1}, order_by='idx asc') + frappe.cache().set('portal_menu_items', json.dumps(sidebar_items)) - for item in my_account_list: - if item.reference_doctype: - try: - item.count = len(frappe.www.list.get(item.reference_doctype).get('result')) - - except frappe.PermissionError: - pass - - else: - context.my_account_list.append(item) + if not context.sidebar_menu: + context.sidebar_menu = sidebar_items info = get_fullname_and_avatar(frappe.session.user) context["fullname"] = info.fullname diff --git a/frappe/website/render.py b/frappe/website/render.py index 26709d01b6..23ba9acd42 100644 --- a/frappe/website/render.py +++ b/frappe/website/render.py @@ -210,6 +210,7 @@ def clear_cache(path=None): clear_sitemap() frappe.clear_cache("Guest") frappe.cache().delete_value("website_404") + frappe.cache().delete_value("portal_menu_items") frappe.cache().delete_value("home_page") for method in frappe.get_hooks("website_clear_cache"): diff --git a/frappe/www/list.py b/frappe/www/list.py index daf4918afb..3555d45227 100644 --- a/frappe/www/list.py +++ b/frappe/www/list.py @@ -21,10 +21,10 @@ def get_context(context): context.update(get(**frappe.local.form_dict)) @frappe.whitelist(allow_guest=True) -def get(doctype, txt=None, limit_start=0, **kwargs): +def get(doctype, txt=None, limit_start=0, limit=20, **kwargs): """Returns processed HTML page for a standard listing.""" limit_start = cint(limit_start) - limit_page_length = 20 + limit_page_length = limit next_start = limit_start + limit_page_length if not txt and frappe.form_dict.search: