| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- # -*- 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,
- }
- }
|