84 lines
2.9 KiB
Python
84 lines
2.9 KiB
Python
# -*- 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)
|