Skip to content

Commit dbd9d9e

Browse files
committed
Merge branch 'staging' into production
2 parents f75c7ee + e9b919f commit dbd9d9e

10 files changed

Lines changed: 98 additions & 42 deletions

File tree

frappe/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
sys.setdefaultencoding("utf-8")
2525

2626
__frappe_version__ = '12.8.1'
27-
__version__ = '2.2.1'
27+
__version__ = '2.2.2'
2828
__title__ = "Frappe Framework"
2929

3030
local = Local()

frappe/core/doctype/doctype/doctype.json

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"autoname",
2828
"name_case",
2929
"column_break_15",
30+
"file_autoname",
3031
"description",
3132
"form_settings_section",
3233
"image_field",
@@ -189,7 +190,7 @@
189190
"label": "Naming"
190191
},
191192
{
192-
"description": "Naming Options:\n<ol><li><b>field:[fieldname]</b> - By Field</li><li><b>naming_series:</b> - By Naming Series (field called naming_series must be present</li><li><b>Prompt</b> - Prompt user for a name</li><li><b>[series]</b> - Series by prefix (separated by a dot); for example PRE.#####</li>\n<li><b>format:EXAMPLE-{MM}morewords{fieldname1}-{fieldname2}-{#####}</b> - Replace all braced words (fieldnames, date words (DD, MM, YY), series) with their value. Outside braces, any characters can be used.</li></ol>",
193+
"description": "Naming Options:\n<ol><li><b>field:[fieldname]</b> - By Field</li><li><b>naming_series:</b> - By Naming Series (field called naming_series must be present</li><li><b>Prompt</b> - Prompt user for a name</li><li><b>[series]</b> - Series by prefix (separated by a dot); for example PRE.#####</li>\n<li><b>format:EXAMPLE-{MM}-{fieldname1}-{fieldname2}-{#####}</b> - Replace all braced words (fieldnames, date words (DD, MM, YY), series) with their value. Outside braces, any characters can be used.</li></ol>",
193194
"fieldname": "autoname",
194195
"fieldtype": "Data",
195196
"label": "Auto Name",
@@ -461,11 +462,17 @@
461462
"fieldname": "show_title_field_in_link",
462463
"fieldtype": "Check",
463464
"label": "Show Title in Link and Table MultiSelect Field"
465+
},
466+
{
467+
"description": "File Naming Options:\n<ol><li><b>field:[fieldname]</b> - By Field</li><li><b>naming_series:</b> - By Naming Series (field called naming_series must be present</li><li><b>Prompt</b> - Prompt user for a name</li><li><b>[series]</b> - Series by prefix (separated by a dot); for example PRE.#####</li>\n<li><b>format:EXAMPLE-{MM}-{fieldname1}-{fieldname2}-{#####}</b> - Replace all braced words (fieldnames, date words (DD, MM, YY), series) with their value. Outside braces, any characters can be used.</li></ol>",
468+
"fieldname": "file_autoname",
469+
"fieldtype": "Data",
470+
"label": "File Auto Name"
464471
}
465472
],
466473
"icon": "fa fa-bolt",
467474
"idx": 6,
468-
"modified": "2020-11-09 18:40:33.094873",
475+
"modified": "2021-05-17 03:02:46.435397",
469476
"modified_by": "Administrator",
470477
"module": "Core",
471478
"name": "DocType",

