From 92ca30074be54e91004fed8b16927bdfed7b356a Mon Sep 17 00:00:00 2001 From: Ritwik Puri Date: Thu, 2 Mar 2023 15:59:34 +0530 Subject: [PATCH 1/4] fix: dont get message attribute in error string in has_login_limit_exceeded --- frappe/email/receive.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/frappe/email/receive.py b/frappe/email/receive.py index c635bdd98a..eddbc14886 100644 --- a/frappe/email/receive.py +++ b/frappe/email/receive.py @@ -222,9 +222,7 @@ class EmailServer: self.pop.dele(m) except Exception as e: - if self.has_login_limit_exceeded(e): - pass - else: + if not self.has_login_limit_exceeded(e): raise out = {"latest_messages": self.latest_messages} @@ -368,7 +366,7 @@ class EmailServer: self.seen_status.update({uid: "UNSEEN"}) def has_login_limit_exceeded(self, e): - return "-ERR Exceeded the login limit" in strip(cstr(e.message)) + return "-ERR Exceeded the login limit" in strip(cstr(e)) def is_temporary_system_problem(self, e): messages = ( From 60227050938196d34fd17a5dcf0807594f42feb0 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Thu, 2 Mar 2023 16:59:29 +0530 Subject: [PATCH 2/4] fix: log raw text reponse instead of parsing JSON (#20226) Not every service responds in JSON, we shouldn't expect a JSON response. [Skip ci] --- frappe/integrations/doctype/webhook/webhook.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/integrations/doctype/webhook/webhook.py b/frappe/integrations/doctype/webhook/webhook.py index 9ab25f56b2..7d168c659f 100644 --- a/frappe/integrations/doctype/webhook/webhook.py +++ b/frappe/integrations/doctype/webhook/webhook.py @@ -160,7 +160,7 @@ def log_request( "url": url, "headers": frappe.as_json(headers) if headers else None, "data": frappe.as_json(data) if data else None, - "response": frappe.as_json(res.json()) if res else None, + "response": res and res.text, "error": frappe.get_traceback(), } ) From a6db20fe3b931b84b3fbe3f7c7774a7623da0dd3 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Thu, 2 Mar 2023 19:21:14 +0530 Subject: [PATCH 3/4] fix(DX): better error message for notification from reference doctype --- .../email/doctype/notification/notification.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/frappe/email/doctype/notification/notification.py b/frappe/email/doctype/notification/notification.py index ce19fb7b07..d5071e23a0 100644 --- a/frappe/email/doctype/notification/notification.py +++ b/frappe/email/doctype/notification/notification.py @@ -453,16 +453,17 @@ def evaluate_alert(doc: Document, alert, event): doc.reload() alert.send(doc) except TemplateError: - frappe.throw( - _("Error while evaluating Notification {0}. Please fix your template.").format(alert) + message = _("Error while evaluating Notification {0}. Please fix your template.").format( + frappe.utils.get_link_to_form("Notification", alert.name) ) + frappe.throw(message, title=_("Error in Notification")) except Exception as e: - error_log = frappe.log_error(message=frappe.get_traceback(), title=str(e)) - frappe.throw( - _("Error in Notification: {}").format( - frappe.utils.get_link_to_form("Error Log", error_log.name) - ) - ) + title = str(e) + message = frappe.get_traceback() + frappe.log_error(message=message, title=title) + + msg = f"
{title}{message}
" + frappe.throw(msg, title=_("Error in Notification")) def get_context(doc): From b17af2c32986e76147671ed568d93ae0a9c9a29f Mon Sep 17 00:00:00 2001 From: Ritwik Puri Date: Thu, 2 Mar 2023 23:23:36 +0530 Subject: [PATCH 4/4] fix: token cache expiry calculation (#20228) --- frappe/integrations/doctype/token_cache/token_cache.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frappe/integrations/doctype/token_cache/token_cache.py b/frappe/integrations/doctype/token_cache/token_cache.py index 2facc006c6..a4f34b4ad9 100644 --- a/frappe/integrations/doctype/token_cache/token_cache.py +++ b/frappe/integrations/doctype/token_cache/token_cache.py @@ -8,7 +8,7 @@ import pytz import frappe from frappe import _ from frappe.model.document import Document -from frappe.utils import cint, cstr +from frappe.utils import cint, cstr, get_time_zone class TokenCache(Document): @@ -52,7 +52,9 @@ class TokenCache(Document): return self def get_expires_in(self): + system_timezone = pytz.timezone(get_time_zone()) modified = frappe.utils.get_datetime(self.modified) + modified = system_timezone.localize(modified) expiry_utc = modified.astimezone(pytz.utc) + timedelta(seconds=self.expires_in) now_utc = datetime.utcnow().replace(tzinfo=pytz.utc) return cint((expiry_utc - now_utc).total_seconds())