diff --git a/public/js/legacy/widgets/form/print_format.js b/public/js/legacy/widgets/form/print_format.js index 8b3075a115..e8f36631de 100644 --- a/public/js/legacy/widgets/form/print_format.js +++ b/public/js/legacy/widgets/form/print_format.js @@ -25,7 +25,7 @@ _p.def_print_style_body = "html, body, div, span, td { \ font-family: Arial, Helvetica; \ font-size: 9pt; \ }\ - pre { margin:0; padding:0;}" + pre { margin:0; padding:0;}"; _p.def_print_style_other = "\n.simpletable, .noborder { \ border-collapse: collapse;\ @@ -38,7 +38,7 @@ _p.def_print_style_other = "\n.simpletable, .noborder { \ }\ .noborder td {\ vertical-align: top;\ - }" + }"; _p.go = function(html) { var d = document.createElement('div') diff --git a/public/js/wn/print/print_table.js b/public/js/wn/print/print_table.js index 88a1d7786f..7820741412 100644 --- a/public/js/wn/print/print_table.js +++ b/public/js/wn/print/print_table.js @@ -114,12 +114,6 @@ wn.print.Table = Class.extend({ .css({"width": me.widths[ci]}) .appendTo(headrow) - if(ci==0) { - td.css({"min-width": "30px"}); - } else { - td.css({"min-width": "5%"}); - } - if(df && in_list(['Float', 'Currency'], df.fieldtype)) { td.css({"text-align": "right"}); } @@ -150,12 +144,6 @@ wn.print.Table = Class.extend({ .css(me.cell_style) .css({width: me.widths[ci]}) .appendTo(tr); - - if(ci==0) { - td.css({"min-width": "30px"}); - } else { - td.css({"min-width": "5%"}); - } }); } }); @@ -178,7 +166,8 @@ wn.print.Table = Class.extend({ }); this.widths = $.map(this.widths, function(w) { - return (flt(w) / sum * 100).toFixed(0) + "%"; + w = (flt(w) / sum * 100).toFixed(0); + return (w < 5 ? 5 : w) + "%"; }); } }, diff --git a/webnotes/utils/__init__.py b/webnotes/utils/__init__.py index 4b17c241ac..dcec500158 100644 --- a/webnotes/utils/__init__.py +++ b/webnotes/utils/__init__.py @@ -79,6 +79,12 @@ def get_email_id(user): fullname = get_fullname(user) return formataddr((fullname, user)) +def extract_email_id(email): + """fetch only the email part of the email id""" + import re + sender_email = re.findall("<([^>]*)>", email) + return sender_email and sender_email[0] or "" + def validate_email_add(email_str): """Validates the email string""" from email.utils import parseaddr diff --git a/webnotes/utils/email_lib/smtp.py b/webnotes/utils/email_lib/smtp.py index 1fa31ce1ed..4ec172448d 100644 --- a/webnotes/utils/email_lib/smtp.py +++ b/webnotes/utils/email_lib/smtp.py @@ -185,21 +185,29 @@ class EMail: def validate(self): """validate the email ids""" + from webnotes.utils import validate_email_add, extract_email_id + def _validate(email): + """validate an email field""" + if email: + if not validate_email_add(email): + # try extracting the email part and set as sender + new_email = extract_email_id(email) + if not (new_email and validate_email_add(new_email)): + webnotes.msgprint("%s is not a valid email id" % email, + raise_exception = 1) + email = new_email + return email + if not self.sender: - self.sender = webnotes.conn.get_value('Email Settings', None, 'auto_email_id') \ - or getattr(conf, 'auto_email_id', 'ERPNext Notification ') - - from webnotes.utils import validate_email_add - # validate ids - if self.sender and (not validate_email_add(self.sender)): - webnotes.msgprint("%s is not a valid email id" % self.sender, raise_exception = 1) - - if self.reply_to and (not validate_email_add(self.reply_to)): - webnotes.msgprint("%s is not a valid email id" % self.reply_to, raise_exception = 1) - + # TODO: remove erpnext id + self.sender = webnotes.conn.get_value('Email Settings', None, + 'auto_email_id') or getattr(conf, 'auto_email_id') + + self.sender = _validate(self.sender) + self.reply_to = _validate(self.reply_to) + for e in self.recipients + (self.cc or []): - if e.strip() and not validate_email_add(e): - webnotes.msgprint("%s is not a valid email id" % e, raise_exception = 1) + _validate(e.strip()) def make(self): """build into msg_root""" diff --git a/webnotes/utils/file_manager.py b/webnotes/utils/file_manager.py index 71bc73420c..03f9230a6a 100644 --- a/webnotes/utils/file_manager.py +++ b/webnotes/utils/file_manager.py @@ -127,7 +127,7 @@ def save_file(fname, content, module=None): f.file_name = fname f.save(1) # rename new file - os.rename(new_fname, os.path.join(get_files_path(), f.name)) + os.rename(new_fname, os.path.join(get_files_path(), f.name)) return f.name def check_max_file_size(content):