diff --git a/frappe/__init__.py b/frappe/__init__.py index 07a580944f..dcc401c036 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -2069,7 +2069,7 @@ def logger( def log_error(title=None, message=None, reference_doctype=None, reference_name=None): - '''Log error to Error Log''' + """Log error to Error Log""" # Parameter ALERT: # the title and message may be swapped @@ -2077,7 +2077,7 @@ def log_error(title=None, message=None, reference_doctype=None, reference_name=N # this hack tries to be smart about whats a title (single line ;-)) and fixes it if message: - if '\n' in title: # traceback sent as title + if "\n" in title: # traceback sent as title traceback, title = title, message else: traceback = message @@ -2086,15 +2086,18 @@ def log_error(title=None, message=None, reference_doctype=None, reference_name=N traceback = get_traceback() if not title: - title = 'Error' + title = "Error" + + return get_doc( + dict( + doctype="Error Log", + error=as_unicode(traceback), + method=title, + reference_doctype=reference_doctype, + reference_name=reference_name, + ) + ).insert(ignore_permissions=True) - return get_doc(dict( - doctype='Error Log', - error=as_unicode(traceback), - method=title, - reference_doctype=reference_doctype, - reference_name=reference_name - )).insert(ignore_permissions=True) def get_desk_link(doctype, name): html = ( diff --git a/frappe/automation/doctype/auto_repeat/auto_repeat.py b/frappe/automation/doctype/auto_repeat/auto_repeat.py index 4b2f83f4b6..d3399f7726 100644 --- a/frappe/automation/doctype/auto_repeat/auto_repeat.py +++ b/frappe/automation/doctype/auto_repeat/auto_repeat.py @@ -189,7 +189,7 @@ class AutoRepeat(Document): if self.notify_by_email and self.recipients: self.send_notification(new_doc) except Exception: - error_log = self.log_error('Auto repeat failed') + error_log = self.log_error("Auto repeat failed") self.disable_auto_repeat() diff --git a/frappe/core/doctype/communication/communication.py b/frappe/core/doctype/communication/communication.py index eeddb7c7a1..f0e80c2207 100644 --- a/frappe/core/doctype/communication/communication.py +++ b/frappe/core/doctype/communication/communication.py @@ -450,7 +450,7 @@ def get_contacts(email_strings: List[str], auto_create_contact=False) -> List[st contact.insert(ignore_permissions=True) contact_name = contact.name except Exception: - contact.log_error('Unable to add contact') + contact.log_error("Unable to add contact") if contact_name: contacts.append(contact_name) diff --git a/frappe/core/doctype/communication/email.py b/frappe/core/doctype/communication/email.py index d47b15d360..464bc35a1c 100755 --- a/frappe/core/doctype/communication/email.py +++ b/frappe/core/doctype/communication/email.py @@ -248,7 +248,7 @@ def mark_email_as_seen(name: str = None): frappe.db.commit() # nosemgrep: this will be called in a GET request except Exception: - frappe.log_error('Unable to mark as seen', None, 'Communication', name) + frappe.log_error("Unable to mark as seen", None, "Communication", name) finally: frappe.response.update( diff --git a/frappe/core/doctype/data_import/data_import.py b/frappe/core/doctype/data_import/data_import.py index 3693ea53a4..06282e5831 100644 --- a/frappe/core/doctype/data_import/data_import.py +++ b/frappe/core/doctype/data_import/data_import.py @@ -113,7 +113,7 @@ def start_import(data_import): except Exception: frappe.db.rollback() data_import.db_set("status", "Error") - data_import.log_error('Data import failed') + data_import.log_error("Data import failed") finally: frappe.flags.in_import = False diff --git a/frappe/core/doctype/prepared_report/prepared_report.py b/frappe/core/doctype/prepared_report/prepared_report.py index dbdba19fbe..e35ec43565 100644 --- a/frappe/core/doctype/prepared_report/prepared_report.py +++ b/frappe/core/doctype/prepared_report/prepared_report.py @@ -47,7 +47,7 @@ def run_background(prepared_report): instance.save(ignore_permissions=True) except Exception: - report.log_error('Prepared report failed') + report.log_error("Prepared report failed") instance = frappe.get_doc("Prepared Report", prepared_report) instance.status = "Error" instance.error_message = frappe.get_traceback() diff --git a/frappe/core/doctype/user/user.py b/frappe/core/doctype/user/user.py index ec7374d72a..e81f5ecd99 100644 --- a/frappe/core/doctype/user/user.py +++ b/frappe/core/doctype/user/user.py @@ -265,7 +265,7 @@ class User(Document): except frappe.OutgoingEmailError: # email server not set, don't send email - self.log_error('Unable to send new password notification') + self.log_error("Unable to send new password notification") @Document.hook def validate_reset_password(self): diff --git a/frappe/desk/desktop.py b/frappe/desk/desktop.py index ae34cf3df2..4c82fe8c73 100644 --- a/frappe/desk/desktop.py +++ b/frappe/desk/desktop.py @@ -338,7 +338,7 @@ def get_desktop_page(page): "onboardings": workspace.onboardings, } except DoesNotExistError: - frappe.log_error('Workspace Missing') + frappe.log_error("Workspace Missing") return {} @@ -469,7 +469,9 @@ def save_new_widget(doc, page, blocks, new_widgets): page: {0} config: {1} exception: {2} - """.format(page, json_config, e) + """.format( + page, json_config, e + ) doc.log_error("Could not save customization", log) return False diff --git a/frappe/email/doctype/auto_email_report/auto_email_report.py b/frappe/email/doctype/auto_email_report/auto_email_report.py index 108cc46792..7a9af6149a 100644 --- a/frappe/email/doctype/auto_email_report/auto_email_report.py +++ b/frappe/email/doctype/auto_email_report/auto_email_report.py @@ -255,7 +255,10 @@ def send_daily(): try: auto_email_report.send() except Exception as e: - auto_email_report.log_error('Failed to send {0} Auto Email Report'.format(auto_email_report.name)) + auto_email_report.log_error( + "Failed to send {0} Auto Email Report".format(auto_email_report.name) + ) + def send_monthly(): """Check reports to be sent monthly""" diff --git a/frappe/email/doctype/email_queue/email_queue.py b/frappe/email/doctype/email_queue/email_queue.py index b3e52ef1e2..61d730829b 100644 --- a/frappe/email/doctype/email_queue/email_queue.py +++ b/frappe/email/doctype/email_queue/email_queue.py @@ -198,7 +198,7 @@ class SendMailContext: traceback_string = "".join(traceback.format_tb(exc_tb)) traceback_string += f"\n Queue Name: {self.queue_doc.name}" - self.queue_doc.log_error('Email sending failed', traceback_string) + self.queue_doc.log_error("Email sending failed", traceback_string) @property def smtp_session(self): @@ -623,9 +623,11 @@ class QueueBuilder: except frappe.InvalidEmailAddressError: # bad Email Address - don't add to queue self.log_error( - title = 'Invalid email address', - message = 'Invalid email address Sender: {0}, Recipients: {1}, \nTraceback: {2} ' - .format(self.sender, ', '.join(self.final_recipients()), traceback.format_exc())) + title="Invalid email address", + message="Invalid email address Sender: {0}, Recipients: {1}, \nTraceback: {2} ".format( + self.sender, ", ".join(self.final_recipients()), traceback.format_exc() + ), + ) return d = { diff --git a/frappe/email/doctype/notification/notification.py b/frappe/email/doctype/notification/notification.py index e868c0ceb6..5543ae6b5d 100644 --- a/frappe/email/doctype/notification/notification.py +++ b/frappe/email/doctype/notification/notification.py @@ -141,7 +141,7 @@ def get_context(context): self.create_system_notification(doc, context) except: - self.log_error('Failed to send Notification') + self.log_error("Failed to send Notification") if self.set_property_after_alert: allow_update = True @@ -168,7 +168,7 @@ def get_context(context): doc.save(ignore_permissions=True) doc.flags.in_notification_update = False except Exception: - self.log_error('Document update failed') + self.log_error("Document update failed") def create_system_notification(self, doc, context): subject = self.subject @@ -432,8 +432,8 @@ def evaluate_alert(doc, alert, event): if event == "Value Change" and not doc.is_new(): if not frappe.db.has_column(doc.doctype, alert.value_changed): - alert.db_set('enabled', 0) - alert.log_error('Notification {0} has been disabled due to missing field'.format(alert.name)) + alert.db_set("enabled", 0) + alert.log_error("Notification {0} has been disabled due to missing field".format(alert.name)) return doc_before_save = doc.get_doc_before_save() diff --git a/frappe/event_streaming/doctype/event_consumer/event_consumer.py b/frappe/event_streaming/doctype/event_consumer/event_consumer.py index dd3d2ec74c..bcd3d3be39 100644 --- a/frappe/event_streaming/doctype/event_consumer/event_consumer.py +++ b/frappe/event_streaming/doctype/event_consumer/event_consumer.py @@ -213,5 +213,5 @@ def has_consumer_access(consumer, update_log): else: return frappe.safe_eval(condition, frappe._dict(doc=doc)) except Exception as e: - consumer.log_error('has_consumer_access error') + consumer.log_error("has_consumer_access error") return False diff --git a/frappe/model/document.py b/frappe/model/document.py index a7b59ae749..67e1de0932 100644 --- a/frappe/model/document.py +++ b/frappe/model/document.py @@ -1363,12 +1363,10 @@ class Document(BaseDocument): frappe.local.flags.commit = True def log_error(self, title=None, message=None): - '''Helper function to create an Error Log''' + """Helper function to create an Error Log""" return frappe.log_error( - message = message, - title = title, - reference_doctype = self.doctype, - reference_name = self.name) + message=message, title=title, reference_doctype=self.doctype, reference_name=self.name + ) def get_signature(self): """Returns signature (hash) for private URL.""" diff --git a/frappe/model/workflow.py b/frappe/model/workflow.py index 092ad4f764..96fd710d91 100644 --- a/frappe/model/workflow.py +++ b/frappe/model/workflow.py @@ -254,9 +254,9 @@ def bulk_workflow_approval(docnames, doctype, action): frappe.db.rollback() frappe.log_error( - title = "Workflow {0} threw an error for {1} {2}".format(action, doctype, docname), - reference_doctype = 'Workflow', - reference_name = action + title="Workflow {0} threw an error for {1} {2}".format(action, doctype, docname), + reference_doctype="Workflow", + reference_name=action, ) finally: if not message_dict: diff --git a/frappe/utils/print_format.py b/frappe/utils/print_format.py index 2488fae0c9..87fb646f47 100644 --- a/frappe/utils/print_format.py +++ b/frappe/utils/print_format.py @@ -93,10 +93,11 @@ def download_multi_pdf(doctype, name, format=None, no_letterhead=False, options= ) except Exception: frappe.log_error( - title = 'Error in Multi PDF download', - message = "Permission Error on doc {} of doctype {}".format(doc_name, doctype_name), - reference_doctype = doctype_name, - reference_name = doc_name) + title="Error in Multi PDF download", + message="Permission Error on doc {} of doctype {}".format(doc_name, doctype_name), + reference_doctype=doctype_name, + reference_name=doc_name, + ) frappe.local.response.filename = "{}.pdf".format(name) frappe.local.response.filecontent = read_multi_pdf(output)