diff --git a/wiki/wiki/doctype/wiki_page/wiki_page.py b/wiki/wiki/doctype/wiki_page/wiki_page.py index 35ba474a..b74fd05c 100644 --- a/wiki/wiki/doctype/wiki_page/wiki_page.py +++ b/wiki/wiki/doctype/wiki_page/wiki_page.py @@ -205,9 +205,11 @@ def get_context(self, context): wiki_settings = frappe.get_single("Wiki Settings") wiki_space_name = frappe.get_value("Wiki Group Item", {"wiki_page": self.name}, "parent") - wiki_space = frappe.get_doc("Wiki Space", wiki_space_name) if wiki_space_name else frappe._dict() + wiki_space = ( + frappe.get_cached_doc("Wiki Space", wiki_space_name) if wiki_space_name else frappe._dict() + ) - context.no_cache = 1 + context.no_cache = 0 # Changes will invalidate HTML cache context.navbar_search = wiki_settings.add_search_bar context.light_mode_logo = wiki_space.light_mode_logo or wiki_settings.logo context.dark_mode_logo = wiki_space.dark_mode_logo or wiki_settings.dark_mode_logo @@ -303,7 +305,7 @@ def get_sidebar_items(self): if sidebar_item.hide_on_sidebar: continue - wiki_page = frappe.get_doc("Wiki Page", sidebar_item.wiki_page) + wiki_page = frappe.get_cached_doc("Wiki Page", sidebar_item.wiki_page) permitted = wiki_page.allow_guest or frappe.session.user != "Guest" if not permitted: @@ -545,7 +547,7 @@ def get_source(resolved_route, jenv): @frappe.whitelist(allow_guest=True) def get_sidebar_for_page(wiki_page): - sidebar = frappe.get_doc("Wiki Page", wiki_page).get_sidebar_items() + sidebar = frappe.get_cached_doc("Wiki Page", wiki_page).get_sidebar_items() return sidebar diff --git a/wiki/wiki/doctype/wiki_page/wiki_renderer.py b/wiki/wiki/doctype/wiki_page/wiki_renderer.py index 44ed080e..eb7ca6f4 100644 --- a/wiki/wiki/doctype/wiki_page/wiki_renderer.py +++ b/wiki/wiki/doctype/wiki_page/wiki_renderer.py @@ -3,7 +3,6 @@ import frappe from frappe.website.page_renderers.document_page import DocumentPage -from frappe.website.router import get_doctypes_with_web_view from frappe.website.utils import build_response from wiki.wiki.doctype.wiki_page.wiki_page import get_sidebar_for_page @@ -13,31 +12,22 @@ class WikiPageRenderer(DocumentPage): def can_render(self): - if wiki_space_name := frappe.get_value("Wiki Space", {"route": self.path}): - wiki_space = frappe.get_doc("Wiki Space", wiki_space_name) - topmost_wiki_route = frappe.get_value("Wiki Page", wiki_space.wiki_sidebars[0].wiki_page, "route") + doctype = "Wiki Page" + try: + self.docname = frappe.db.get_value(doctype, {"route": self.path, "published": 1}, "name") + if self.docname: + self.doctype = doctype + return True + except Exception as e: + if not frappe.db.is_missing_column(e): + raise e + + if wiki_space_name := frappe.db.get_value("Wiki Space", {"route": self.path}): + wiki_space = frappe.get_cached_doc("Wiki Space", wiki_space_name) + topmost_wiki_route = frappe.db.get_value( + "Wiki Page", wiki_space.wiki_sidebars[0].wiki_page, "route" + ) frappe.redirect(f"/{quote(topmost_wiki_route)}") - return self.search_in_doctypes_with_web_view() - - def search_in_doctypes_with_web_view(self): - for doctype in get_doctypes_with_web_view(): - if doctype != "Wiki Page": - continue - filters = dict(route=self.path) - meta = frappe.get_meta(doctype) - condition_field = self.get_condition_field(meta) - - if condition_field: - filters[condition_field] = 1 - - try: - self.docname = frappe.db.get_value(doctype, filters, "name") - if self.docname: - self.doctype = doctype - return True - except Exception as e: - if not frappe.db.is_missing_column(e): - raise e def render(self): html = self.get_html()