review changes
This commit is contained in:
parent
be2abdbc56
commit
cfe4dc41c0
8 changed files with 119 additions and 132 deletions
|
|
@ -1,7 +1,7 @@
|
|||
// Copyright (c) 2021, Frappe Technologies and contributors
|
||||
// For license information, please see license.txt
|
||||
|
||||
frappe.ui.form.on('Printer Settings', {
|
||||
frappe.ui.form.on('Network Printer Settings', {
|
||||
onload (frm) {
|
||||
if (!frm.is_new()) {
|
||||
frm.trigger("connect_print_server");
|
||||
|
|
@ -1,17 +1,15 @@
|
|||
{
|
||||
"actions": [],
|
||||
"autoname": "format:{server_ip}-{printer_name}",
|
||||
"creation": "2021-09-07 11:13:57.724404",
|
||||
"autoname": "Prompt",
|
||||
"creation": "2021-09-17 11:26:06.943999",
|
||||
"doctype": "DocType",
|
||||
"editable_grid": 1,
|
||||
"engine": "InnoDB",
|
||||
"field_order": [
|
||||
"server_ip",
|
||||
"printer_name",
|
||||
"port",
|
||||
"column_break_4",
|
||||
"reference_doctype",
|
||||
"reference_name"
|
||||
"printer_name"
|
||||
],
|
||||
"fields": [
|
||||
{
|
||||
|
|
@ -22,13 +20,6 @@
|
|||
"label": "Server IP",
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "printer_name",
|
||||
"fieldtype": "Select",
|
||||
"in_list_view": 1,
|
||||
"label": "Printer Name",
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"default": "631",
|
||||
"fieldname": "port",
|
||||
|
|
@ -42,24 +33,18 @@
|
|||
"fieldtype": "Column Break"
|
||||
},
|
||||
{
|
||||
"fieldname": "reference_doctype",
|
||||
"fieldtype": "Link",
|
||||
"label": "Reference DocType",
|
||||
"options": "DocType"
|
||||
},
|
||||
{
|
||||
"fieldname": "reference_name",
|
||||
"fieldtype": "Dynamic Link",
|
||||
"label": "Reference Name",
|
||||
"options": "reference_doctype"
|
||||
"fieldname": "printer_name",
|
||||
"fieldtype": "Select",
|
||||
"label": "Printer Name",
|
||||
"reqd": 1
|
||||
}
|
||||
],
|
||||
"index_web_pages_for_search": 1,
|
||||
"links": [],
|
||||
"modified": "2021-09-13 17:19:30.713385",
|
||||
"modified": "2021-09-17 11:30:16.781655",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Printing",
|
||||
"name": "Printer Settings",
|
||||
"name": "Network Printer Settings",
|
||||
"owner": "Administrator",
|
||||
"permissions": [
|
||||
{
|
||||
|
|
@ -5,7 +5,7 @@ import frappe
|
|||
from frappe.model.document import Document
|
||||
from frappe import _
|
||||
|
||||
class PrinterSettings(Document):
|
||||
class NetworkPrinterSettings(Document):
|
||||
@frappe.whitelist()
|
||||
def get_printers_list(self,ip="localhost",port=631):
|
||||
printer_list = []
|
||||
|
|
@ -32,5 +32,5 @@ class PrinterSettings(Document):
|
|||
return printer_list
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_printer_setting(doctype):
|
||||
return frappe.db.get_value('Printer Settings', {'reference_doctype': doctype})
|
||||
def get_network_printer_settings():
|
||||
return frappe.db.get_list('Network Printer Settings', pluck='name')
|
||||
|
|
@ -4,5 +4,5 @@
|
|||
# import frappe
|
||||
import unittest
|
||||
|
||||
class TestPrinterSettings(unittest.TestCase):
|
||||
class TestNetworkPrinterSettings(unittest.TestCase):
|
||||
pass
|
||||
|
|
@ -19,7 +19,6 @@
|
|||
"allow_print_for_cancelled",
|
||||
"server_printer",
|
||||
"enable_print_server",
|
||||
"default_printer_setting",
|
||||
"raw_printing_section",
|
||||
"enable_raw_printing",
|
||||
"print_style_section",
|
||||
|
|
@ -157,19 +156,13 @@
|
|||
"fieldname": "font_size",
|
||||
"fieldtype": "Float",
|
||||
"label": "Font Size"
|
||||
},
|
||||
{
|
||||
"fieldname": "default_printer_setting",
|
||||
"fieldtype": "Link",
|
||||
"label": "Default Printer Setting",
|
||||
"options": "Printer Settings"
|
||||
}
|
||||
],
|
||||
"icon": "fa fa-cog",
|
||||
"index_web_pages_for_search": 1,
|
||||
"issingle": 1,
|
||||
"links": [],
|
||||
"modified": "2021-09-09 11:07:23.042310",
|
||||
"modified": "2021-09-17 12:59:14.783694",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Printing",
|
||||
"name": "Print Settings",
|
||||
|
|
|
|||
|
|
@ -113,17 +113,6 @@ frappe.ui.form.PrintView = class {
|
|||
},
|
||||
).$input;
|
||||
|
||||
if (cint(this.print_settings.enable_print_server)) {
|
||||
this.printer_sel = this.add_sidebar_item({
|
||||
fieldtype: 'Link',
|
||||
fieldname: 'printer',
|
||||
placeholder: __('Printer'),
|
||||
options: 'Printer Settings',
|
||||
default: this.printer_setting
|
||||
}).$input;
|
||||
this.get_printer_settings();
|
||||
}
|
||||
|
||||
this.letterhead_selector_df = this.add_sidebar_item(
|
||||
{
|
||||
fieldtype: 'Autocomplete',
|
||||
|
|
@ -161,25 +150,6 @@ frappe.ui.form.PrintView = class {
|
|||
return field;
|
||||
}
|
||||
|
||||
get_printer_settings() {
|
||||
let route = frappe.get_route();
|
||||
let doctype = route[1];
|
||||
let me = this;
|
||||
frappe.call({
|
||||
method: 'frappe.printing.doctype.printer_settings.printer_settings.get_printer_setting',
|
||||
args: {
|
||||
doctype: doctype,
|
||||
},
|
||||
callback: function(r) {
|
||||
if (r.message) {
|
||||
me.printer_setting = r.message;
|
||||
} else {
|
||||
me.printer_setting = me.print_settings.default_printer_setting;
|
||||
}
|
||||
me.printer_sel.val(me.printer_setting);
|
||||
},
|
||||
});
|
||||
}
|
||||
get_default_option_for_select(value) {
|
||||
return {
|
||||
label: value,
|
||||
|
|
@ -195,10 +165,7 @@ frappe.ui.form.PrintView = class {
|
|||
frappe.set_route('Form', 'Print Settings');
|
||||
});
|
||||
|
||||
if (
|
||||
frappe.model.get_doc(':Print Settings', 'Print Settings')
|
||||
.enable_raw_printing == '1'
|
||||
) {
|
||||
if (this.print_settings.enable_raw_printing == '1') {
|
||||
this.page.add_menu_item(__('Raw Printing Setting'), () => {
|
||||
this.printer_setting_dialog();
|
||||
});
|
||||
|
|
@ -209,6 +176,12 @@ frappe.ui.form.PrintView = class {
|
|||
this.edit_print_format()
|
||||
);
|
||||
}
|
||||
|
||||
if (this.print_settings.enable_print_server) {
|
||||
this.page.add_menu_item(__('Select Network Printer'), () =>
|
||||
this.network_printer_setting_dialog()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
show(frm) {
|
||||
|
|
@ -490,73 +463,109 @@ frappe.ui.form.PrintView = class {
|
|||
|
||||
printit() {
|
||||
let me = this;
|
||||
frappe.call({
|
||||
method:
|
||||
'frappe.printing.doctype.print_settings.print_settings.is_print_server_enabled',
|
||||
callback: function(data) {
|
||||
if (data.message) {
|
||||
frappe.call({
|
||||
method: 'frappe.utils.print_format.print_by_server',
|
||||
args: {
|
||||
doctype: me.frm.doc.doctype,
|
||||
name: me.frm.doc.name,
|
||||
printer_setting: me.printer_sel.val(),
|
||||
print_format: me.selected_format(),
|
||||
no_letterhead: me.with_letterhead(),
|
||||
letterhead: me.get_letterhead(),
|
||||
},
|
||||
callback: function() {},
|
||||
});
|
||||
} else if (me.get_mapped_printer().length === 1) {
|
||||
// printer is already mapped in localstorage (applies for both raw and pdf )
|
||||
if (me.is_raw_printing()) {
|
||||
me.get_raw_commands(function(out) {
|
||||
frappe.ui.form
|
||||
.qz_connect()
|
||||
.then(function() {
|
||||
let printer_map = me.get_mapped_printer()[0];
|
||||
let data = [out.raw_commands];
|
||||
let config = qz.configs.create(printer_map.printer);
|
||||
return qz.print(config, data);
|
||||
})
|
||||
.then(frappe.ui.form.qz_success)
|
||||
.catch((err) => {
|
||||
frappe.ui.form.qz_fail(err);
|
||||
});
|
||||
|
||||
if (me.print_settings.enable_print_server) {
|
||||
if (localStorage.getItem('network_printer')) {
|
||||
me.print_by_server();
|
||||
} else {
|
||||
me.network_printer_setting_dialog(() => me.print_by_server());
|
||||
}
|
||||
} else if (me.get_mapped_printer().length === 1) {
|
||||
// printer is already mapped in localstorage (applies for both raw and pdf )
|
||||
if (me.is_raw_printing()) {
|
||||
me.get_raw_commands(function(out) {
|
||||
frappe.ui.form
|
||||
.qz_connect()
|
||||
.then(function() {
|
||||
let printer_map = me.get_mapped_printer()[0];
|
||||
let data = [out.raw_commands];
|
||||
let config = qz.configs.create(printer_map.printer);
|
||||
return qz.print(config, data);
|
||||
})
|
||||
.then(frappe.ui.form.qz_success)
|
||||
.catch((err) => {
|
||||
frappe.ui.form.qz_fail(err);
|
||||
});
|
||||
} else {
|
||||
frappe.show_alert(
|
||||
});
|
||||
} else {
|
||||
frappe.show_alert(
|
||||
{
|
||||
message: __('PDF printing via "Raw Print" is not supported.'),
|
||||
subtitle: __(
|
||||
'Please remove the printer mapping in Printer Settings and try again.'
|
||||
),
|
||||
indicator: 'info',
|
||||
},
|
||||
14
|
||||
);
|
||||
//Note: need to solve "Error: Cannot parse (FILE)<URL> as a PDF file" to enable qz pdf printing.
|
||||
}
|
||||
} else if (me.is_raw_printing()) {
|
||||
// printer not mapped in localstorage and the current print format is raw printing
|
||||
frappe.show_alert(
|
||||
{
|
||||
message: __('Printer mapping not set.'),
|
||||
subtitle: __(
|
||||
'Please set a printer mapping for this print format in the Printer Settings'
|
||||
),
|
||||
indicator: 'warning',
|
||||
},
|
||||
14
|
||||
);
|
||||
me.printer_setting_dialog();
|
||||
} else {
|
||||
me.render_page('/printview?', true);
|
||||
}
|
||||
}
|
||||
|
||||
print_by_server() {
|
||||
let me = this;
|
||||
if (localStorage.getItem('network_printer')) {
|
||||
frappe.call({
|
||||
method: 'frappe.utils.print_format.print_by_server',
|
||||
args: {
|
||||
doctype: me.frm.doc.doctype,
|
||||
name: me.frm.doc.name,
|
||||
printer_setting: localStorage.getItem('network_printer'),
|
||||
print_format: me.selected_format(),
|
||||
no_letterhead: me.with_letterhead(),
|
||||
letterhead: me.get_letterhead(),
|
||||
},
|
||||
callback: function() {},
|
||||
});
|
||||
}
|
||||
}
|
||||
network_printer_setting_dialog(callback) {
|
||||
let me = this;
|
||||
frappe.call({
|
||||
method: 'frappe.printing.doctype.network_printer_settings.network_printer_settings.get_network_printer_settings',
|
||||
callback: function(r) {
|
||||
if(r.message) {
|
||||
let d = new frappe.ui.Dialog({
|
||||
title: __('Select Network Printer'),
|
||||
fields: [
|
||||
{
|
||||
message: __('PDF printing via "Raw Print" is not supported.'),
|
||||
subtitle: __(
|
||||
'Please remove the printer mapping in Printer Settings and try again.'
|
||||
),
|
||||
indicator: 'info',
|
||||
},
|
||||
14
|
||||
);
|
||||
//Note: need to solve "Error: Cannot parse (FILE)<URL> as a PDF file" to enable qz pdf printing.
|
||||
}
|
||||
} else if (me.is_raw_printing()) {
|
||||
// printer not mapped in localstorage and the current print format is raw printing
|
||||
frappe.show_alert(
|
||||
{
|
||||
message: __('Printer mapping not set.'),
|
||||
subtitle: __(
|
||||
'Please set a printer mapping for this print format in the Printer Settings'
|
||||
),
|
||||
indicator: 'warning',
|
||||
"label" : "Printer",
|
||||
"fieldname": "printer",
|
||||
"fieldtype": "Select",
|
||||
"reqd": 1,
|
||||
"options": r.message
|
||||
}
|
||||
],
|
||||
primary_action: function() {
|
||||
localStorage.setItem('network_printer', d.get_values().printer);
|
||||
if (typeof callback == "function") {
|
||||
callback();
|
||||
}
|
||||
d.hide();
|
||||
},
|
||||
14
|
||||
);
|
||||
me.printer_setting_dialog();
|
||||
} else {
|
||||
me.render_page('/printview?', true);
|
||||
primary_action_label: __('Select')
|
||||
});
|
||||
d.show();
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
render_page(method, printit = false) {
|
||||
let w = window.open(
|
||||
frappe.urllib.get_full_url(
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ def report_to_pdf(html, orientation="Landscape"):
|
|||
|
||||
@frappe.whitelist()
|
||||
def print_by_server(doctype, name, printer_setting, print_format=None, doc=None, no_letterhead=0):
|
||||
print_settings = frappe.get_doc("Printer Settings", printer_setting)
|
||||
print_settings = frappe.get_doc("Network Printer Settings", printer_setting)
|
||||
try:
|
||||
import cups
|
||||
except ImportError:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue