From 31339f63f1ff22ad105410e9680c2c42701ae196 Mon Sep 17 00:00:00 2001 From: kenyonit <67403591+kenyonit@users.noreply.github.com> Date: Mon, 29 Jun 2020 12:39:35 +1000 Subject: [PATCH 1/9] Update utils.py Added function to notify of errors --- pyas2/utils.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/pyas2/utils.py b/pyas2/utils.py index f749966..36a9cc9 100644 --- a/pyas2/utils.py +++ b/pyas2/utils.py @@ -2,6 +2,8 @@ import logging import os from string import Template +from django.core.mail import mail_managers +from django.utils.timezone import localtime logger = logging.getLogger("pyas2") @@ -48,3 +50,30 @@ def run_post_receive(message, full_filename): # Execute the command os.system(command.safe_substitute(variables)) + + +def notify_error(message): + """ Notify via email about errors with transmission of messages """ + + try: + email_subject = 'pyAS2 Error' + email_body = 'Error: Message transmission failed!' \ + '\n\nMessage ID: %(id)s' \ + '\nDate/Time: %(time)s' \ + '\nOrganization: %(org)s' \ + '\nPartner: %(prt)s' \ + '\nDirection: %(dir)s' \ + '\nDetailed Status: %(stat)s' \ + % {'id': message.message_id, + 'time': localtime(message.timestamp).strftime('%Y-%m-%d %H:%M:%S'), + 'org': message.organization, + 'prt': message.partner, + 'dir': message.get_direction_display(), + 'stat': message.detailed_status} + mail_managers( + email_subject, + email_body, + fail_silently=False, + ) + except Exception as msg: + logger.warning("Error sending email notification: %(msg)s", {'msg': msg} From 4b3953cb3c32f8fcc97b2132013752070a162358 Mon Sep 17 00:00:00 2001 From: kenyonit <67403591+kenyonit@users.noreply.github.com> Date: Mon, 29 Jun 2020 13:09:46 +1000 Subject: [PATCH 2/9] Update views.py Notify of failure to send --- pyas2/views.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pyas2/views.py b/pyas2/views.py index 499f0e1..16cb090 100644 --- a/pyas2/views.py +++ b/pyas2/views.py @@ -24,6 +24,7 @@ from pyas2.models import PublicCertificate from pyas2.utils import run_post_receive from pyas2.utils import run_post_send +from pyas2.utils import notify_error from pyas2.forms import SendAs2MessageForm logger = logging.getLogger("pyas2") @@ -242,6 +243,7 @@ def form_valid(self, form): self.request, "Message transmission failed, check Messages tab for details.", ) + notify_error(message) return super(SendAs2Message, self).form_valid(form) From c69b278536a153cb1c53bcaea4e416e86e32e886 Mon Sep 17 00:00:00 2001 From: kenyonit <67403591+kenyonit@users.noreply.github.com> Date: Mon, 29 Jun 2020 13:30:49 +1000 Subject: [PATCH 3/9] Update views.py Notify of error on message receive --- pyas2/views.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pyas2/views.py b/pyas2/views.py index 16cb090..2c3f11e 100644 --- a/pyas2/views.py +++ b/pyas2/views.py @@ -152,6 +152,10 @@ def post(self, request, *args, **kwargs): # run post receive command on success if status == "processed": run_post_receive(message, full_fn) + + # notify of error + if message.status == "E": + notify_error(message) # Return the mdn in case of sync else return text message if as2mdn and as2mdn.mdn_mode == "SYNC": From 6aa0da795b5094b7f4ab98a7934f2ecd47a47b8e Mon Sep 17 00:00:00 2001 From: kenyonit <67403591+kenyonit@users.noreply.github.com> Date: Mon, 29 Jun 2020 14:26:57 +1000 Subject: [PATCH 4/9] Update models.py Notify of errors processing message --- pyas2/models.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pyas2/models.py b/pyas2/models.py index a323551..af0b20a 100644 --- a/pyas2/models.py +++ b/pyas2/models.py @@ -23,6 +23,7 @@ from pyas2 import settings from pyas2.utils import run_post_send +from pyas2.utils import notify_error logger = logging.getLogger("pyas2") @@ -511,6 +512,7 @@ def send_message(self, header, payload): self.detailed_status = ( f"Partner failed to process message: {mdn_detailed_status}" ) + notify_error(self) if mdn_detailed_status != "mdn-not-found": Mdn.objects.create_from_as2mdn( as2mdn=as2mdn, message=self, status="R" From fb11f3266591c062b7ec3000b73043a3549916e9 Mon Sep 17 00:00:00 2001 From: kenyonit <67403591+kenyonit@users.noreply.github.com> Date: Mon, 29 Jun 2020 14:45:36 +1000 Subject: [PATCH 5/9] Update views.py --- pyas2/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyas2/views.py b/pyas2/views.py index 2c3f11e..d2fff8b 100644 --- a/pyas2/views.py +++ b/pyas2/views.py @@ -113,6 +113,7 @@ def post(self, request, *args, **kwargs): message.detailed_status = ( f"Partner failed to process message: {detailed_status}" ) + notify_error(message) # Save the message and create the mdn message.save() Mdn.objects.create_from_as2mdn(as2mdn=as2mdn, message=message, status="R") @@ -247,7 +248,6 @@ def form_valid(self, form): self.request, "Message transmission failed, check Messages tab for details.", ) - notify_error(message) return super(SendAs2Message, self).form_valid(form) From c41221fc80f2c522bf6ff9c942297ae2f4c95400 Mon Sep 17 00:00:00 2001 From: kenyonit <67403591+kenyonit@users.noreply.github.com> Date: Mon, 29 Jun 2020 14:52:30 +1000 Subject: [PATCH 6/9] Update utils.py Fixed missing ')' --- pyas2/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyas2/utils.py b/pyas2/utils.py index 36a9cc9..3a48a06 100644 --- a/pyas2/utils.py +++ b/pyas2/utils.py @@ -76,4 +76,4 @@ def notify_error(message): fail_silently=False, ) except Exception as msg: - logger.warning("Error sending email notification: %(msg)s", {'msg': msg} + logger.warning("Error sending email notification: %(msg)s", {'msg': msg}) From f111decd21741c419fd33a1f4535492252c21ebb Mon Sep 17 00:00:00 2001 From: kenyonit <67403591+kenyonit@users.noreply.github.com> Date: Mon, 29 Jun 2020 14:56:02 +1000 Subject: [PATCH 7/9] Update views.py fixed blank line contains whitespace --- pyas2/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyas2/views.py b/pyas2/views.py index d2fff8b..8881baf 100644 --- a/pyas2/views.py +++ b/pyas2/views.py @@ -153,7 +153,7 @@ def post(self, request, *args, **kwargs): # run post receive command on success if status == "processed": run_post_receive(message, full_fn) - + # notify of error if message.status == "E": notify_error(message) From eed278ca8a4aefc40ed14107504719311447bd14 Mon Sep 17 00:00:00 2001 From: kenyonit <67403591+kenyonit@users.noreply.github.com> Date: Mon, 29 Jun 2020 15:07:30 +1000 Subject: [PATCH 8/9] Update utils.py Fixed code formatting --- pyas2/utils.py | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/pyas2/utils.py b/pyas2/utils.py index 3a48a06..4f0c7f2 100644 --- a/pyas2/utils.py +++ b/pyas2/utils.py @@ -56,24 +56,26 @@ def notify_error(message): """ Notify via email about errors with transmission of messages """ try: - email_subject = 'pyAS2 Error' - email_body = 'Error: Message transmission failed!' \ - '\n\nMessage ID: %(id)s' \ - '\nDate/Time: %(time)s' \ - '\nOrganization: %(org)s' \ - '\nPartner: %(prt)s' \ - '\nDirection: %(dir)s' \ - '\nDetailed Status: %(stat)s' \ - % {'id': message.message_id, - 'time': localtime(message.timestamp).strftime('%Y-%m-%d %H:%M:%S'), - 'org': message.organization, - 'prt': message.partner, - 'dir': message.get_direction_display(), - 'stat': message.detailed_status} + email_subject = "pyAS2 Error" + email_body = ( + "Error: Message transmission failed!" + "\n\nMessage ID: %(id)s" + "\nDate/Time: %(time)s" + "\nOrganization: %(org)s" + "\nPartner: %(prt)s" + "\nDirection: %(dir)s" + "\nDetailed Status: %(stat)s" + % { + "id": message.message_id, + "time": localtime(message.timestamp).strftime("%Y-%m-%d %H:%M:%S"), + "org": message.organization, + "prt": message.partner, + "dir": message.get_direction_display(), + "stat": message.detailed_status + } + ) mail_managers( - email_subject, - email_body, - fail_silently=False, + email_subject, email_body, fail_silently=False, ) except Exception as msg: - logger.warning("Error sending email notification: %(msg)s", {'msg': msg}) + logger.warning("Error sending email notification: %(msg)s", {"msg": msg}) From 3fbbc9e74fca103422355d613b5c543843b02b62 Mon Sep 17 00:00:00 2001 From: kenyonit <67403591+kenyonit@users.noreply.github.com> Date: Mon, 29 Jun 2020 15:10:37 +1000 Subject: [PATCH 9/9] Update utils.py --- pyas2/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyas2/utils.py b/pyas2/utils.py index 4f0c7f2..2b67006 100644 --- a/pyas2/utils.py +++ b/pyas2/utils.py @@ -71,7 +71,7 @@ def notify_error(message): "org": message.organization, "prt": message.partner, "dir": message.get_direction_display(), - "stat": message.detailed_status + "stat": message.detailed_status, } ) mail_managers(