Browse Source

Jun 27: [FIX] Bug Fixed 'cron_failure_notification'

pull/395/head
Cybrosys Technologies 1 month ago
parent
commit
a9ed40ae2b
  1. 2
      cron_failure_notification/__manifest__.py
  2. 6
      cron_failure_notification/doc/RELEASE_NOTES.md
  3. 28
      cron_failure_notification/models/ir_cron.py

2
cron_failure_notification/__manifest__.py

@ -22,7 +22,7 @@
################################################################################ ################################################################################
{ {
'name': "Cron Failure Notification", 'name': "Cron Failure Notification",
'version': '18.0.1.0.0', 'version': '18.0.1.0.1',
'category': 'Discuss', 'category': 'Discuss',
'summary': 'Notify the Admin About Cron Failures Via Mail', 'summary': 'Notify the Admin About Cron Failures Via Mail',
'description': """This module helps to send notification to admin with 'description': """This module helps to send notification to admin with

6
cron_failure_notification/doc/RELEASE_NOTES.md

@ -5,3 +5,9 @@
#### ADD #### ADD
- Initial commit for Cron Failure Notification - 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.

28
cron_failure_notification/models/ir_cron.py

@ -20,12 +20,13 @@
# If not, see <http://www.gnu.org/licenses/>. # If not, see <http://www.gnu.org/licenses/>.
# #
############################################################################## ##############################################################################
import base64
import datetime import datetime
import logging import logging
import time import time
from odoo import api, models, _ from odoo import models, _
from odoo.exceptions import ValidationError from odoo.exceptions import ValidationError
from odoo.fields import Datetime, _logger from odoo.fields import _logger
class IrCron(models.Model): class IrCron(models.Model):
@ -70,7 +71,6 @@ class IrCron(models.Model):
self.pool.reset_changes() self.pool.reset_changes()
_logger.exception('Job %r (%s) server action #%s failed', _logger.exception('Job %r (%s) server action #%s failed',
cron_name, self.id, server_action_id) cron_name, self.id, server_action_id)
# self.env.cr.rollback()
if exception: if exception:
self.env['failure.history'].create({ self.env['failure.history'].create({
'name': cron_name, 'name': cron_name,
@ -87,14 +87,30 @@ class IrCron(models.Model):
('create_date', '<', current_datetime)] ('create_date', '<', current_datetime)]
) )
if failure: if failure:
admin_mail = self.env['res.groups'].search( admin_mail = self.env.ref('base.group_erp_manager').users.mapped('login')
[('category_id', '=', 'Administration'),
('name', '=', 'Access Rights')]).users.mapped('login')
email_values = { email_values = {
'email_to': admin_mail[0] if len(admin_mail) == 1 'email_to': admin_mail[0] if len(admin_mail) == 1
else ",".join(admin_mail) 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( mail_template = self.env.ref(
'cron_failure_notification.mail_template_cron_error') '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, mail_template.send_mail(self.id, email_values= email_values,
force_send=True) force_send=True)
mail_template.attachment_ids = [(3, data_id.id)]
return

Loading…
Cancel
Save