diff --git a/frappe/__init__.py b/frappe/__init__.py index 259c4a50e6..dc59662320 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -1204,7 +1204,7 @@ def get_print(doctype=None, name=None, print_format=None, style=None, html=None, local.form_dict.doc = doc if not html: - html = build_page("print") + html = build_page("printview") if as_pdf: return get_pdf(html, output = output) diff --git a/frappe/boot.py b/frappe/boot.py index b5d0acce01..02bdb45d9b 100644 --- a/frappe/boot.py +++ b/frappe/boot.py @@ -103,35 +103,35 @@ def get_user_page_or_report(parent): # get pages or reports set on custom role custom_roles = frappe.db.sql(""" - select - `tabCustom Role`.{field} as name, - `tabCustom Role`.modified, - `tabCustom Role`.ref_doctype - from `tabCustom Role`, `tabHas Role` + select + `tabCustom Role`.{field} as name, + `tabCustom Role`.modified, + `tabCustom Role`.ref_doctype + from `tabCustom Role`, `tabHas Role` where - `tabHas Role`.parent = `tabCustom Role`.name - and `tabCustom Role`.{field} is not null + `tabHas Role`.parent = `tabCustom Role`.name + and `tabCustom Role`.{field} is not null and `tabHas Role`.role in ({roles}) """.format(field=parent.lower(), roles = ', '.join(['%s']*len(roles))), roles, as_dict=1) - + for p in custom_roles: has_role[p.name] = {"modified":p.modified, "title": p.name, "ref_doctype": p.ref_doctype} standard_roles = frappe.db.sql(""" select distinct - tab{parent}.name, - tab{parent}.modified, + tab{parent}.name, + tab{parent}.modified, {column} from `tabHas Role`, `tab{parent}` - where + where `tabHas Role`.role in ({roles}) - and `tabHas Role`.parent = `tab{parent}`.name + and `tabHas Role`.parent = `tab{parent}`.name and tab{parent}.name not in ( - select `tabCustom Role`.{field} from `tabCustom Role` + select `tabCustom Role`.{field} from `tabCustom Role` where `tabCustom Role`.{field} is not null) - """.format(parent=parent, column=column, + """.format(parent=parent, column=column, roles = ', '.join(['%s']*len(roles)), field=parent.lower()), roles, as_dict=True) - + for p in standard_roles: if p.name not in has_role: has_role[p.name] = {"modified":p.modified, "title": p.title} @@ -148,11 +148,11 @@ def get_user_page_or_report(parent): (select count(*) from `tabHas Role` where `tabHas Role`.parent=tab{parent}.name) = 0 """.format(parent=parent, column=column), as_dict=1) - + for p in pages_with_no_roles: if p.name not in has_role: has_role[p.name] = {"modified": p.modified, "title": p.title} - + elif parent == "Report": for report_name in has_role: has_role[report_name]["report_type"] = frappe.db.get_value("Report", report_name, "report_type") @@ -230,7 +230,8 @@ def load_print(bootinfo, doclist): load_print_css(bootinfo, print_settings) def load_print_css(bootinfo, print_settings): - bootinfo.print_css = frappe.get_attr("frappe.www.print.get_print_style")(print_settings.print_style or "Modern", for_legacy=True) + import frappe.www.printview + bootinfo.print_css = frappe.www.printview.get_print_style(print_settings.print_style or "Modern", for_legacy=True) def get_unseen_notes(): return frappe.db.sql('''select name, title, content, notify_on_every_login from tabNote where notify_on_login=1 diff --git a/frappe/public/js/frappe/desk.js b/frappe/public/js/frappe/desk.js index 2f00c2ea63..79433b6e34 100644 --- a/frappe/public/js/frappe/desk.js +++ b/frappe/public/js/frappe/desk.js @@ -31,6 +31,16 @@ frappe.Application = Class.extend({ startup: function() { frappe.socket.init(); frappe.model.init(); + + if(frappe.boot.status==='failed') { + frappe.msgprint({ + message: frappe.boot.error, + title: __('Session Start Failed'), + indicator: 'red', + }) + throw 'boot failed'; + } + this.load_bootinfo(); this.make_nav_bar(); this.set_favicon(); @@ -193,6 +203,7 @@ frappe.Application = Class.extend({ if(frappe.boot.print_css) { frappe.dom.set_style(frappe.boot.print_css) } + frappe.user.name = frappe.boot.user.name; } else { this.set_as_guest(); } diff --git a/frappe/public/js/frappe/form/print.js b/frappe/public/js/frappe/form/print.js index c44399f7e2..6cce95fe25 100644 --- a/frappe/public/js/frappe/form/print.js +++ b/frappe/public/js/frappe/form/print.js @@ -130,7 +130,7 @@ frappe.ui.form.PrintPreview = Class.extend({ }, new_page_preview: function(printit) { var me = this; - var w = window.open(frappe.urllib.get_full_url("/print?" + var w = window.open(frappe.urllib.get_full_url("/printview?" +"doctype="+encodeURIComponent(me.frm.doc.doctype) +"&name="+encodeURIComponent(me.frm.doc.name) +(printit ? "&trigger_print=1" : "") diff --git a/frappe/public/js/frappe/misc/user.js b/frappe/public/js/frappe/misc/user.js index fd70c93ff9..cc42a2f6ba 100644 --- a/frappe/public/js/frappe/misc/user.js +++ b/frappe/public/js/frappe/misc/user.js @@ -55,7 +55,7 @@ frappe.ui.set_user_background = function(src, selector, style) { frappe.provide('frappe.user'); $.extend(frappe.user, { - name: (frappe.boot ? frappe.boot.user.name : 'Guest'), + name: 'Guest', full_name: function(uid) { return uid===user ? __("You") : diff --git a/frappe/utils/jinja.py b/frappe/utils/jinja.py index 18c0c68794..09343e2b03 100644 --- a/frappe/utils/jinja.py +++ b/frappe/utils/jinja.py @@ -60,6 +60,7 @@ def get_allowed_functions_for_jenv(): from frappe.modules import scrub import mimetypes from html2text import html2text + from frappe.www.printview import get_visible_columns datautils = {} if frappe.db: @@ -121,7 +122,7 @@ def get_allowed_functions_for_jenv(): } if not frappe.flags.in_setup_help: - out['get_visible_columns'] = frappe.get_attr("frappe.www.print.get_visible_columns") + out['get_visible_columns'] = get_visible_columns out['frappe']['date_format'] = date_format out['frappe']["db"] = { "get_value": frappe.db.get_value, diff --git a/frappe/utils/print_format.py b/frappe/utils/print_format.py index 28952a45c1..0528ae25d1 100644 --- a/frappe/utils/print_format.py +++ b/frappe/utils/print_format.py @@ -12,7 +12,7 @@ from pyPdf import PdfFileWriter, PdfFileReader no_cache = 1 no_sitemap = 1 -base_template_path = "templates/www/print.html" +base_template_path = "templates/www/printview.html" standard_format = "templates/print_formats/standard.html" @frappe.whitelist() diff --git a/frappe/website/doctype/blog_post/blog_post.py b/frappe/website/doctype/blog_post/blog_post.py index 7457349b58..ed6298f998 100644 --- a/frappe/website/doctype/blog_post/blog_post.py +++ b/frappe/website/doctype/blog_post/blog_post.py @@ -90,7 +90,7 @@ def get_list_context(context=None): get_list = get_blog_list, hide_filters = True, children = get_children(), - show_search = True, + # show_search = True, title = _('Blog') ) diff --git a/frappe/website/doctype/web_form/templates/web_form.html b/frappe/website/doctype/web_form/templates/web_form.html index 79bb3992ee..bd314ca7a2 100644 --- a/frappe/website/doctype/web_form/templates/web_form.html +++ b/frappe/website/doctype/web_form/templates/web_form.html @@ -34,7 +34,7 @@ {% endif %} {%- if allow_print and not is_list and not _login_required -%}
- {{ _("Print") }}
diff --git a/frappe/www/desk.py b/frappe/www/desk.py index f8f8b2b9c3..21a1f00771 100644 --- a/frappe/www/desk.py +++ b/frappe/www/desk.py @@ -18,7 +18,11 @@ def get_context(context): frappe.throw(_("You are not permitted to access this page."), frappe.PermissionError) hooks = frappe.get_hooks() - boot = frappe.sessions.get() + try: + boot = frappe.sessions.get() + except Exception as e: + boot = frappe._dict(status='failed', error = str(e)) + print frappe.get_traceback() # this needs commit csrf_token = frappe.sessions.get_csrf_token() @@ -37,7 +41,8 @@ def get_context(context): "sounds": hooks["sounds"], "boot": boot if context.get("for_mobile") else boot_json, "csrf_token": csrf_token, - "background_image": boot.user.background_image or boot.default_background_image, + "background_image": (boot.status != 'failed' and + (boot.user.background_image or boot.default_background_image) or None), "google_analytics_id": frappe.conf.get("google_analytics_id"), "mixpanel_id": frappe.conf.get("mixpanel_id") } diff --git a/frappe/www/print.html b/frappe/www/printview.html similarity index 100% rename from frappe/www/print.html rename to frappe/www/printview.html diff --git a/frappe/www/print.py b/frappe/www/printview.py similarity index 99% rename from frappe/www/print.py rename to frappe/www/printview.py index 37eaef2949..31c1a0a76e 100644 --- a/frappe/www/print.py +++ b/frappe/www/printview.py @@ -14,7 +14,7 @@ from markdown2 import markdown no_cache = 1 no_sitemap = 1 -base_template_path = "templates/www/print.html" +base_template_path = "templates/www/printview.html" standard_format = "templates/print_formats/standard.html" def get_context(context): @@ -148,9 +148,9 @@ def get_html(doc, name=None, print_format=None, meta=None, "footer": letter_head.footer, "print_settings": frappe.get_doc("Print Settings") } - + html = template.render(args, filters={"len": len}) - + if cint(trigger_print): html += trigger_print_script