Skip to content

Commit 4492c3d

Browse files
Merge pull request #3303 from antgonza/improve-job-error-report-email
improve job error report email
2 parents efa3c24 + 9b8019e commit 4492c3d

File tree

3 files changed

+43
-32
lines changed

3 files changed

+43
-32
lines changed

CHANGELOG.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ Version 2023.06
88
* Admin Sample Validation now uses tube_id; mainly contributed by @CatFish47.
99
* Registered users cannot start sample deletion jobs within public studies.
1010
* The qp-knight-lab-processing now links the SPP job to the preparation it creates and links the created files to that preparation. Note that no files are being moved to the upload folder.
11-
* Fixed the following issues [#3227](https://github.com/qiita-spots/qiita/issues/3227), [#3279](https://github.com/qiita-spots/qiita/issues/3279).
11+
* Fixed the following issues [#3227](https://github.com/qiita-spots/qiita/issues/3227), [#3279](https://github.com/qiita-spots/qiita/issues/3280), [#3227](https://github.com/qiita-spots/qiita/issues/3280).
12+
* Added ProcessingJob.external_id to status-report messages generated, and added sending an email to our system-admin when a (wet-lab) admin job errors.
1213

1314

1415
Version 2023.05

qiita_db/processing_job.py

+18-5
Original file line numberDiff line numberDiff line change
@@ -729,7 +729,8 @@ def _generate_notification_message(self, value, error_msg):
729729
return None
730730

731731
# generate subject line
732-
subject = '%s: %s (%s)' % (self.command.name, value, self.id)
732+
subject = (f'{self.command.name}: {value}, {self.id} '
733+
f'[{self.external_id}]')
733734

734735
# generate message line
735736
message = ''
@@ -758,10 +759,17 @@ def _generate_notification_message(self, value, error_msg):
758759
study_id = study_ids.pop()
759760

760761
# there should be at least one prep_id and probably more.
761-
prep_ids = set(prep_ids)
762+
prep_ids = list(set(prep_ids))
762763
if len(prep_ids) == 0:
763764
raise qdb.exceptions.QiitaError("No Prep IDs were "
764765
"found")
766+
if len(prep_ids) == 1:
767+
study_url = (f'{qiita_config.base_url}/study/'
768+
f'description/{study_id}?prep_id='
769+
f'{prep_ids[0]}')
770+
else:
771+
study_url = (f'{qiita_config.base_url}/study/'
772+
f'description/{study_id}')
765773
# convert into a string for presentation.
766774
prep_ids = [str(x) for x in prep_ids]
767775
prep_ids = ', '.join(prep_ids)
@@ -774,10 +782,9 @@ def _generate_notification_message(self, value, error_msg):
774782
f"{data_types}")
775783
data_type = data_types.pop()
776784

777-
message = f'Processing Job: {self.command.name}\n'
778-
message += f'{qiita_config.base_url}/study/'
779-
message += f'description/{study_id}\n'
785+
message = f'{self.command.name}\n'
780786
message += f'Prep IDs: {prep_ids}\n'
787+
message += f'{study_url}\n'
781788
message += f'Data Type: {data_type}\n'
782789
elif artifact.analysis:
783790
# this is an analysis job. display analysis id as link and
@@ -832,6 +839,12 @@ def _set_status(self, value, error_msg=None):
832839
# send email
833840
qdb.util.send_email(self.user.email, msg['subject'],
834841
msg['message'])
842+
# send email to our sys-admin if error from admin
843+
if self.user.level in {'admin', 'wet-lab admin'}:
844+
if value == 'error':
845+
qdb.util.send_email(
846+
'[email protected]', msg['subject'],
847+
msg['message'])
835848

836849
sql = """UPDATE qiita.processing_job
837850
SET processing_job_status_id = %s

qiita_db/test/test_processing_job.py

+23-26
Original file line numberDiff line numberDiff line change
@@ -870,50 +870,47 @@ def test_notification_mail_generation(self):
870870
# messages of type 'error'.
871871
obs = self.tester1._generate_notification_message('error', None)
872872

873-
exp = {'subject': ('Split libraries FASTQ: error '
874-
'(063e553b-327c-4818-ab4a-adfe58e49860)'),
875-
'message': ('Processing Job: Split libraries FASTQ\n'
876-
f'{qiita_config.base_url}/study/description/1'
877-
'\nPrep IDs: 1\nData Type: 18S\nNew '
878-
'status: error')}
873+
exp = {'subject': ('Split libraries FASTQ: error, 063e553b-327c-4818-'
874+
'ab4a-adfe58e49860 [Not Available]'),
875+
'message': ('Split libraries FASTQ\nPrep IDs: 1'
876+
f'\n{qiita_config.base_url}/study/description/1?'
877+
'prep_id=1\nData Type: 18S\nNew status: error')}
879878
self.assertDictEqual(obs, exp)
880879

881880
obs = self.tester1._generate_notification_message('error',
882881
'An Error Message')
883-
exp = {'subject': ('Split libraries FASTQ: error '
884-
'(063e553b-327c-4818-ab4a-adfe58e49860)'),
885-
'message': ('Processing Job: Split libraries FASTQ\n'
886-
f'{qiita_config.base_url}/study/description/1\n'
887-
'Prep IDs: 1\nData Type: 18S\nNew status'
888-
': error\n\nError:\nAn Error Message')}
882+
exp = {'subject': ('Split libraries FASTQ: error, 063e553b-327c-4818-'
883+
'ab4a-adfe58e49860 [Not Available]'),
884+
'message': ('Split libraries FASTQ\nPrep IDs: 1'
885+
f'\n{qiita_config.base_url}/study/description/1?'
886+
'prep_id=1\nData Type: 18S\nNew status: error'
887+
'\n\nError:\nAn Error Message')}
889888
self.assertDictEqual(obs, exp)
890889

891890
# The inclusion of an error message has no effect on other valid
892891
# status types e.g. 'running'.
893892
obs = self.tester1._generate_notification_message('running', None)
894-
exp = {'subject': ('Split libraries FASTQ: running '
895-
'(063e553b-327c-4818-ab4a-adfe58e49860)'),
896-
'message': ('Processing Job: Split libraries FASTQ\n'
897-
f'{qiita_config.base_url}/study/description/1\n'
898-
'Prep IDs: 1\nData Type: 18S\nNew status'
899-
': running')}
893+
exp = {'subject': ('Split libraries FASTQ: running, 063e553b-327c-'
894+
'4818-ab4a-adfe58e49860 [Not Available]'),
895+
'message': ('Split libraries FASTQ\nPrep IDs: 1'
896+
f'\n{qiita_config.base_url}/study/description/1?'
897+
'prep_id=1\nData Type: 18S\nNew status: running')}
900898
self.assertDictEqual(obs, exp)
901899

902900
obs = self.tester1._generate_notification_message('running', 'Yahoo!')
903-
exp = {'subject': ('Split libraries FASTQ: running '
904-
'(063e553b-327c-4818-ab4a-adfe58e49860)'),
905-
'message': ('Processing Job: Split libraries FASTQ\n'
906-
f'{qiita_config.base_url}/study/description/1\n'
907-
'Prep IDs: 1\nData Type: 18S\nNew status'
908-
': running')}
901+
exp = {'subject': ('Split libraries FASTQ: running, 063e553b-327c-'
902+
'4818-ab4a-adfe58e49860 [Not Available]'),
903+
'message': ('Split libraries FASTQ\nPrep IDs: 1'
904+
f'\n{qiita_config.base_url}/study/description/1?'
905+
'prep_id=1\nData Type: 18S\nNew status: running')}
909906
self.assertDictEqual(obs, exp)
910907

911908
# checking analysis emails
912909
jid = '8a7a8461-e8a1-4b4e-a428-1bc2f4d3ebd0'
913910
pj = qdb.processing_job.ProcessingJob(jid)
914911
obs = pj._generate_notification_message('running', 'Yahoo!')
915-
exp = {'subject': 'Single Rarefaction: running '
916-
'(8a7a8461-e8a1-4b4e-a428-1bc2f4d3ebd0)',
912+
exp = {'subject': ('Single Rarefaction: running, 8a7a8461-e8a1-'
913+
'4b4e-a428-1bc2f4d3ebd0 [Not Available]'),
917914
'message': 'Analysis Job Single Rarefaction\n'
918915
f'{qiita_config.base_url}/analysis/description/1/\n'
919916
'New status: running'}

0 commit comments

Comments
 (0)