from odoo import models from odoo.exceptions import UserError from datetime import datetime class Import(models.TransientModel): _inherit = 'base_import.import' def _get_config_enable_import(self): return self.env['ir.config_parameter'].sudo().get_param('base_import.import.enable_import', '') def _get_config_restrict_model(self): return self.env['ir.config_parameter'].sudo().get_param('base_import.import.restrict_model', '') def _check_time_range(self, config_string): current_time = datetime.now().time() ranges = config_string.split(' / ') for time_range in ranges: start_str, end_str = time_range.split(' - ') start_time = datetime.strptime(start_str, '%H:%M:%S').time() end_time = datetime.strptime(end_str, '%H:%M:%S').time() if start_time <= current_time and current_time <= end_time: return True return False def _check_enable_import(self): enable_import = self._get_config_enable_import() restrict_model = self._get_config_restrict_model() if self.res_model not in restrict_model: return True if enable_import.lower() == 'true': return True elif enable_import.lower() == 'false': return False elif '-' in enable_import: return self._check_time_range(enable_import) return True def _unable_import_notif(self): enable_import_config = self._get_config_enable_import() message = 'Import tidak dapat dilakukan saat ini. Hubungi Tim IT.' if '-' in enable_import_config: message = f'Import tidak dapat dilakukan saat ini. Anda bisa melakukannya di rentang waktu berikut: {enable_import_config}.' raise UserError(message) def do(self, fields, columns, options, dryrun=False): enable_import = self._check_enable_import() if not enable_import: self._unable_import_notif() return super(Import, self).do(fields, columns, options, dryrun)