From e660fde74e2706c72ab8e48c6928f69e2772482b Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Thu, 20 Feb 2014 19:00:55 +0530 Subject: [PATCH] fixed sitemap patch --- frappe/cli.py | 4 +- frappe/modules/__init__.py | 2 +- frappe/patches/4_0/set_website_sitemap_idx.py | 12 +++- .../website_sitemap_config.py | 57 ++++++++++++------- 4 files changed, 50 insertions(+), 25 deletions(-) diff --git a/frappe/cli.py b/frappe/cli.py index c7e016ed89..b35be00e2c 100755 --- a/frappe/cli.py +++ b/frappe/cli.py @@ -466,9 +466,11 @@ def reset_perms(): @cmd def execute(method): frappe.connect() - frappe.get_attr(method)() + ret = frappe.get_attr(method)() frappe.conn.commit() frappe.destroy() + if ret: + print ret # scheduler @cmd diff --git a/frappe/modules/__init__.py b/frappe/modules/__init__.py index 6f7a8818b8..aef4d3da34 100644 --- a/frappe/modules/__init__.py +++ b/frappe/modules/__init__.py @@ -32,7 +32,7 @@ def get_doc_path(module, doctype, name): def reload_doc(module, dt=None, dn=None, force=True): from frappe.modules.import_file import import_files - return import_files(module, dt, dn, force=force) + return import_files(scrub(module), scrub(dt), scrub(dn), force=force) def export_doc(doctype, name, module=None): """write out a doc""" diff --git a/frappe/patches/4_0/set_website_sitemap_idx.py b/frappe/patches/4_0/set_website_sitemap_idx.py index 7cfc90ab91..a46cd4abce 100644 --- a/frappe/patches/4_0/set_website_sitemap_idx.py +++ b/frappe/patches/4_0/set_website_sitemap_idx.py @@ -1,7 +1,17 @@ import frappe def execute(): - frappe.reload_doc("website", "doctype", "blog_post") + from frappe.website.doctype.website_sitemap_config.website_sitemap_config import \ + get_pages_and_generators, get_template_controller + + + for app in frappe.get_installed_apps(): + pages, generators = get_pages_and_generators(app) + for g in generators: + doctype = frappe.get_attr(get_template_controller(app, g[2], g[3]) + ".doctype") + module = frappe.conn.get_value("DocType", doctype, "module") + frappe.reload_doc(module, "doctype", doctype) + frappe.conn.sql("""update `tabWebsite Sitemap` set idx=null""") for doctype in ["Blog Category", "Blog Post", "Web Page", "Website Group"]: frappe.conn.sql("""update `tab{}` set idx=null""".format(doctype)) diff --git a/frappe/website/doctype/website_sitemap_config/website_sitemap_config.py b/frappe/website/doctype/website_sitemap_config/website_sitemap_config.py index a59fe2e477..fe43e52908 100644 --- a/frappe/website/doctype/website_sitemap_config/website_sitemap_config.py +++ b/frappe/website/doctype/website_sitemap_config/website_sitemap_config.py @@ -60,48 +60,51 @@ def rebuild_website_sitemap_config(): rebuild_tree("Website Sitemap", "parent_website_sitemap") frappe.conn.commit() - + + def build_website_sitemap_config(app): config = {"pages": {}, "generators":{}} - basepath = frappe.get_pymodule_path(app) + pages, generators = get_pages_and_generators(app) + + for args in pages: + add_website_sitemap_config(*args) + + for args in generators: + add_website_sitemap_config(*args) + + frappe.conn.commit() + +def get_pages_and_generators(app): pages = [] generators = [] + app_path = frappe.get_app_path(app) for config_type in ("pages", "generators"): - path = os.path.join(basepath, "templates", config_type) + path = os.path.join(app_path, "templates", config_type) if os.path.exists(path): for fname in os.listdir(path): fname = frappe.utils.cstr(fname) if fname.split(".")[-1] in ("html", "xml", "js", "css"): if config_type=="pages": - pages.append(["Page", app, path, fname, basepath]) + pages.append(["Page", app, path, fname, app_path]) else: - generators.append(["Generator", app, path, fname, basepath]) - - for args in pages: - add_website_sitemap_config(*args) - - for args in generators: - add_website_sitemap_config(*args) - - frappe.conn.commit() - -def add_website_sitemap_config(page_or_generator, app, path, fname, basepath): + generators.append(["Generator", app, path, fname, app_path]) + + return pages, generators + +def add_website_sitemap_config(page_or_generator, app, path, fname, app_path): name = fname[:-5] if fname.endswith(".html") else fname wsc = frappe._dict({ "doctype": "Website Sitemap Config", "page_or_generator": page_or_generator, "link_name": name, - "template_path": os.path.relpath(os.path.join(path, fname), basepath), + "template_path": os.path.relpath(os.path.join(path, fname), app_path), }) - - controller_name = fname.split(".")[0].replace("-", "_") + ".py" - controller_path = os.path.join(path, controller_name) - if os.path.exists(controller_path): - wsc.controller = app + "." + os.path.relpath(controller_path[:-3], basepath).replace(os.path.sep, ".") - + + wsc.controller = get_template_controller(app, path, fname) + if wsc.controller: # verbose print wsc.controller module = frappe.get_module(wsc.controller) @@ -123,3 +126,13 @@ def add_website_sitemap_config(page_or_generator, app, path, fname, basepath): frappe.bean(wsc).insert() return name + +def get_template_controller(app, path, fname): + controller = None + controller_name = fname.split(".")[0].replace("-", "_") + ".py" + controller_path = os.path.join(path, controller_name) + if os.path.exists(controller_path): + controller = app + "." + os.path.relpath(controller_path[:-3], frappe.get_app_path(app)).replace(os.path.sep, ".") + + return controller +