refactor: refactor contextual print setting implementation
This commit is contained in:
parent
52eebb4585
commit
7841dd9461
7 changed files with 34 additions and 86 deletions
|
|
@ -88,7 +88,6 @@ def get_bootinfo():
|
|||
bootinfo.frequently_visited_links = frequently_visited_links()
|
||||
bootinfo.link_preview_doctypes = get_link_preview_doctypes()
|
||||
bootinfo.additional_filters_config = get_additional_filters_from_hooks()
|
||||
bootinfo.additional_print_settings = get_additional_print_settings_from_hooks()
|
||||
|
||||
return bootinfo
|
||||
|
||||
|
|
@ -309,10 +308,3 @@ def get_additional_filters_from_hooks():
|
|||
|
||||
return filter_config
|
||||
|
||||
def get_additional_print_settings_from_hooks():
|
||||
settings = frappe._dict()
|
||||
hooks = frappe.get_hooks('additional_print_settings')
|
||||
for hook in hooks:
|
||||
settings.update(frappe.get_attr(hook)())
|
||||
|
||||
return settings
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ class Note(Document):
|
|||
# expire this notification in a week (default)
|
||||
self.expire_notification_on = frappe.utils.add_days(self.creation, 7)
|
||||
|
||||
def before_print(self):
|
||||
def before_print(self, settings=None):
|
||||
self.print_heading = self.name
|
||||
self.sub_heading = ""
|
||||
|
||||
|
|
|
|||
|
|
@ -61,11 +61,6 @@ frappe.ui.form.PrintView = class {
|
|||
() => this.printit(), 'printer'
|
||||
);
|
||||
|
||||
// this.page.add_button(
|
||||
// __('Form'),
|
||||
// () => frappe.set_route('Form', this.frm.doctype, this.frm.docname),
|
||||
// );
|
||||
|
||||
this.page.add_button(
|
||||
__('Full Page'),
|
||||
() => this.render_page('/printview?'),
|
||||
|
|
@ -85,9 +80,7 @@ frappe.ui.form.PrintView = class {
|
|||
}
|
||||
|
||||
setup_sidebar() {
|
||||
this.sidebar = $(`<div class="print-preview-sidebar">`).appendTo(
|
||||
this.page.sidebar
|
||||
);
|
||||
this.sidebar = this.page.sidebar.addClass('print-preview-sidebar');
|
||||
|
||||
this.print_sel = this.add_sidebar_item(
|
||||
{
|
||||
|
|
@ -153,7 +146,6 @@ frappe.ui.form.PrintView = class {
|
|||
field.set_input(df.default);
|
||||
}
|
||||
|
||||
|
||||
return field;
|
||||
}
|
||||
|
||||
|
|
@ -212,14 +204,12 @@ frappe.ui.form.PrintView = class {
|
|||
setup_additional_settings() {
|
||||
this.additional_settings = {};
|
||||
this.sidebar_dynamic_section.empty();
|
||||
if (frappe.boot.additional_print_settings) {
|
||||
frappe
|
||||
.xcall('frappe.printing.page.print.print.get_settings_to_show', {
|
||||
doctype: this.frm.doc.doctype,
|
||||
docname: this.frm.doc.name
|
||||
})
|
||||
.then((settings) => this.add_settings_to_sidebar(settings));
|
||||
}
|
||||
frappe
|
||||
.xcall('frappe.printing.page.print.print.get_print_settings_to_show', {
|
||||
doctype: this.frm.doc.doctype,
|
||||
docname: this.frm.doc.name
|
||||
})
|
||||
.then((settings) => this.add_settings_to_sidebar(settings));
|
||||
}
|
||||
|
||||
add_settings_to_sidebar(settings) {
|
||||
|
|
@ -231,31 +221,8 @@ frappe.ui.form.PrintView = class {
|
|||
this.additional_settings[field.df.fieldname] = val;
|
||||
this.preview();
|
||||
},
|
||||
}, true)
|
||||
}, true);
|
||||
}
|
||||
// for (let key of Object.keys(settings)) {
|
||||
// const setting = settings[key];
|
||||
// this.additional_settings[key] = {
|
||||
// set_template: setting.set_template,
|
||||
// value: setting.value,
|
||||
// child_field: setting.child_field,
|
||||
// };
|
||||
|
||||
// let field = this.add_sidebar_item(
|
||||
// {
|
||||
// fieldname: key,
|
||||
// label: setting.label,
|
||||
// fieldtype: setting.fieldtype,
|
||||
// change: () => {
|
||||
// const val = field.get_value();
|
||||
// this.additional_settings[field.df.fieldname].value = val;
|
||||
// this.preview();
|
||||
// },
|
||||
// },
|
||||
// setting.value,
|
||||
// true
|
||||
// );
|
||||
// }
|
||||
}
|
||||
|
||||
edit_print_format() {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
import frappe
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_settings_to_show(doctype, docname):
|
||||
def get_print_settings_to_show(doctype, docname):
|
||||
doc = frappe.get_doc(doctype, docname)
|
||||
# settings_config = frappe.parse_json(settings_config)
|
||||
print_settings = frappe.get_single('Print Settings')
|
||||
|
||||
if hasattr(doc, 'get_print_settings'):
|
||||
|
|
@ -17,15 +16,4 @@ def get_settings_to_show(doctype, docname):
|
|||
df.default = print_settings.get(fieldname)
|
||||
print_settings_fields.append(df)
|
||||
|
||||
# for key in settings_config:
|
||||
# config = frappe._dict(settings_config[key])
|
||||
# if frappe.get_attr(config.condition)(doc):
|
||||
# df = print_settings.meta.get_field(key)
|
||||
# settings[key] = {
|
||||
# 'fieldtype': df.fieldtype,
|
||||
# 'label': df.label,
|
||||
# 'default': print_settings.get(key),
|
||||
# # 'child_field': config.child_field,
|
||||
# # 'set_template': config.set_template
|
||||
# }
|
||||
return print_settings_fields
|
||||
|
|
|
|||
|
|
@ -33,7 +33,9 @@
|
|||
}
|
||||
}
|
||||
|
||||
.print-preview-sidebar {
|
||||
.layout-side-section.print-preview-sidebar {
|
||||
padding-right: var(--padding-md);
|
||||
|
||||
.clearfix {
|
||||
display: none;
|
||||
}
|
||||
|
|
@ -45,8 +47,8 @@
|
|||
}
|
||||
|
||||
.icon {
|
||||
width: 14px;
|
||||
top: 6px;
|
||||
width: 13px;
|
||||
top: 7px;
|
||||
right: 5px;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,10 +40,8 @@
|
|||
<tr>
|
||||
<th style="width: 40px" class="table-sr">{{ _("Sr") }}</th>
|
||||
{% for tdf in visible_columns %}
|
||||
{% if (data and not data[0].flags.compact_item_print) or tdf.fieldname in doc.get(df.fieldname)[0].flags.compact_item_fields %}
|
||||
<th style="width: {{ get_width(tdf) }};" class="{{ get_align_class(tdf) }}" {{ fieldmeta(df) }}>
|
||||
{{ _(tdf.label) }}</th>
|
||||
{% endif %}
|
||||
<th style="width: {{ get_width(tdf) }};" class="{{ get_align_class(tdf) }}" {{ fieldmeta(df) }}>
|
||||
{{ _(tdf.label) }}</th>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
</thead>
|
||||
|
|
@ -52,10 +50,13 @@
|
|||
<tr>
|
||||
<td class="table-sr">{{ d.idx }}</td>
|
||||
{% for tdf in visible_columns %}
|
||||
{% if not doc.get(df.fieldname)[0].flags.compact_item_print or tdf.fieldname in doc.get(df.fieldname)[0].flags.compact_item_fields %}
|
||||
<td class="{{ get_align_class(tdf) }}" {{ fieldmeta(df) }}>
|
||||
<div class="value">{{ print_value(tdf, d, doc, visible_columns) }}</div></td>
|
||||
{% endif %}
|
||||
{% if doc.child_print_templates %}
|
||||
{%- set child_templates = doc.child_print_templates.get(df.fieldname) -%}
|
||||
<div class="value">{{ print_value(tdf, d, doc, visible_columns, child_templates) }}</div></td>
|
||||
{% else %}
|
||||
<div class="value">{{ print_value(tdf, d, doc, visible_columns) }}</div></td>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
|
@ -117,10 +118,9 @@ data-fieldname="{{ df.fieldname }}" data-fieldtype="{{ df.fieldtype }}"
|
|||
{{ "" }}
|
||||
{%- endmacro -%}
|
||||
|
||||
{%- macro print_value(df, doc, parent_doc=None, visible_columns=None) -%}
|
||||
{% if doc.print_templates and
|
||||
doc.print_templates.get(df.fieldname) %}
|
||||
{% include doc.print_templates[df.fieldname] %}
|
||||
{%- macro print_value(df, doc, parent_doc=None, visible_columns=None, child_templates=None) -%}
|
||||
{% if child_templates and child_templates[df.fieldname] %}
|
||||
{% include child_templates[df.fieldname] %}
|
||||
{% elif df.fieldtype=="Check" %}
|
||||
<i class="{{ 'fa fa-check' if doc[df.fieldname] }}"></i>
|
||||
{% elif df.fieldtype=="Image" %}
|
||||
|
|
|
|||
|
|
@ -92,10 +92,7 @@ def get_rendered_template(doc, name=None, print_format=None, meta=None,
|
|||
settings=None):
|
||||
|
||||
print_settings = frappe.get_single("Print Settings").as_dict()
|
||||
# print_settings.update(settings.value or {})
|
||||
|
||||
# if settings:
|
||||
# print_settings = handle_contextual_settings(doc, print_settings, settings)
|
||||
print_settings.update(settings or {})
|
||||
|
||||
if isinstance(no_letterhead, string_types):
|
||||
no_letterhead = cint(no_letterhead)
|
||||
|
|
@ -116,7 +113,7 @@ def get_rendered_template(doc, name=None, print_format=None, meta=None,
|
|||
if doc.docstatus==2 and not cint(print_settings.allow_print_for_cancelled):
|
||||
frappe.throw(_("Not allowed to print cancelled documents"), frappe.PermissionError)
|
||||
|
||||
doc.run_method("before_print")
|
||||
doc.run_method("before_print", print_settings)
|
||||
|
||||
if not hasattr(doc, "print_heading"): doc.print_heading = None
|
||||
if not hasattr(doc, "sub_heading"): doc.sub_heading = None
|
||||
|
|
@ -323,6 +320,7 @@ def make_layout(doc, meta, format_data=None):
|
|||
original = meta.get_field(df.fieldname)
|
||||
if original:
|
||||
newdf = original.as_dict()
|
||||
newdf.hide_in_print_layout = original.get('hide_in_print_layout')
|
||||
newdf.update(df)
|
||||
df = newdf
|
||||
|
||||
|
|
@ -392,10 +390,6 @@ def is_visible(df, doc):
|
|||
if df.fieldtype in ("Section Break", "Column Break", "Button"):
|
||||
return False
|
||||
|
||||
if hasattr(doc, "hide_in_print_layout"):
|
||||
if df.fieldname in doc.hide_in_print_layout:
|
||||
return False
|
||||
|
||||
if (df.permlevel or 0) > 0 and not doc.has_permlevel_access_to(df.fieldname, df):
|
||||
return False
|
||||
|
||||
|
|
@ -469,7 +463,12 @@ def get_visible_columns(data, table_meta, df):
|
|||
"""Returns list of visible columns based on print_hide and if all columns have value."""
|
||||
columns = []
|
||||
doc = data[0] or frappe.new_doc(df.options)
|
||||
|
||||
hide_in_print_layout = df.get('hide_in_print_layout') or []
|
||||
|
||||
def add_column(col_df):
|
||||
if col_df.fieldname in hide_in_print_layout:
|
||||
return False
|
||||
return is_visible(col_df, doc) \
|
||||
and column_has_value(data, col_df.get("fieldname"), col_df)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue