mirror of
https://github.com/bringout/oca-ocb-mail.git
synced 2026-04-23 05:42:02 +02:00
19.0 vanilla
This commit is contained in:
parent
5df8c07b59
commit
daa394e8b0
2114 changed files with 564841 additions and 299642 deletions
|
|
@ -0,0 +1,95 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from markupsafe import Markup
|
||||
from werkzeug.exceptions import BadRequest, NotFound
|
||||
|
||||
from odoo import Command
|
||||
from odoo.http import request, route
|
||||
from odoo.addons.mail.controllers.discuss.channel import ChannelController
|
||||
|
||||
|
||||
class LivechatChannelController(ChannelController):
|
||||
@route("/im_livechat/session/update_note", auth="user", methods=["POST"], type="jsonrpc")
|
||||
def livechat_session_update_note(self, channel_id, note):
|
||||
"""Internal users having the rights to read the session can update its note."""
|
||||
if self.env.user.share:
|
||||
raise NotFound()
|
||||
channel = request.env["discuss.channel"].search([("id", "=", channel_id)])
|
||||
if not channel:
|
||||
raise NotFound()
|
||||
# sudo: discuss.channel - internal users having the rights to read the session can update its note
|
||||
# Markup: note sanitized when written on the field
|
||||
channel.sudo().livechat_note = Markup(note)
|
||||
|
||||
@route("/im_livechat/session/update_status", auth="user", methods=["POST"], type="jsonrpc")
|
||||
def livechat_session_update_status(self, channel_id, livechat_status):
|
||||
"""Internal users having the rights to read the session can update its status."""
|
||||
if self.env.user.share:
|
||||
raise NotFound()
|
||||
channel = request.env["discuss.channel"].search([("id", "=", channel_id)])
|
||||
if not channel:
|
||||
raise NotFound()
|
||||
# sudo: discuss.channel - internal users having the rights to read the session can update its status
|
||||
channel.sudo().livechat_status = livechat_status
|
||||
|
||||
@route("/im_livechat/conversation/update_tags", auth="user", methods=["POST"], type="jsonrpc")
|
||||
def livechat_conversation_update_tags(self, channel_id, tag_ids, method="ADD"):
|
||||
"""Add or remove tags from a live chat conversation."""
|
||||
if not self.env["im_livechat.conversation.tag"].has_access("write"):
|
||||
raise NotFound()
|
||||
channel = request.env["discuss.channel"].search([("id", "=", channel_id)])
|
||||
if not channel:
|
||||
raise NotFound()
|
||||
# sudo: discuss.channel - internal users having the rights to read the conversation and to
|
||||
# write tags can update the tags
|
||||
if method == "ADD":
|
||||
channel.sudo().livechat_conversation_tag_ids = [
|
||||
Command.link(tag_id) for tag_id in tag_ids
|
||||
]
|
||||
elif method == "DELETE":
|
||||
channel.sudo().livechat_conversation_tag_ids = [
|
||||
Command.unlink(tag_id) for tag_id in tag_ids
|
||||
]
|
||||
if channel.livechat_status == "need_help":
|
||||
request.env.ref("im_livechat.im_livechat_group_user")._bus_send(
|
||||
"im_livechat.looking_for_help/tags",
|
||||
{
|
||||
"channel_id": channel.id,
|
||||
"tag_ids": channel.sudo().livechat_conversation_tag_ids.ids,
|
||||
},
|
||||
subchannel="LOOKING_FOR_HELP",
|
||||
)
|
||||
|
||||
@route(
|
||||
"/im_livechat/conversation/write_expertises", auth="user", methods=["POST"], type="jsonrpc"
|
||||
)
|
||||
def livechat_conversation_write_expertises(self, channel_id, orm_commands):
|
||||
if any(cmd[0] not in (Command.LINK, Command.UNLINK) for cmd in orm_commands):
|
||||
raise BadRequest(
|
||||
self.env._("Write expertises: Only LINK and UNLINK commands are allowed.")
|
||||
)
|
||||
if not self.env.user.has_group("im_livechat.im_livechat_group_user"):
|
||||
return
|
||||
if channel := request.env["discuss.channel"].search(
|
||||
[("id", "=", channel_id), ("channel_type", "=", "livechat")]
|
||||
):
|
||||
# sudo: discuss.channel - live chat users can update the expertises of any live chat.
|
||||
channel.sudo().livechat_expertise_ids = orm_commands
|
||||
|
||||
@route(
|
||||
"/im_livechat/conversation/create_and_link_expertise",
|
||||
auth="user",
|
||||
methods=["POST"],
|
||||
type="jsonrpc",
|
||||
)
|
||||
def livechat_conversation_create_and_link_expertise(self, channel_id, expertise_name):
|
||||
channel = request.env["discuss.channel"].search(
|
||||
[("id", "=", channel_id), ("channel_type", "=", "livechat")]
|
||||
)
|
||||
if not channel:
|
||||
return
|
||||
stripped_name = expertise_name.strip()
|
||||
expertise = request.env["im_livechat.expertise"].search([("name", "=", stripped_name)])
|
||||
if not expertise:
|
||||
expertise = request.env["im_livechat.expertise"].create({"name": stripped_name})
|
||||
channel.livechat_expertise_ids = [Command.link(expertise.id)]
|
||||
Loading…
Add table
Add a link
Reference in a new issue