From 4527a7939a420ac095c4d5e43dff06aedbee757e Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Tue, 3 Feb 2015 18:38:01 +0530 Subject: [PATCH 1/4] Make submit and cancel methods whitelisted --- frappe/model/document.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/frappe/model/document.py b/frappe/model/document.py index 916b545fbf..af6851cabc 100644 --- a/frappe/model/document.py +++ b/frappe/model/document.py @@ -411,10 +411,17 @@ class Document(BaseDocument): fn.__name__ = method.encode("utf-8") return Document.hook(fn)(self, *args, **kwargs) + @staticmethod + def whitelist(f): + f.whitelisted = True + return f + + @whitelist.__func__ def submit(self): self.docstatus = 1 self.save() + @whitelist.__func__ def cancel(self): self.docstatus = 2 self.save() @@ -451,16 +458,12 @@ class Document(BaseDocument): elif self._action=="update_after_submit": self.run_method("on_update_after_submit") + def check_no_back_links_exist(self): from frappe.model.delete_doc import check_if_doc_is_linked if not self.get("ignore_links"): check_if_doc_is_linked(self, method="Cancel") - @staticmethod - def whitelist(f): - f.whitelisted = True - return f - @staticmethod def hook(f): def add_to_return_value(self, new_return_value): From 0da0eaaa926c5a7606762103490e85c5878c8b60 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Thu, 5 Feb 2015 15:05:20 +0530 Subject: [PATCH 2/4] [optimization] use for loop instead of $.each during create and copy doc operations --- frappe/public/js/frappe/form/grid.js | 20 +++++++++++--------- frappe/public/js/frappe/form/layout.js | 6 ++++-- frappe/public/js/frappe/model/create_new.js | 18 ++++++++++-------- frappe/public/js/frappe/model/meta.js | 6 ++++-- frappe/public/js/frappe/model/model.js | 19 ++++++++++++------- 5 files changed, 41 insertions(+), 28 deletions(-) diff --git a/frappe/public/js/frappe/form/grid.js b/frappe/public/js/frappe/form/grid.js index 8744517e5d..d1e651fee9 100644 --- a/frappe/public/js/frappe/form/grid.js +++ b/frappe/public/js/frappe/form/grid.js @@ -142,9 +142,10 @@ frappe.ui.form.Grid = Class.extend({ set_column_disp: function(fieldname, show) { if($.isArray(fieldname)) { var me = this; - $.each(fieldname, function(i, fname) { + for(var i=0, l=fieldname.length; i'; } - $col = this.grid.$row_actions.clone().appendTo(this.row); + $col = $(this.grid.row_actions).appendTo(this.row); if($col.width() < 50) { $col.toggle(false); @@ -478,9 +479,10 @@ frappe.ui.form.GridRow = Class.extend({ this.layout.refresh(this.doc); // copy get_query to fields - $.each(this.grid.fieldinfo || {}, function(fieldname, fi) { + for(var fieldname in (this.grid.fieldinfo || {})) { + var fi = this.grid.fieldinfo[fieldname]; $.extend(me.fields_dict[fieldname], fi); - }) + } this.toggle_add_delete_button_display(this.wrapper.find(".panel:first")); diff --git a/frappe/public/js/frappe/form/layout.js b/frappe/public/js/frappe/form/layout.js index 6b70abc3b9..5d856ab6c4 100644 --- a/frappe/public/js/frappe/form/layout.js +++ b/frappe/public/js/frappe/form/layout.js @@ -50,7 +50,8 @@ frappe.ui.form.Layout = Class.extend({ this.wrapper.find(".empty-form-alert").remove(); - $.each(this.fields_list, function(i, fieldobj) { + for(var i=0, l=this.fields_list.length; i Date: Thu, 5 Feb 2015 15:24:59 +0530 Subject: [PATCH 3/4] [fix] validate email in get_email --- frappe/utils/email_lib/email_body.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frappe/utils/email_lib/email_body.py b/frappe/utils/email_lib/email_body.py index a2f242b216..21efc59001 100644 --- a/frappe/utils/email_lib/email_body.py +++ b/frappe/utils/email_lib/email_body.py @@ -23,6 +23,8 @@ def get_email(recipients, sender='', msg='', subject='[No Subject]', for attach in (attachments or []): emailobj.add_attachment(**attach) + emailobj.validate() + return emailobj class EMail: From 54482941c9f8f0e3570812b496c5d0a43d55daa0 Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Thu, 5 Feb 2015 16:14:43 +0600 Subject: [PATCH 4/4] bumped to version 4.11.1 --- frappe/__version__.py | 2 +- frappe/hooks.py | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frappe/__version__.py b/frappe/__version__.py index bdb8bda6ae..601b9bb2b3 100644 --- a/frappe/__version__.py +++ b/frappe/__version__.py @@ -1 +1 @@ -__version__ = "4.11.0" +__version__ = "4.11.1" diff --git a/frappe/hooks.py b/frappe/hooks.py index 8c08c03991..0c447688e6 100644 --- a/frappe/hooks.py +++ b/frappe/hooks.py @@ -3,7 +3,7 @@ app_title = "Frappe Framework" app_publisher = "Web Notes Technologies Pvt. Ltd." app_description = "Full Stack Web Application Framework in Python" app_icon = "assets/frappe/images/frappe.svg" -app_version = "4.11.0" +app_version = "4.11.1" app_color = "#3498db" app_email = "support@frappe.io" diff --git a/setup.py b/setup.py index 98ef872fcb..b01bafea10 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup, find_packages import os -version = "4.11.0" +version = "4.11.1" with open("requirements.txt", "r") as f: install_requires = f.readlines()