diff --git a/cron_failure_notification/__manifest__.py b/cron_failure_notification/__manifest__.py index 765922d89..b3c47f188 100755 --- a/cron_failure_notification/__manifest__.py +++ b/cron_failure_notification/__manifest__.py @@ -22,7 +22,7 @@ ################################################################################ { 'name': "Cron Failure Notification", - 'version': '18.0.1.0.0', + 'version': '18.0.1.0.1', 'category': 'Discuss', 'summary': 'Notify the Admin About Cron Failures Via Mail', 'description': """This module helps to send notification to admin with diff --git a/cron_failure_notification/doc/RELEASE_NOTES.md b/cron_failure_notification/doc/RELEASE_NOTES.md index f6744744b..54f6b8cb6 100755 --- a/cron_failure_notification/doc/RELEASE_NOTES.md +++ b/cron_failure_notification/doc/RELEASE_NOTES.md @@ -5,3 +5,9 @@ #### ADD - Initial commit for Cron Failure Notification + +#### 19.02.2025 +#### Version 18.0.1.0.1 +#### UPDT + +- Updated the python logic how system administrators mail's are fetched in function mail_send_cron. diff --git a/cron_failure_notification/models/ir_cron.py b/cron_failure_notification/models/ir_cron.py index 4a8a1a694..4805bb1ac 100755 --- a/cron_failure_notification/models/ir_cron.py +++ b/cron_failure_notification/models/ir_cron.py @@ -20,12 +20,13 @@ # If not, see . # ############################################################################## +import base64 import datetime import logging import time -from odoo import api, models, _ +from odoo import models, _ from odoo.exceptions import ValidationError -from odoo.fields import Datetime, _logger +from odoo.fields import _logger class IrCron(models.Model): @@ -70,7 +71,6 @@ class IrCron(models.Model): self.pool.reset_changes() _logger.exception('Job %r (%s) server action #%s failed', cron_name, self.id, server_action_id) - # self.env.cr.rollback() if exception: self.env['failure.history'].create({ 'name': cron_name, @@ -87,14 +87,30 @@ class IrCron(models.Model): ('create_date', '<', current_datetime)] ) if failure: - admin_mail = self.env['res.groups'].search( - [('category_id', '=', 'Administration'), - ('name', '=', 'Access Rights')]).users.mapped('login') + admin_mail = self.env.ref('base.group_erp_manager').users.mapped('login') email_values = { 'email_to': admin_mail[0] if len(admin_mail) == 1 else ",".join(admin_mail) } + + report_template_id = self.env['ir.actions.report']._render_qweb_pdf( + report_ref='cron_failure_notification.cron_fail_pdf_report', + res_ids=False, + ) + data_record = base64.b64encode(report_template_id[0]) + ir_values = { + 'name': "Scheduled Cron Job Failed Attachment.pdf", + 'type': 'binary', + 'datas': data_record, + 'store_fname': data_record, + 'mimetype': 'application/x-pdf', + } + data_id = self.env['ir.attachment'].create(ir_values) + mail_template = self.env.ref( 'cron_failure_notification.mail_template_cron_error') + mail_template.attachment_ids = [(6, 0, [data_id.id])] mail_template.send_mail(self.id, email_values= email_values, force_send=True) + mail_template.attachment_ids = [(3, data_id.id)] + return