# -*- coding: utf-8 -*- from odoo import api, fields, models class ResConfigSettings(models.TransientModel): _inherit = 'res.config.settings' # Google OAuth — dedicated keys with fallback to Odoo defaults x_fc_google_client_id = fields.Char( string='Google Client ID', config_parameter='fusion_schedule_google_client_id', ) x_fc_google_client_secret = fields.Char( string='Google Client Secret', config_parameter='fusion_schedule_google_client_secret', ) x_fc_google_has_fallback = fields.Boolean( string='Google Using Odoo Default', compute='_compute_google_has_fallback', ) # Microsoft OAuth — dedicated keys with fallback to Odoo defaults x_fc_microsoft_client_id = fields.Char( string='Microsoft Client ID', config_parameter='fusion_schedule_microsoft_client_id', ) x_fc_microsoft_client_secret = fields.Char( string='Microsoft Client Secret', config_parameter='fusion_schedule_microsoft_client_secret', ) x_fc_microsoft_has_fallback = fields.Boolean( string='Microsoft Using Odoo Default', compute='_compute_microsoft_has_fallback', ) # Sync settings x_fc_sync_interval_minutes = fields.Integer( string='Sync Interval (minutes)', config_parameter='fusion_schedule_sync_interval', default=5, ) # Schedule defaults x_fc_default_work_start = fields.Float( string='Default Work Start', config_parameter='fusion_schedule.default_work_start', default=9.0, ) x_fc_default_work_end = fields.Float( string='Default Work End', config_parameter='fusion_schedule.default_work_end', default=17.0, ) x_fc_default_break_start = fields.Float( string='Default Break Start', config_parameter='fusion_schedule.default_break_start', default=12.0, ) x_fc_default_break_duration = fields.Float( string='Default Break Duration', config_parameter='fusion_schedule.default_break_duration', default=0.5, ) x_fc_default_travel_buffer = fields.Integer( string='Default Travel Buffer (min)', config_parameter='fusion_schedule.default_travel_buffer', default=30, ) @api.depends('x_fc_google_client_id') def _compute_google_has_fallback(self): ICP = self.env['ir.config_parameter'].sudo() odoo_default = ICP.get_param('google_calendar_client_id', '') for rec in self: rec.x_fc_google_has_fallback = bool(not rec.x_fc_google_client_id and odoo_default) @api.depends('x_fc_microsoft_client_id') def _compute_microsoft_has_fallback(self): ICP = self.env['ir.config_parameter'].sudo() odoo_default = ICP.get_param('microsoft_calendar_client_id', '') for rec in self: rec.x_fc_microsoft_has_fallback = bool(not rec.x_fc_microsoft_client_id and odoo_default)