From fbd427715884d721ed163b86f079b1afc15f51ae Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Thu, 28 Aug 2014 12:45:16 +0530 Subject: [PATCH 1/2] [fixes] [website] for translator --- frappe/__init__.py | 3 +++ frappe/public/js/frappe/misc/pretty_date.js | 14 +++++++++----- frappe/templates/generators/web_page.html | 2 +- frappe/utils/fixtures.py | 2 ++ frappe/website/doctype/web_page/web_page.py | 16 +++++++++------- .../website_settings/website_settings.py | 1 + frappe/website/js/website.js | 17 ++++++++++++++--- 7 files changed, 39 insertions(+), 16 deletions(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index bd86d4af80..ead15ab78d 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -286,6 +286,9 @@ def clear_cache(user=None, doctype=None): translate.clear_cache() reset_metadata_version() + for fn in frappe.get_hooks("clear_cache"): + get_attr(fn)() + frappe.local.role_permissions = {} def get_roles(username=None): diff --git a/frappe/public/js/frappe/misc/pretty_date.js b/frappe/public/js/frappe/misc/pretty_date.js index 6873b6512f..3ee7157aff 100644 --- a/frappe/public/js/frappe/misc/pretty_date.js +++ b/frappe/public/js/frappe/misc/pretty_date.js @@ -1,9 +1,11 @@ function prettyDate(time){ if(moment) { - var user_timezone = frappe.boot.user.time_zone; - var system_timezone = sys_defaults.time_zone; - var zones = (frappe.boot.timezone_info || {}).zones || {}; - if (user_timezone && (user_timezone != system_timezone) + if(frappe.boot) { + var user_timezone = frappe.boot.user.time_zone; + var system_timezone = sys_defaults.time_zone; + var zones = (frappe.boot.timezone_info || {}).zones || {}; + } + if (frappe.boot && user_timezone && (user_timezone != system_timezone) && zones[user_timezone] && zones[system_timezone]) { return moment.tz(time, sys_defaults.time_zone).tz(frappe.boot.user.time_zone).fromNow(); } else { @@ -37,8 +39,10 @@ function prettyDate(time){ var comment_when = function(datetime) { + var timestamp = frappe.datetime.str_to_user ? + frappe.datetime.str_to_user(datetime) : datetime; return '' + +'" title="'+timestamp+'">' + prettyDate(datetime) + ''; }; diff --git a/frappe/templates/generators/web_page.html b/frappe/templates/generators/web_page.html index 988b5b6173..2311ca6872 100644 --- a/frappe/templates/generators/web_page.html +++ b/frappe/templates/generators/web_page.html @@ -1,7 +1,7 @@ {% block title %}{{ title }}{% endblock %} {% block header %} -{% if "<" in header %}{{ header }}{% else %}

{{ header }}

{% endif %} +{{ header }} {% endblock %} {% block content %} diff --git a/frappe/utils/fixtures.py b/frappe/utils/fixtures.py index 3ed54099a8..6062c9ec38 100644 --- a/frappe/utils/fixtures.py +++ b/frappe/utils/fixtures.py @@ -23,6 +23,8 @@ def export_fixtures(): for app in frappe.get_installed_apps(): for fixture in frappe.get_hooks("fixtures", app_name=app): print "Exporting " + fixture + if not os.path.exists(frappe.get_app_path(app, "fixtures")): + os.mkdir(frappe.get_app_path(app, "fixtures")) if frappe.db.get_value("DocType", fixture, "issingle"): export_fixture(fixture, fixture, app) else: diff --git a/frappe/website/doctype/web_page/web_page.py b/frappe/website/doctype/web_page/web_page.py index 8e56604678..5a1b8a62e2 100644 --- a/frappe/website/doctype/web_page/web_page.py +++ b/frappe/website/doctype/web_page/web_page.py @@ -9,6 +9,7 @@ from frappe.website.router import resolve_route from frappe.website.doctype.website_slideshow.website_slideshow import get_slideshow from frappe.website.utils import find_first_image, get_comment_list from markdown2 import markdown +from frappe.utils.jinja import render_template class WebPage(WebsiteGenerator): save_versions = True @@ -32,14 +33,13 @@ class WebPage(WebsiteGenerator): if self.template_path: # load content from template - context.update(get_static_content(self, self.template_path)) + context.update(get_static_content(self, context)) else: context.update({ "style": self.css or "", "script": self.javascript or "" }) - self.render_dynamic(context) self.set_metatags(context) if not context.header: @@ -53,7 +53,7 @@ class WebPage(WebsiteGenerator): def render_dynamic(self, context): # dynamic if context.main_section and "" in context.main_section: - context["main_section"] = frappe.render_template(context.main_section, + context["main_section"] = render_template(context.main_section, {"doc": self, "frappe": frappe}) context["no_cache"] = 1 @@ -68,12 +68,12 @@ class WebPage(WebsiteGenerator): context.metatags["image"] = image -def get_static_content(doc, template_path): +def get_static_content(doc, context): d = frappe._dict({}) - with open(template_path, "r") as contentfile: + with open(doc.template_path, "r") as contentfile: content = unicode(contentfile.read(), 'utf-8') - if template_path.endswith(".md"): + if doc.template_path.endswith(".md"): if content: lines = content.splitlines() first_line = lines[0].strip() @@ -88,8 +88,10 @@ def get_static_content(doc, template_path): if not d.title: d.title = doc.name.replace("-", " ").replace("_", " ").title() + doc.render_dynamic(context) + for extn in ("js", "css"): - fpath = template_path.rsplit(".", 1)[0] + "." + extn + fpath = doc.template_path.rsplit(".", 1)[0] + "." + extn if os.path.exists(fpath): with open(fpath, "r") as f: d["css" if extn=="css" else "javascript"] = f.read() diff --git a/frappe/website/doctype/website_settings/website_settings.py b/frappe/website/doctype/website_settings/website_settings.py index 7c70010553..c7c80040a1 100644 --- a/frappe/website/doctype/website_settings/website_settings.py +++ b/frappe/website/doctype/website_settings/website_settings.py @@ -107,6 +107,7 @@ def get_website_settings(): frappe.get_attr(update_website_context)(context) context.web_include_js = hooks.web_include_js or [] + context.web_include_css = hooks.web_include_css or [] return context diff --git a/frappe/website/js/website.js b/frappe/website/js/website.js index eaf76758b0..df747714f0 100644 --- a/frappe/website/js/website.js +++ b/frappe/website/js/website.js @@ -107,9 +107,14 @@ $.extend(frappe, { } catch(e) { console.log(data.exc); } - if (opts.error_msg && data._server_messages) { + + if (data._server_messages) { var server_messages = (JSON.parse(data._server_messages || '[]')).join("
"); - $(opts.error_msg).html(server_messages).toggle(true); + if(opts.error_msg) { + $(opts.error_msg).html(server_messages).toggle(true); + } else { + frappe.msgprint(server_messages); + } } } else{ if(opts.btn) { @@ -265,7 +270,12 @@ $.extend(frappe, { history.pushState(null, null, href); var _render = function(data) { - history.replaceState(data, data.title, href); + try { + history.replaceState(data, data.title, href); + } catch(e) { + // data too big (?) + history.replaceState(null, data.title, href); + } scroll(0,0); frappe.render_json(data); }; @@ -291,6 +301,7 @@ $.extend(frappe, { var $section = $(section); var stype = $section.attr("data-html-block"); + // handle meta separately if (stype==="meta_block") return; From 4ce85938a024bb83847198cdf5f7bd62e293e84b Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Thu, 28 Aug 2014 12:48:04 +0530 Subject: [PATCH 2/2] [fixes] [website] for translator --- frappe/website/doctype/web_page/web_page.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/website/doctype/web_page/web_page.py b/frappe/website/doctype/web_page/web_page.py index 5a1b8a62e2..c05909388e 100644 --- a/frappe/website/doctype/web_page/web_page.py +++ b/frappe/website/doctype/web_page/web_page.py @@ -88,7 +88,7 @@ def get_static_content(doc, context): if not d.title: d.title = doc.name.replace("-", " ").replace("_", " ").title() - doc.render_dynamic(context) + doc.render_dynamic(d) for extn in ("js", "css"): fpath = doc.template_path.rsplit(".", 1)[0] + "." + extn