51 lines
2.6 KiB
Python
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()]})
|