im_livechat/models/res_users.py

50 lines
2.2 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models, api
class Users(models.Model):
""" Update of res.users class
- add a preference about username for livechat purpose
"""
_inherit = 'res.users'
livechat_username = fields.Char(string='Livechat Username', compute='_compute_livechat_username', inverse='_inverse_livechat_username', store=False)
livechat_lang_ids = fields.Many2many('res.lang', string='Livechat Languages', compute='_compute_livechat_lang_ids', inverse='_inverse_livechat_lang_ids', store=False)
has_access_livechat = fields.Boolean(compute='_compute_has_access_livechat', string='Has access to Livechat', store=False, readonly=True)
@property
def SELF_READABLE_FIELDS(self):
return super().SELF_READABLE_FIELDS + ['livechat_username', 'livechat_lang_ids', 'has_access_livechat']
@property
def SELF_WRITEABLE_FIELDS(self):
return super().SELF_WRITEABLE_FIELDS + ['livechat_username', 'livechat_lang_ids']
@api.depends('res_users_settings_id.livechat_username')
def _compute_livechat_username(self):
for user in self:
user.livechat_username = user.res_users_settings_id.livechat_username
def _inverse_livechat_username(self):
for user in self:
if not user.res_users_settings_id:
self.env['res.users.settings']._find_or_create_for_user(user)
user.res_users_settings_id.livechat_username = user.livechat_username
@api.depends('res_users_settings_id.livechat_lang_ids')
def _compute_livechat_lang_ids(self):
for user in self:
user.livechat_lang_ids = user.res_users_settings_id.livechat_lang_ids
def _inverse_livechat_lang_ids(self):
for user in self:
if not user.res_users_settings_id:
self.env['res.users.settings']._find_or_create_for_user(user)
user.res_users_settings_id.livechat_lang_ids = user.livechat_lang_ids
def _compute_has_access_livechat(self):
for user in self:
user.has_access_livechat = user.has_group('im_livechat.im_livechat_group_user')