diff --git a/frappe/cli.py b/frappe/cli.py index 2a02d5a616..5d48cdedcb 100755 --- a/frappe/cli.py +++ b/frappe/cli.py @@ -418,17 +418,16 @@ def latest(rebuild_website=True, quiet=False): frappe.modules.patch_handler.run_all() # sync frappe.model.sync.sync_all(verbose=verbose) + frappe.translate.clear_cache() sync_fixtures() sync = statics.sync() sync.start() sync.start(rebuild=True) # build website config if any changes in templates etc. + if rebuild_website: build_website() - - frappe.translate.clear_cache() - finally: frappe.destroy() diff --git a/frappe/public/js/frappe/request.js b/frappe/public/js/frappe/request.js index 2117ad8eb9..126a09a6fb 100644 --- a/frappe/public/js/frappe/request.js +++ b/frappe/public/js/frappe/request.js @@ -71,6 +71,7 @@ frappe.request.call = function(opts) { 500: function() { msgprint(__("Server Error: Please check your server logs or contact tech support.")) opts.error && opts.error(); + } }, async: opts.async @@ -144,7 +145,6 @@ frappe.request.prepare = function(opts) { } frappe.request.cleanup = function(opts, r) { - // stop button indicator if(opts.btn) $(opts.btn).done_working(); diff --git a/frappe/website/doctype/blog_post/blog_post.py b/frappe/website/doctype/blog_post/blog_post.py index 46daa60859..a162f4a875 100644 --- a/frappe/website/doctype/blog_post/blog_post.py +++ b/frappe/website/doctype/blog_post/blog_post.py @@ -10,8 +10,7 @@ from frappe.website.render import clear_cache from frappe.utils import today, cint, global_date_format, get_fullname from frappe.website.utils import find_first_image, get_comment_list -sort_by = "published_on" -sort_order = "desc" +order_by = "`tabBlog Post`.published_on desc" condition_field = "published" template = "templates/generators/blog_post.html" diff --git a/frappe/website/doctype/web_page/web_page.js b/frappe/website/doctype/web_page/web_page.js index 7af771da2f..24fdb27163 100644 --- a/frappe/website/doctype/web_page/web_page.js +++ b/frappe/website/doctype/web_page/web_page.js @@ -18,6 +18,7 @@ $.extend(cur_frm.cscript, { }, refresh: function(doc) { cur_frm.cscript.layout(doc); + cur_frm.set_intro(""); if (!doc.__islocal && doc.published) { cur_frm.set_intro(__("Published on website at: {0}", [repl('/%(website_route)s', doc.__onload)])); diff --git a/frappe/website/doctype/web_page/web_page.json b/frappe/website/doctype/web_page/web_page.json index fc1bb69b31..6b4009878d 100644 --- a/frappe/website/doctype/web_page/web_page.json +++ b/frappe/website/doctype/web_page/web_page.json @@ -1,173 +1,180 @@ { - "allow_attach": 1, - "creation": "2013-03-28 10:35:30", - "description": "Page to show on the website\n", - "docstatus": 0, - "doctype": "DocType", - "document_type": "Transaction", + "allow_attach": 1, + "creation": "2013-03-28 10:35:30", + "description": "Page to show on the website\n", + "docstatus": 0, + "doctype": "DocType", + "document_type": "Transaction", "fields": [ { - "fieldname": "section_title", - "fieldtype": "Section Break", - "label": "Title", + "fieldname": "section_title", + "fieldtype": "Section Break", + "label": "Title", "permlevel": 0 - }, + }, { - "description": "Title / headline of your page", - "fieldname": "title", - "fieldtype": "Data", - "label": "Title", - "permlevel": 0, + "description": "Title / headline of your page", + "fieldname": "title", + "fieldtype": "Data", + "label": "Title", + "permlevel": 0, "reqd": 1 - }, + }, { - "description": "Page url name (auto-generated)", - "fieldname": "page_name", - "fieldtype": "Data", - "in_list_view": 1, - "label": "Page Name", - "permlevel": 0, + "description": "Page url name (auto-generated)", + "fieldname": "page_name", + "fieldtype": "Data", + "in_list_view": 1, + "label": "Page Name", + "permlevel": 0, "read_only": 0 - }, + }, { - "fieldname": "parent_website_route", - "fieldtype": "Link", - "label": "Parent Website Page", - "options": "Website Route", + "fieldname": "parent_website_route", + "fieldtype": "Link", + "label": "Parent Website Page", + "options": "Website Route", "permlevel": 0 - }, + }, { - "fieldname": "published", - "fieldtype": "Check", - "label": "Published", + "fieldname": "published", + "fieldtype": "Check", + "label": "Published", "permlevel": 0 - }, + }, { - "fieldname": "cb1", - "fieldtype": "Column Break", - "permlevel": 0, + "description": "0 is highest", + "fieldname": "idx", + "fieldtype": "Int", + "label": "Priority", + "permlevel": 0 + }, + { + "fieldname": "cb1", + "fieldtype": "Column Break", + "permlevel": 0, "width": "50%" - }, + }, { - "description": "Description for page header.", - "fieldname": "description", - "fieldtype": "Small Text", - "label": "Description", + "description": "Description for page header.", + "fieldname": "description", + "fieldtype": "Small Text", + "label": "Description", "permlevel": 0 - }, + }, { - "description": "Page content", - "fieldname": "sb1", - "fieldtype": "Section Break", - "label": "Content", + "description": "Page content", + "fieldname": "sb1", + "fieldtype": "Section Break", + "label": "Content", "permlevel": 0 - }, + }, { - "description": "Begin this page with a slideshow of images", - "fieldname": "slideshow", - "fieldtype": "Link", - "label": "Slideshow", - "options": "Website Slideshow", + "description": "Begin this page with a slideshow of images", + "fieldname": "slideshow", + "fieldtype": "Link", + "label": "Slideshow", + "options": "Website Slideshow", "permlevel": 0 - }, + }, { - "description": "Content in markdown format that appears on the main side of your page", - "fieldname": "main_section", - "fieldtype": "Text Editor", - "label": "Main Section", + "description": "Content in markdown format that appears on the main side of your page", + "fieldname": "main_section", + "fieldtype": "Text Editor", + "label": "Main Section", "permlevel": 0 - }, + }, { - "depends_on": "eval:!doc.__islocal", - "description": "Link to other pages in the side bar and next section", - "fieldname": "sb2", - "fieldtype": "Section Break", - "label": "More", + "depends_on": "eval:!doc.__islocal", + "description": "Link to other pages in the side bar and next section", + "fieldname": "sb2", + "fieldtype": "Section Break", + "label": "More", "permlevel": 0 - }, + }, { - "description": "HTML for header section. Optional", - "fieldname": "header", - "fieldtype": "Text", - "label": "Header", + "description": "HTML for header section. Optional", + "fieldname": "header", + "fieldtype": "Text", + "label": "Header", "permlevel": 0 - }, + }, { - "fieldname": "enable_comments", - "fieldtype": "Check", - "label": "Enable Comments", + "fieldname": "enable_comments", + "fieldtype": "Check", + "label": "Enable Comments", "permlevel": 0 - }, + }, { - "fieldname": "text_align", - "fieldtype": "Select", - "label": "Text Align", - "options": "Left\nCenter\nRight", + "fieldname": "text_align", + "fieldtype": "Select", + "label": "Text Align", + "options": "Left\nCenter\nRight", "permlevel": 0 - }, + }, { - "fieldname": "custom_javascript", - "fieldtype": "Section Break", - "label": "Custom Javascript", + "fieldname": "custom_javascript", + "fieldtype": "Section Break", + "label": "Custom Javascript", "permlevel": 0 - }, + }, { - "description": "Add code as <script>", - "fieldname": "insert_code", - "fieldtype": "Check", - "label": "Insert Code", + "description": "Add code as <script>", + "fieldname": "insert_code", + "fieldtype": "Check", + "label": "Insert Code", "permlevel": 0 - }, + }, { - "depends_on": "insert_code", - "fieldname": "javascript", - "fieldtype": "Code", - "label": "Javascript", - "options": "Javascript", + "depends_on": "insert_code", + "fieldname": "javascript", + "fieldtype": "Code", + "label": "Javascript", + "options": "Javascript", "permlevel": 0 - }, + }, { - "fieldname": "custom_css", - "fieldtype": "Section Break", - "label": "Custom CSS", + "fieldname": "custom_css", + "fieldtype": "Section Break", + "label": "Custom CSS", "permlevel": 0 - }, + }, { - "fieldname": "insert_style", - "fieldtype": "Check", - "label": "Insert Style", + "fieldname": "insert_style", + "fieldtype": "Check", + "label": "Insert Style", "permlevel": 0 - }, + }, { - "depends_on": "insert_style", - "fieldname": "css", - "fieldtype": "Code", - "label": "CSS", - "options": "CSS", + "depends_on": "insert_style", + "fieldname": "css", + "fieldtype": "Code", + "label": "CSS", + "options": "CSS", "permlevel": 0 } - ], - "icon": "icon-file-alt", - "idx": 1, - "max_attachments": 20, - "modified": "2014-05-26 03:36:51.942919", - "modified_by": "Administrator", - "module": "Website", - "name": "Web Page", - "owner": "Administrator", + ], + "icon": "icon-file-alt", + "idx": 1, + "max_attachments": 20, + "modified": "2014-06-17 05:56:30.267409", + "modified_by": "Administrator", + "module": "Website", + "name": "Web Page", + "owner": "Administrator", "permissions": [ { - "cancel": 0, - "create": 1, - "delete": 1, - "email": 1, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "Website Manager", - "submit": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "email": 1, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "Website Manager", + "submit": 0, "write": 1 } ] -} +} \ No newline at end of file diff --git a/frappe/website/doctype/website_route/website_route.py b/frappe/website/doctype/website_route/website_route.py index 60237772b9..f536954338 100644 --- a/frappe/website/doctype/website_route/website_route.py +++ b/frappe/website/doctype/website_route/website_route.py @@ -88,10 +88,12 @@ class WebsiteRoute(NestedSet): def clear_cache(self, name=None): from frappe.website.render import clear_cache - clear_cache(name or self.name) - - if self.parent_website_route: + if name: + clear_cache(name) + elif self.parent_website_route: clear_cache(self.parent_website_route) + else: + clear_cache(self.name) def remove_sitemap(page_name=None, ref_doctype=None, docname=None): if page_name: diff --git a/frappe/website/render.py b/frappe/website/render.py index b188044aee..0b2bf92951 100644 --- a/frappe/website/render.py +++ b/frappe/website/render.py @@ -164,7 +164,9 @@ def clear_cache(path=None): if path: delete_page_cache(path) - + for p in frappe.db.sql_list('''select name from + `tabWebsite Route` where name like "{0}/%"'''.format(path.replace('"', '\"'))): + delete_page_cache(p) else: for p in frappe.db.sql_list("""select name from `tabWebsite Route`"""): if p is not None: diff --git a/frappe/website/sitemap.py b/frappe/website/sitemap.py index fad24f5956..9896bb4a2b 100644 --- a/frappe/website/sitemap.py +++ b/frappe/website/sitemap.py @@ -74,16 +74,15 @@ def get_route_children(pathname, home_page=None): if children: # if children are from generator and sort order is specified, then get that condition module = frappe.get_module(children[0].controller) - if hasattr(module, "sort_by") and module.sort_by!="name": + if hasattr(module, "sort_by"): children = frappe.db.sql("""select t1.* from `tabWebsite Route` t1, `tab{ref_doctype}` t2 where ifnull(t1.parent_website_route,'')=%s and t1.public_read=1 and t1.docname = t2.name - order by t2.{sort_by} {sort_order}""".format( + order by {sort_by}""".format( ref_doctype = children[0].ref_doctype, - sort_by = module.sort_by, - sort_order = module.sort_order), + sort_by = module.sort_by), pathname, as_dict=True) children = [frappe.get_doc("Website Route", pathname)] + children diff --git a/frappe/website/template.py b/frappe/website/template.py index c036789124..80962ffd88 100644 --- a/frappe/website/template.py +++ b/frappe/website/template.py @@ -36,7 +36,7 @@ def render_blocks(context): if "title" not in out: out["title"] = context.get("title") - if not out.get("header") and out.get("title"): + if "header" not in out and out.get("title"): out["header"] = out["title"] if out.get("header") and not out["header"].startswith("