Odoo18-Base/extra-addons/website_helpdesk_livechat/models/helpdesk_team.py

51 lines
2.6 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, Command, models
class HelpdeskTeam(models.Model):
_inherit = "helpdesk.team"
@api.model_create_multi
def create(self, vals_list):
teams = super().create(vals_list)
teams.sudo()._check_website_helpdesk_livechat_group()
return teams
def write(self, vals):
result = super().write(vals)
if 'use_website_helpdesk_livechat' in vals:
self.sudo()._check_website_helpdesk_livechat_group()
return result
def _get_field_check_method(self):
check_methods = super()._get_field_check_method()
check_methods['use_website_helpdesk_livechat'] = self._check_use_website_helpdesk_livechat_feature_enabled
return check_methods
def _check_use_website_helpdesk_livechat_feature_enabled(self, check_user_has_group=False):
""" Check if the use_website_helpdesk_livechat feature is enabled
Check if the user can see at least one helpdesk team with `use_website_helpdesk_livechat=True`
and if the user has the `group_use_website_helpdesk_livechat` group (only done if the `check_user_has_group` parameter is True)
:param check_user_has_group: If True, then check if the user has the `group_use_website_helpdesk_livechat`
:return True if the feature is enabled otherwise False.
"""
user_has_group = self.env.user.has_group('im_livechat.im_livechat_group_user') if check_user_has_group else True
return user_has_group and self.env['helpdesk.team'].search([('use_website_helpdesk_livechat', '=', True)], limit=1)
def _check_website_helpdesk_livechat_group(self):
use_website_helpdesk_livechat_group = self.env.ref('website_helpdesk_livechat.group_use_website_helpdesk_livechat')
livechat_teams = self.filtered('use_website_helpdesk_livechat')
non_livechat_teams = self - livechat_teams
user_has_use_livechat_group = self.env.user.has_group('website_helpdesk_livechat.group_use_website_helpdesk_livechat')
if livechat_teams and not user_has_use_livechat_group:
self._get_helpdesk_user_group()\
.write({'implied_ids': [Command.link(use_website_helpdesk_livechat_group.id)]})
if non_livechat_teams and user_has_use_livechat_group and not self._check_use_website_helpdesk_livechat_feature_enabled():
self._get_helpdesk_user_group()\
.write({'implied_ids': [Command.unlink(use_website_helpdesk_livechat_group.id)]})
use_website_helpdesk_livechat_group.write({'users': [Command.clear()]})