diff --git a/addons/hr/models/res_config_settings.py b/addons/hr/models/res_config_settings.py index 80c972fa442..457188e9bb8 100644 --- a/addons/hr/models/res_config_settings.py +++ b/addons/hr/models/res_config_settings.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- -from odoo import fields, models +import threading +from odoo import fields, models, api, _ +from odoo.exceptions import ValidationError class ResConfigSettings(models.TransientModel): @@ -18,3 +20,13 @@ class ResConfigSettings(models.TransientModel): hr_presence_control_email_amount = fields.Integer(related="company_id.hr_presence_control_email_amount", readonly=False) hr_presence_control_ip_list = fields.Char(related="company_id.hr_presence_control_ip_list", readonly=False) hr_employee_self_edit = fields.Boolean(string="Employee Editing", config_parameter='hr.hr_employee_self_edit') + + @api.constrains('module_hr_presence', 'hr_presence_control_email', 'hr_presence_control_ip') + def _check_advanced_presence(self): + test_mode = self.env.registry.in_test_mode() or getattr(threading.currentThread(), 'testing', False) + if self.env.context.get('install_mode', False) or test_mode: + return + + for settings in self: + if settings.module_hr_presence and not (settings.hr_presence_control_email or settings.hr_presence_control_ip): + raise ValidationError(_('You should select at least one Advanced Presence Control option.')) diff --git a/addons/hr_presence/__init__.py b/addons/hr_presence/__init__.py index 7d34c7c054a..c7f0e376f24 100644 --- a/addons/hr_presence/__init__.py +++ b/addons/hr_presence/__init__.py @@ -3,3 +3,15 @@ from . import controllers from . import models + +from odoo import api, SUPERUSER_ID + + +def post_init_hook(cr, registry): + env = api.Environment(cr, SUPERUSER_ID, {}) + + email = env['ir.config_parameter'].get_param('hr_presence.hr_presence_control_email') + ip = env['ir.config_parameter'].get_param('hr_presence.hr_presence_control_ip') + + if not email and not ip: + env['ir.config_parameter'].sudo().set_param('hr_presence.hr_presence_control_email', True) diff --git a/addons/hr_presence/__manifest__.py b/addons/hr_presence/__manifest__.py index 05b27fca5ca..11060294d3e 100644 --- a/addons/hr_presence/__manifest__.py +++ b/addons/hr_presence/__manifest__.py @@ -26,4 +26,5 @@ Allows to contact directly the employee in case of unjustified absence. 'demo': [], 'installable': True, 'auto_install': False, + 'post_init_hook': 'post_init_hook' }