# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo import api, fields, models, _ class ResUsers(models.Model): _inherit = "res.users" # Computed fields for Google integration google_connected = fields.Boolean( string='Google Connected', compute='_compute_google_status', store=False, help='Indicates if the user has connected their Google account' ) google_email = fields.Char( string='Google Email', compute='_compute_google_status', store=False, help='Email address associated with the connected Google account' ) # CRM Meets Files Configuration - Related field google_crm_meets_folder_id = fields.Char( string='Archivos Meets CRM', related='res_users_settings_id.google_crm_meets_folder_id', readonly=False, help='ID de la carpeta en Google Drive donde se almacenan archivos de meets para sincronización con CRM' ) @api.depends('res_users_settings_id.google_rtoken', 'res_users_settings_id.google_email') def _compute_google_status(self): """Compute Google connection status and email""" for user in self: settings = user.res_users_settings_id if settings and settings._google_authenticated(): user.google_connected = True user.google_email = settings.google_email or 'Connected' else: user.google_connected = False user.google_email = False def action_connect_google(self): """Connect user's Google account""" self.ensure_one() # Ensure user has settings record if not self.res_users_settings_id: self.env['res.users.settings'].create({'user_id': self.id}) return self.res_users_settings_id.action_connect_google() def action_disconnect_google(self): """Disconnect user's Google account""" self.ensure_one() if self.res_users_settings_id: return self.res_users_settings_id.action_disconnect_google() return { 'type': 'ir.actions.client', 'tag': 'display_notification', 'params': { 'title': _('Info'), 'message': _('No Google account connected.'), 'type': 'info', 'sticky': False, } } def action_test_google_connection(self): """Test user's Google connection""" self.ensure_one() if self.res_users_settings_id: return self.res_users_settings_id.action_test_google_connection() return { 'type': 'ir.actions.client', 'tag': 'display_notification', 'params': { 'title': _('Info'), 'message': _('No Google account connected.'), 'type': 'info', 'sticky': False, } }