From ae22e2f7d34e7f13f01eef7042e6717c05c6cc1f Mon Sep 17 00:00:00 2001 From: robert schouten Date: Fri, 24 Feb 2017 15:54:36 +0800 Subject: [PATCH 01/11] [hotfix] fix email from decode --- frappe/email/receive.py | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/frappe/email/receive.py b/frappe/email/receive.py index 7bceaab1be..10212c52c2 100644 --- a/frappe/email/receive.py +++ b/frappe/email/receive.py @@ -292,16 +292,28 @@ class Email: def set_from(self): # gmail mailing-list compatibility # use X-Original-Sender if available, as gmail sometimes modifies the 'From' - _from_email = self.mail.get("X-Original-From") or self.mail["From"] - _from_email, encoding = decode_header(_from_email)[0] + _from_email = self.decode_email(self.mail.get("X-Original-From") or self.mail["From"]) + _reply_to = self.decode_email(self.mail.get("Reply-To")) - if encoding: - _from_email = _from_email.decode(encoding) + if _reply_to and not frappe.db.get_value('Email Account', {"email_id":_reply_to}, 'email_id'): + self.from_email = extract_email_id(_reply_to) else: - _from_email = _from_email.decode('utf-8') + self.from_email = extract_email_id(_from_email) - self.from_email = extract_email_id(_from_email) - self.from_real_name = email.utils.parseaddr(_from_email)[0] + if self.from_email: + self.from_email = self.from_email.lower() + + self.from_real_name = email.utils.parseaddr(_from_email)[0] if "@" in _from_email else _from_email + + def decode_email(self, email): + if not email: return + decoded = "" + for part, encoding in decode_header(email): + if encoding: + decoded += part.decode(encoding) + else: + decoded += part.decode('utf-8') + return decoded def set_content_and_type(self): self.content, self.content_type = '[Blank Email]', 'text/plain' From c28880eb27993b493b944c3ad42ed8c6a2379e61 Mon Sep 17 00:00:00 2001 From: Yaqin Shurrab Date: Mon, 27 Feb 2017 23:22:34 +0200 Subject: [PATCH 02/11] Translate the msg in _ function according to the passed lang, support multiple language in frappe.cash() --- frappe/__init__.py | 3 ++- frappe/translate.py | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index 34b69e40ac..f70cbac379 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -48,7 +48,8 @@ def _(msg, lang=None): # msg should always be unicode msg = as_unicode(msg).strip() - return get_full_dict(local.lang).get(msg) or msg + # Retrun lang_full_dict according to lang passed parameter + return get_full_dict(lang).get(msg) or msg def as_unicode(text, encoding='utf-8'): '''Convert to unicode if required''' diff --git a/frappe/translate.py b/frappe/translate.py index 80bafac7c8..82a23db9d8 100644 --- a/frappe/translate.py +++ b/frappe/translate.py @@ -179,7 +179,9 @@ def get_full_dict(lang): return {} # found in local, return! - if getattr(frappe.local, 'lang_full_dict', None) is not None: + # Check if the passed lang exists in lang_full_dict cash in frappe + if not getattr(frappe.local, 'lang_full_dict', + None) is None and frappe.local.lang_full_dict and lang in frappe.local.lang_full_dict: return frappe.local.lang_full_dict frappe.local.lang_full_dict = load_lang(lang) From e8dd3b0d844d135519ae1e3356f8da0107184345 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Sun, 5 Mar 2017 11:15:01 +0530 Subject: [PATCH 03/11] Update __init__.py --- frappe/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index f70cbac379..bc362c1f3c 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -48,7 +48,7 @@ def _(msg, lang=None): # msg should always be unicode msg = as_unicode(msg).strip() - # Retrun lang_full_dict according to lang passed parameter + # return lang_full_dict according to lang passed parameter return get_full_dict(lang).get(msg) or msg def as_unicode(text, encoding='utf-8'): From 5001e92ff9529af37b0661c24c78fa899a5636f5 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Sun, 5 Mar 2017 11:19:49 +0530 Subject: [PATCH 04/11] Update translate.py --- frappe/translate.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/frappe/translate.py b/frappe/translate.py index 82a23db9d8..0d0973b133 100644 --- a/frappe/translate.py +++ b/frappe/translate.py @@ -180,8 +180,7 @@ def get_full_dict(lang): # found in local, return! # Check if the passed lang exists in lang_full_dict cash in frappe - if not getattr(frappe.local, 'lang_full_dict', - None) is None and frappe.local.lang_full_dict and lang in frappe.local.lang_full_dict: + if getattr(frappe.local, 'lang_full_dict', {}).get(lang, None): return frappe.local.lang_full_dict frappe.local.lang_full_dict = load_lang(lang) From 8d06587d4959fb4988cb6045e408f57ac30c6392 Mon Sep 17 00:00:00 2001 From: Yaqin Shurrab Date: Sun, 5 Mar 2017 12:52:38 +0200 Subject: [PATCH 05/11] Update as the reviewer asked for changes --- frappe/__init__.py | 2 +- frappe/translate.py | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index f70cbac379..80d65e1f17 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -48,7 +48,7 @@ def _(msg, lang=None): # msg should always be unicode msg = as_unicode(msg).strip() - # Retrun lang_full_dict according to lang passed parameter + # retrun lang_full_dict according to lang passed parameter return get_full_dict(lang).get(msg) or msg def as_unicode(text, encoding='utf-8'): diff --git a/frappe/translate.py b/frappe/translate.py index 82a23db9d8..c7823f4efd 100644 --- a/frappe/translate.py +++ b/frappe/translate.py @@ -178,10 +178,7 @@ def get_full_dict(lang): if not lang: return {} - # found in local, return! - # Check if the passed lang exists in lang_full_dict cash in frappe - if not getattr(frappe.local, 'lang_full_dict', - None) is None and frappe.local.lang_full_dict and lang in frappe.local.lang_full_dict: + if getattr(frappe.local, 'lang_full_dict', {}).get(lang, None): return frappe.local.lang_full_dict frappe.local.lang_full_dict = load_lang(lang) From 6c40d4313bd40dfb598a23e8e8872e0000981b10 Mon Sep 17 00:00:00 2001 From: Yaqin Shurrab Date: Sun, 5 Mar 2017 13:26:13 +0200 Subject: [PATCH 06/11] Fix error in applied changes causes The Travis CI build fail --- frappe/translate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/translate.py b/frappe/translate.py index ec2b0e9fda..7f0b5cd3dc 100644 --- a/frappe/translate.py +++ b/frappe/translate.py @@ -179,7 +179,7 @@ def get_full_dict(lang): return {} # found in local, return! - if getattr(frappe.local, 'lang_full_dict', {}).get(lang, None): + if (lambda: {}, lambda: frappe.local.lang_full_dict)[hasattr(frappe.local, 'lang_full_dict')]().get(lang, None): return frappe.local.lang_full_dict frappe.local.lang_full_dict = load_lang(lang) From ff85aa931964123cbac8c735b57284b6edb9ed50 Mon Sep 17 00:00:00 2001 From: Yaqin Shurrab Date: Sun, 5 Mar 2017 13:26:13 +0200 Subject: [PATCH 07/11] Fix error in applied changes causes The Travis CI build fail --- frappe/translate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/translate.py b/frappe/translate.py index ec2b0e9fda..146ff770b2 100644 --- a/frappe/translate.py +++ b/frappe/translate.py @@ -179,7 +179,7 @@ def get_full_dict(lang): return {} # found in local, return! - if getattr(frappe.local, 'lang_full_dict', {}).get(lang, None): + if (lambda: {}, lambda: frappe.local.lang_full_dict)[getattr(frappe.local, 'lang_full_dict', None)]().get(lang, None): return frappe.local.lang_full_dict frappe.local.lang_full_dict = load_lang(lang) From 337812e4059da824e5d7c137a753e1774f9ec94d Mon Sep 17 00:00:00 2001 From: Yaqin Shurrab Date: Mon, 6 Mar 2017 10:00:38 +0200 Subject: [PATCH 08/11] making code simpler as @mmoksh suggessted --- frappe/translate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/translate.py b/frappe/translate.py index ac2c2d581c..8d8a2881a2 100644 --- a/frappe/translate.py +++ b/frappe/translate.py @@ -179,7 +179,7 @@ def get_full_dict(lang): return {} # found in local, return! - if (lambda: frappe.local.lang_full_dict, lambda: {})[getattr(frappe.local, 'lang_full_dict', None) is None]().get(lang, None): + if not getattr(frappe.local, 'lang_full_dict', None) and frappe.local.lang_full_dict.get(lang, None): return frappe.local.lang_full_dict frappe.local.lang_full_dict = load_lang(lang) From 0239b24ca03d328d85445e0ffce758f2582609d6 Mon Sep 17 00:00:00 2001 From: Yaqin Shurrab Date: Mon, 6 Mar 2017 10:00:38 +0200 Subject: [PATCH 09/11] making code simpler as @mmoksh suggessted --- frappe/translate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/translate.py b/frappe/translate.py index ac2c2d581c..c143e46f18 100644 --- a/frappe/translate.py +++ b/frappe/translate.py @@ -179,7 +179,7 @@ def get_full_dict(lang): return {} # found in local, return! - if (lambda: frappe.local.lang_full_dict, lambda: {})[getattr(frappe.local, 'lang_full_dict', None) is None]().get(lang, None): + if getattr(frappe.local, 'lang_full_dict', None) and frappe.local.lang_full_dict.get(lang, None): return frappe.local.lang_full_dict frappe.local.lang_full_dict = load_lang(lang) From dcc170d1b54ed714cbee90f5c3cd671229baca23 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 7 Mar 2017 22:34:24 +0530 Subject: [PATCH 10/11] minor patch fix --- frappe/patches/v6_4/reduce_varchar_length.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frappe/patches/v6_4/reduce_varchar_length.py b/frappe/patches/v6_4/reduce_varchar_length.py index bb02451d9b..a6e9e32a3f 100644 --- a/frappe/patches/v6_4/reduce_varchar_length.py +++ b/frappe/patches/v6_4/reduce_varchar_length.py @@ -4,6 +4,8 @@ import frappe def execute(): for doctype in frappe.get_all("DocType", filters={"issingle": 0}): doctype = doctype.name + if not frappe.db.table_exists(doctype): + continue for column in frappe.db.sql("desc `tab{doctype}`".format(doctype=doctype), as_dict=True): fieldname = column["Field"] From 64a10c0543ee94146e78d64baa516c4e4b62554e Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 8 Mar 2017 11:38:16 +0600 Subject: [PATCH 11/11] bumped to version 7.2.28 --- frappe/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index f5d56e824c..380a2b9b77 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -13,7 +13,7 @@ import os, sys, importlib, inspect, json from .exceptions import * from .utils.jinja import get_jenv, get_template, render_template -__version__ = '7.2.27' +__version__ = '7.2.28' __title__ = "Frappe Framework" local = Local()