From 68cab5070ad7c323484f85a2de6a6fa0fbbba341 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 21 Jul 2014 12:01:56 +0530 Subject: [PATCH] separated macros --- frappe/__init__.py | 6 + frappe/templates/pages/print.py | 16 +-- frappe/templates/print_formats/standard.html | 117 +----------------- .../print_formats/standard_macros.html | 108 ++++++++++++++++ 4 files changed, 127 insertions(+), 120 deletions(-) create mode 100644 frappe/templates/print_formats/standard_macros.html 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) -%} -
- - - - - {% for tdf in visible_columns %} - - {% endfor %} - - - - {% for d in data %} - - - {% for tdf in visible_columns %} - - {% endfor %} - - {% endfor %} - -
Sr - {{ tdf.label }}
{{ d.idx }}{{ print_value(tdf, d, table_meta) }}
-
- {%- endif -%} - {%- endif -%} -{%- endmacro -%} - -{%- macro render_field_with_label(df) -%} -
-
- {% if df.fieldtype not in ("Image","HTML") and - doc.get(df.fieldname) %} - - {% endif %} -
-
- {% if doc.get(df.fieldname) != None -%} - {{ print_value(df, doc, meta) }}{% endif %} -
-
-{%- endmacro -%} - -{%- macro render_text_field(df) -%} -{%- if doc.get(df.fieldname) != None -%} -
- {%- if df.fieldtype=="Code" %}
{% endif %}
-    {{ doc.get(df.fieldname) }}
-    {% if df.fieldtype=="Code" %}
{% endif -%} -
-{%- endif -%} -{%- endmacro -%} - -{%- macro print_value(df, d, meta) -%} - {% if df.fieldtype=="Check" %} - - {% elif df.fieldtype=="Image" %} - - {% else %} - {{ format(d[df.fieldname], df, doc) if df.fieldname else "" }} - {% endif %} -{%- endmacro %} - -{% macro get_width(fieldtype) -%} - {%- if fieldtype in ("Int", "Check", "Float", "Currency") -%}{{ 80 }} - {%- else -%}{{ 150 }}{% endif -%} -{%- endmacro %} - -{%- macro add_header(page_num, max_pages) -%} - {% if letter_head and not no_letterhead|int %} -
{{ letter_head }}
- {% endif %} - - {%- if meta.is_submittable and doc.docstatus==0-%} -
-

DRAFT

- {%- endif -%} - {%- if meta.is_submittable and doc.docstatus==2-%} -
-

CANCELLED

- {%- endif -%} - {% if max_pages > 1 %} -

{{ _("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 %}
- {{ add_header(loop.index, layout|len) }} + {{ add_header(loop.index, layout|len, doc) }} {% for section in page %}
{% for column in section %}
{% for df in column %} - {{ render_field(df) }} + {{ render_field(df, doc) }} {% endfor %}
{% endfor %} diff --git a/frappe/templates/print_formats/standard_macros.html b/frappe/templates/print_formats/standard_macros.html new file mode 100644 index 0000000000..6aaa585539 --- /dev/null +++ b/frappe/templates/print_formats/standard_macros.html @@ -0,0 +1,108 @@ +{% macro render_field(df, doc) -%} + {%- if df.fieldtype=="Table" -%} + {{ render_table(df, doc) }} + {%- elif df.fieldtype in ("Text", "Text Editor", "Code") -%} + {{ render_text_field(df, doc) }} + {%- else -%} + {{ render_field_with_label(df, doc) }} + {%- endif -%} +{%- endmacro -%} + +{%- macro render_table(df, doc) -%} + {%- 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) -%} +
+ + + + + {% for tdf in visible_columns %} + + {% endfor %} + + + + {% for d in data %} + + + {% for tdf in visible_columns %} + + {% endfor %} + + {% endfor %} + +
Sr + {{ tdf.label }}
{{ d.idx }}{{ print_value(tdf, d, doc) }}
+
+ {%- endif -%} + {%- endif -%} +{%- endmacro -%} + +{%- macro render_field_with_label(df, doc) -%} +
+
+ {% if df.fieldtype not in ("Image","HTML") and + doc.get(df.fieldname) %} + + {% endif %} +
+
+ {% if doc.get(df.fieldname) != None -%} + {{ print_value(df, doc) }}{% endif %} +
+
+{%- endmacro -%} + +{%- macro render_text_field(df, doc) -%} +{%- if doc.get(df.fieldname) != None -%} +
+ {%- if df.fieldtype=="Code" %}
{% endif %}
+    {{ doc.get(df.fieldname) }}
+    {% if df.fieldtype=="Code" %}
{% endif -%} +
+{%- endif -%} +{%- endmacro -%} + +{%- macro print_value(df, doc, parent_doc=None) -%} + {% if df.fieldtype=="Check" %} + + {% elif df.fieldtype=="Image" %} + + {% else %} + {{ frappe.format_value(doc[df.fieldname], df, parent_doc or doc) if df.fieldname else "" }} + {% endif %} +{%- endmacro %} + +{% macro get_width(fieldtype) -%} + {%- if fieldtype in ("Int", "Check", "Float", "Currency") -%}{{ 80 }} + {%- else -%}{{ 150 }}{% endif -%} +{%- endmacro %} + +{%- macro add_header(page_num, max_pages, doc) -%} + {% if letter_head and not no_letterhead|int %} +
{{ letter_head }}
+ {% endif %} + + {%- if doc.meta.is_submittable and doc.docstatus==0-%} +
+

DRAFT

+ {%- endif -%} + {%- if doc.meta.is_submittable and doc.docstatus==2-%} +
+

CANCELLED

+ {%- endif -%} + {% if max_pages > 1 %} +

{{ _("Page #{0} of {1}").format(page_num, max_pages) }}

+ {% endif %} +{%- endmacro -%}