diff --git a/frappe/__init__.py b/frappe/__init__.py index 8fbec959cb..4af93349d6 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -610,6 +610,8 @@ def get_jenv(): jenv.globals.update({ "frappe": sys.modules[__name__], "frappe.utils": frappe.utils, + "get_visible_columns": \ + frappe.get_attr("frappe.templates.pages.print.get_visible_columns"), "_": _ }) @@ -675,3 +677,7 @@ def get_test_records(doctype): return json.loads(f.read()) else: return [] + +def format_value(value, df, doc=None): + import frappe.utils.formatters + return frappe.utils.formatters.format_value(value, df, doc) diff --git a/frappe/templates/pages/print.py b/frappe/templates/pages/print.py index 350e387bac..1822526856 100644 --- a/frappe/templates/pages/print.py +++ b/frappe/templates/pages/print.py @@ -8,7 +8,6 @@ from frappe import _ from frappe.modules import get_doc_path from jinja2 import TemplateNotFound -from frappe.utils.formatters import format_value from frappe.utils import cint no_cache = 1 @@ -50,7 +49,6 @@ def get_context(context): @frappe.whitelist() def get_html(doc, name=None, print_format=None, meta=None, no_letterhead=False, trigger_print=False): - from jinja2 import Environment if isinstance(doc, basestring) and isinstance(name, basestring): doc = frappe.get_doc(doc, name) @@ -67,26 +65,28 @@ def get_html(doc, name=None, print_format=None, meta=None, if not meta: meta = frappe.get_meta(doc.doctype) + jenv = frappe.get_jenv() if print_format in ("Standard", standard_format): - template = frappe.get_template("templates/print_formats/standard.html") + template = jenv.get_template("templates/print_formats/standard.html") else: - template = Environment().from_string(get_print_format(doc.doctype, + template =jenv.from_string(get_print_format(doc.doctype, print_format)) args = { "doc": doc, "meta": frappe.get_meta(doc.doctype), "layout": make_layout(doc, meta), - "frappe": frappe, - "utils": frappe.utils, - "get_visible_columns": get_visible_columns, - "format": format_value, "no_letterhead": no_letterhead, "trigger_print": cint(trigger_print), "letter_head": frappe.db.get_value("Letter Head", doc.letter_head, "content") if doc.get("letter_head") else "" } + + + html = template.render(args, filters={"len": len}) + + return html def get_print_format(doctype, format_name): diff --git a/frappe/templates/print_formats/standard.html b/frappe/templates/print_formats/standard.html index b92e3682ea..d9fe9c3d7a 100644 --- a/frappe/templates/print_formats/standard.html +++ b/frappe/templates/print_formats/standard.html @@ -1,123 +1,16 @@ -{% set section_made = False %} - -{% macro render_field(df) -%} - {%- if df.fieldtype=="Table" -%} - {{ render_table(df) }} - {%- elif df.fieldtype in ("Text", "Text Editor", "Code") -%} - {{ render_text_field(df) }} - {%- else -%} - {{ render_field_with_label(df) }} - {%- endif -%} -{%- endmacro -%} - -{%- macro render_table(df) -%} - {%- set table_meta = frappe.get_meta(df.options) -%} - {%- set data = doc.get(df.fieldname)[df.start:df.end] -%} - {%- if doc.table_print_templates and - doc.table_print_templates.get(df.fieldname) -%} - {% include doc.table_print_templates[df.fieldname] %} - {%- else -%} - {%- if data -%} - {%- set visible_columns = get_visible_columns(doc.get(df.fieldname), - table_meta) -%} -
| Sr | - {% for tdf in visible_columns %} -- {{ tdf.label }} | - {% endfor %} -
|---|---|
| {{ d.idx }} | - {% for tdf in visible_columns %} -{{ print_value(tdf, d, table_meta) }} | - {% endfor %} -
{% endif %}
- {{ doc.get(df.fieldname) }}
- {% if df.fieldtype=="Code" %}{% endif -%}
-{{ _("Page #{0} of {1}").format(page_num, max_pages) }}
- {% endif %} -{%- endmacro -%} +{%- set section_made = False -%} +{%- from "templates/print_formats/standard_macros.html" import add_header, + render_field -%} {% for page in layout %}| Sr | + {% for tdf in visible_columns %} ++ {{ tdf.label }} | + {% endfor %} +
|---|---|
| {{ d.idx }} | + {% for tdf in visible_columns %} +{{ print_value(tdf, d, doc) }} | + {% endfor %} +
{% endif %}
+ {{ doc.get(df.fieldname) }}
+ {% if df.fieldtype=="Code" %}{% endif -%}
+{{ _("Page #{0} of {1}").format(page_num, max_pages) }}
+ {% endif %} +{%- endmacro -%}