frappe/core/doctype/report/report.js

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,31 @@
11
frappe.ui.form.on('Report', {
22
refresh: function(frm) {
3-
if(!frappe.boot.developer_mode && frappe.session.user !== 'Administrator') {
3+
if (frm.doc.is_standard === "Yes" && !frappe.boot.developer_mode) {
44
// make the document read-only
5-
frm.set_read_only();
5+
frm.disable_form();
6+
} else {
7+
frm.enable_save();
68
}
79

810
let doc = frm.doc;
9-
frm.add_custom_button(__("Show Report"), function() {
10-
switch(doc.report_type) {
11-
case "Report Builder":
12-
frappe.set_route('List', doc.ref_doctype, 'Report', doc.name);
13-
break;
14-
case "Query Report":
15-
frappe.set_route("query-report", doc.name);
16-
break;
17-
case "Script Report":
18-
frappe.set_route("query-report", doc.name);
19-
break;
20-
case "Custom Report":
21-
frappe.set_route("query-report", doc.name);
22-
break;
23-
}
24-
}, "fa fa-table");
11+
if(!frm.is_new()) {
12+
frm.add_custom_button(__("Show Report"), function() {
13+
switch(doc.report_type) {
14+
case "Report Builder":
15+
frappe.set_route('List', doc.ref_doctype, 'Report', doc.name);
16+
break;
17+
case "Query Report":
18+
frappe.set_route("query-report", doc.name);
19+
break;
20+
case "Script Report":
21+
frappe.set_route("query-report", doc.name);
22+
break;
23+
case "Custom Report":
24+
frappe.set_route("query-report", doc.name);
25+
break;
26+
}
27+
}, "fa fa-table");
28+
}
2529

2630
if (doc.is_standard === "Yes") {
2731
frm.add_custom_button(doc.disabled ? __("Enable Report") : __("Disable Report"), function() {

frappe/custom/doctype/customize_form/customize_form.json

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@
2525
"show_title_field_in_link",
2626
"image_field",
2727
"search_fields",
28+
"auto_name_section_section",
29+
"autoname",
30+
"cb_autoname_column",
31+
"file_autoname",
2832
"section_break_8",
2933
"sort_field",
3034
"column_break_10",
@@ -215,13 +219,36 @@
215219
"fieldname": "attach_document_print",
216220
"fieldtype": "Check",
217221
"label": "Attach Document Print"
222+
},
223+
{
224+
"description": "File Naming Options:\n<ol><li><b>field:[fieldname]</b> - By Field</li><li><b>naming_series:</b> - By Naming Series (field called naming_series must be present</li><li><b>Prompt</b> - Prompt user for a name</li><li><b>[series]</b> - Series by prefix (separated by a dot); for example PRE.#####</li>\n<li><b>format:EXAMPLE-{MM}-{fieldname1}-{fieldname2}-{#####}</b> - Replace all braced words (fieldnames, date words (DD, MM, YY), series) with their value. Outside braces, any characters can be used.</li></ol>",
225+
"fieldname": "autoname",
226+
"fieldtype": "Data",
227+
"label": "AutoName"
228+
},
229+
{
230+
"depends_on": "doc_type",
231+
"fieldname": "auto_name_section_section",
232+
"fieldtype": "Section Break",
233+
"label": "Naming"
234+
},
235+
{
236+
"fieldname": "cb_autoname_column",
237+
"fieldtype": "Column Break"
238+
},
239+
{
240+
"description": "File Naming Options:\n<ol><li><b>field:[fieldname]</b> - By Field</li><li><b>naming_series:</b> - By Naming Series (field called naming_series must be present</li><li><b>Prompt</b> - Prompt user for a name</li><li><b>[series]</b> - Series by prefix (separated by a dot); for example PRE.#####</li>\n<li><b>format:EXAMPLE-{MM}-{fieldname1}-{fieldname2}-{#####}</b> - Replace all braced words (fieldnames, date words (DD, MM, YY), series) with their value. Outside braces, any characters can be used.</li></ol>",
241+
"fieldname": "file_autoname",
242+
"fieldtype": "Data",
243+
"label": "File Auto Name"
218244
}
219245
],
246+
"file_auto_name": "format:SO-{YYYY}-{customer_name}-{####}",
220247
"hide_toolbar": 1,
221248
"icon": "fa fa-glass",
222249
"idx": 1,
223250
"issingle": 1,
224-
"modified": "2021-03-16 02:33:12.086754",
251+
"modified": "2021-05-17 02:54:53.063554",
225252
"modified_by": "Administrator",
226253
"module": "Custom",
227254
"name": "Customize Form",
@@ -242,4 +269,4 @@
242269
"sort_field": "modified",
243270
"sort_order": "DESC",
244271
"track_changes": 1
245-
}
272+
}

frappe/custom/doctype/customize_form/customize_form.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@
3535
'show_title_field_in_link': 'Check',
3636
'send_me_a_copy': 'Check',
3737
'send_read_receipt': 'Check',
38-
'attach_document_print': 'Check'
38+
'attach_document_print': 'Check',
39+
'file_autoname': 'Data',
40+
'autoname': 'Data'
3941
}
4042

4143
docfield_properties = {

frappe/desk/doctype/bulk_update/bulk_update.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@ def update(doctype, field, value, condition='', limit=500):
2727
)
2828
data = {}
2929
data[field] = value
30-
return submit_cancel_or_update_docs(doctype, docnames, 'update', data)
30+
return submit_cancel_delete_or_update_docs(doctype, docnames, 'update', data)
3131

3232

3333
@frappe.whitelist()
34-
def submit_cancel_or_update_docs(doctype, docnames, action='submit', data=None):
34+
def submit_cancel_delete_or_update_docs(doctype, docnames, action='submit', data=None):
3535
docnames = frappe.parse_json(docnames)
3636

3737
if data:
@@ -55,6 +55,10 @@ def submit_cancel_or_update_docs(doctype, docnames, action='submit', data=None):
5555
doc.save()
5656
message = _('Updating {0}').format(doctype)
5757

58+
elif action == 'delete':
59+
doc.delete()
60+
message = _('Deleting {0}').format(doctype)
61+
5862
frappe.db.commit()
5963
show_progress(docnames, message, i, d)
6064

frappe/model/naming.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ def set_name_from_naming_options(autoname, doc):
7575
doc.name = _format_autoname(autoname, doc)
7676
elif "#" in autoname:
7777
doc.name = make_autoname(autoname, doc=doc)
78+
return doc.name
7879

7980
def set_name_by_naming_series(doc):
8081
"""Sets name by the `naming_series` property"""

frappe/public/js/frappe/list/bulk_operations.js

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,16 @@ export default class BulkOperations {
6565
}
6666

6767
delete(docnames, done = null) {
68+
let action = "delete";
6869
frappe
6970
.call({
70-
method: 'frappe.desk.reportview.delete_items',
71+
method: 'frappe.desk.doctype.bulk_update.bulk_update.submit_cancel_delete_or_update_docs',
7172
freeze: true,
7273
args: {
73-
items: docnames,
74-
doctype: this.doctype
75-
}
74+
doctype: this.doctype,
75+
action: action,
76+
docnames: docnames
77+
},
7678
})
7779
.then((r) => {
7880
let failed = r.message;
@@ -81,7 +83,11 @@ export default class BulkOperations {
8183
if (failed.length && !r._server_messages) {
8284
frappe.throw(__('Cannot delete {0}', [failed.map(f => f.bold()).join(', ')]));
8385
}
84-
if (failed.length < docnames.length) {
86+
if (!(Object.keys(failed).length)) {
87+
frappe.show_alert({
88+
message: __("Deleted Successfully"),
89+
indicator: "green"
90+
});
8591
frappe.utils.play_sound('delete');
8692
if (done) done();
8793
}
@@ -119,7 +125,7 @@ export default class BulkOperations {
119125
action = action.toLowerCase();
120126
frappe
121127
.call({
122-
method: 'frappe.desk.doctype.bulk_update.bulk_update.submit_cancel_or_update_docs',
128+
method: 'frappe.desk.doctype.bulk_update.bulk_update.submit_cancel_delete_or_update_docs',
123129
args: {
124130
doctype: this.doctype,
125131
action: action,
@@ -180,7 +186,7 @@ export default class BulkOperations {
180186
const fieldname = field_mappings[dialog.get_value('field')].fieldname;
181187
dialog.disable_primary_action();
182188
frappe.call({
183-
method: 'frappe.desk.doctype.bulk_update.bulk_update.submit_cancel_or_update_docs',
189+
method: 'frappe.desk.doctype.bulk_update.bulk_update.submit_cancel_delete_or_update_docs',
184190
args: {
185191
doctype: this.doctype,
186192
freeze: true,

frappe/public/js/frappe/ui/messages.js

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,22 +34,16 @@ frappe.confirm = function(message, ifyes, ifno) {
3434
primary_action: function() {
3535
if(ifyes) ifyes();
3636
d.hide();
37+
3738
},
38-
secondary_action_label: __("No")
39+
secondary_action_label: __("No"),
40+
secondary_action: ifno
3941
});
4042
d.show();
4143

4244
// flag, used to bind "okay" on enter
4345
d.confirm_dialog = true;
4446

45-
// no if closed without primary action
46-
if(ifno) {
47-
d.onhide = function() {
48-
if(!d.primary_action_fulfilled) {
49-
ifno();
50-
}
51-
};
52-
}
5347
return d;
5448
}
5549

frappe/utils/print_format.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from frappe.utils.pdf import get_pdf,cleanup
77
from frappe.core.doctype.access_log.access_log import make_access_log
88
from PyPDF2 import PdfFileWriter
9+
from frappe.model.naming import set_name_from_naming_options
910

1011
no_cache = 1
1112

@@ -88,6 +89,16 @@ def read_multi_pdf(output):
8889
@frappe.whitelist()
8990
def download_pdf(doctype, name, format=None, doc=None, no_letterhead=0):
9091
html = frappe.get_print(doctype, name, format, doc=doc, no_letterhead=no_letterhead)
92+
# fetch file auto name format from doctype.
93+
file_autoname = frappe.get_meta(doctype).file_autoname
94+
95+
if not doc:
96+
doc = frappe.get_doc(doctype, name)
97+
98+
if file_autoname:
99+
# based on type of format used set_name_form_naming_option return result.
100+
name = set_name_from_naming_options(file_autoname, doc)
101+
91102
frappe.local.response.filename = "{name}.pdf".format(name=name.replace(" ", "-").replace("/", "-"))
92103
frappe.local.response.filecontent = get_pdf(html)
93104
frappe.local.response.type = "pdf"

0 commit comments

Comments
 (0)