19.0 vanilla

This commit is contained in:
Ernad Husremovic 2026-03-09 09:31:39 +01:00
parent 5df8c07b59
commit daa394e8b0
2114 changed files with 564841 additions and 299642 deletions

View file

@ -0,0 +1,11 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import attachment
from . import chatbot
from . import channel
from . import link_preview
from . import main
from . import message_reaction
from . import rtc
from . import thread
from . import webclient

View file

@ -0,0 +1,15 @@
from odoo.http import route
from odoo.addons.im_livechat.tools.misc import force_guest_env
from odoo.addons.mail.controllers.attachment import AttachmentController
class LivechatAttachmentController(AttachmentController):
@route("/im_livechat/cors/attachment/upload", auth="public", cors="*", csrf=False)
def im_livechat_attachment_upload(self, guest_token, ufile, thread_id, thread_model, is_pending=False, **kwargs):
force_guest_env(guest_token)
return self.mail_attachment_upload(ufile, thread_id, thread_model, is_pending, **kwargs)
@route("/im_livechat/cors/attachment/delete", methods=["POST"], type="jsonrpc", auth="public", cors="*")
def im_livechat_attachment_delete(self, guest_token, attachment_id, access_token=None):
force_guest_env(guest_token)
return self.mail_attachment_delete(attachment_id, access_token)

View file

@ -0,0 +1,22 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.http import route
from odoo.addons.mail.controllers.discuss.channel import ChannelController
from odoo.addons.im_livechat.tools.misc import force_guest_env
class LivechatChannelController(ChannelController):
@route("/im_livechat/cors/channel/messages", methods=["POST"], type="jsonrpc", auth="public", cors="*")
def livechat_channel_messages(self, guest_token, channel_id, fetch_params=None):
force_guest_env(guest_token)
return self.discuss_channel_messages(channel_id, fetch_params)
@route("/im_livechat/cors/channel/mark_as_read", methods=["POST"], type="jsonrpc", auth="public", cors="*")
def livechat_channel_mark_as_read(self, guest_token, **kwargs):
force_guest_env(guest_token)
return self.discuss_channel_mark_as_read(**kwargs)
@route("/im_livechat/cors/channel/notify_typing", methods=["POST"], type="jsonrpc", auth="public", cors="*")
def livechat_channel_notify_typing(self, guest_token, channel_id, is_typing):
force_guest_env(guest_token)
return self.discuss_channel_notify_typing(channel_id, is_typing)

View file

@ -0,0 +1,27 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.http import route
from odoo.addons.im_livechat.controllers.chatbot import LivechatChatbotScriptController
from odoo.addons.im_livechat.tools.misc import force_guest_env
class CorsLivechatChatbotScriptController(LivechatChatbotScriptController):
@route("/chatbot/cors/restart", type="jsonrpc", auth="public", cors="*")
def cors_chatbot_restart(self, guest_token, channel_id, chatbot_script_id):
force_guest_env(guest_token)
return self.chatbot_restart(channel_id, chatbot_script_id)
@route("/chatbot/cors/answer/save", type="jsonrpc", auth="public", cors="*")
def cors_chatbot_save_answer(self, guest_token, channel_id, message_id, selected_answer_id):
force_guest_env(guest_token)
return self.chatbot_save_answer(channel_id, message_id, selected_answer_id)
@route("/chatbot/cors/step/trigger", type="jsonrpc", auth="public", cors="*")
def cors_chatbot_trigger_step(self, guest_token, channel_id, chatbot_script_id=None, data_id=None):
force_guest_env(guest_token)
return self.chatbot_trigger_step(channel_id, chatbot_script_id, data_id)
@route("/chatbot/cors/step/validate_email", type="jsonrpc", auth="public", cors="*")
def cors_chatbot_validate_email(self, guest_token, channel_id):
force_guest_env(guest_token)
return self.chatbot_validate_email(channel_id)

View file

@ -0,0 +1,17 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.http import route
from odoo.addons.mail.controllers.link_preview import LinkPreviewController
from odoo.addons.im_livechat.tools.misc import force_guest_env
class LivechatLinkPreviewController(LinkPreviewController):
@route("/im_livechat/cors/link_preview", methods=["POST"], type="jsonrpc", auth="public", cors="*")
def livechat_link_preview(self, guest_token, message_id):
force_guest_env(guest_token)
self.mail_link_preview(message_id)
@route("/im_livechat/cors/link_preview/hide", methods=["POST"], type="jsonrpc", auth="public", cors="*")
def livechat_link_preview_hide(self, guest_token, message_link_preview_ids):
force_guest_env(guest_token)
self.mail_link_preview_hide(message_link_preview_ids)

View file

@ -0,0 +1,41 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.http import route
from odoo.addons.im_livechat.controllers.main import LivechatController
from odoo.addons.im_livechat.tools.misc import force_guest_env
class CorsLivechatController(LivechatController):
@route("/im_livechat/cors/visitor_leave_session", type="jsonrpc", auth="public", cors="*")
def cors_visitor_leave_session(self, guest_token, channel_id):
force_guest_env(guest_token)
self.visitor_leave_session(channel_id)
@route("/im_livechat/cors/feedback", type="jsonrpc", auth="public", cors="*")
def cors_feedback(self, guest_token, channel_id, rate, reason=None):
force_guest_env(guest_token)
self.feedback(channel_id, rate, reason)
@route("/im_livechat/cors/history", type="jsonrpc", auth="public", cors="*")
def cors_history_pages(self, guest_token, pid, channel_id, page_history=None):
force_guest_env(guest_token)
return self.history_pages(pid, channel_id, page_history)
@route("/im_livechat/cors/download_transcript/<int:channel_id>", type="http", auth="public", cors="*")
def cors_download_livechat_transcript(self, guest_token, channel_id):
force_guest_env(guest_token)
return self.download_livechat_transcript(channel_id)
@route("/im_livechat/cors/get_session", methods=["POST"], type="jsonrpc", auth="public", cors="*")
def cors_get_session(
self, channel_id, previous_operator_id=None, chatbot_script_id=None, persisted=True, **kwargs
):
force_guest_env(kwargs.pop("guest_token", ""), raise_if_not_found=False)
return self.get_session(
channel_id, previous_operator_id, chatbot_script_id, persisted, **kwargs
)
@route("/im_livechat/cors/init", type="jsonrpc", auth="public", cors="*")
def cors_livechat_init(self, channel_id, guest_token=""):
force_guest_env(guest_token, raise_if_not_found=False)
return self.livechat_init(channel_id)

View file

@ -0,0 +1,12 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.http import route
from odoo.addons.mail.controllers.message_reaction import MessageReactionController
from odoo.addons.im_livechat.tools.misc import force_guest_env
class LivechatMessageReactionController(MessageReactionController):
@route("/im_livechat/cors/message/reaction", methods=["POST"], type="jsonrpc", auth="public", cors="*")
def livechat_message_reaction(self, guest_token, message_id, content, action, **kwargs):
force_guest_env(guest_token)
return self.mail_message_reaction(message_id, content, action, **kwargs)

View file

@ -0,0 +1,32 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.http import route
from odoo.addons.mail.controllers.discuss.rtc import RtcController
from odoo.addons.im_livechat.tools.misc import force_guest_env
class LivechatRtcController(RtcController):
@route("/im_livechat/cors/rtc/channel/join_call", methods=["POST"], type="jsonrpc", auth="public", cors="*")
def livechat_channel_call_join(self, guest_token, channel_id, check_rtc_session_ids=None):
force_guest_env(guest_token)
return self.channel_call_join(channel_id, check_rtc_session_ids)
@route("/im_livechat/cors/rtc/channel/leave_call", methods=["POST"], type="jsonrpc", auth="public", cors="*")
def livechat_channel_call_leave(self, guest_token, channel_id):
force_guest_env(guest_token)
return self.channel_call_leave(channel_id)
@route("/im_livechat/cors/rtc/session/update_and_broadcast", methods=["POST"], type="jsonrpc", auth="public", cors="*")
def livechat_session_update_and_broadcast(self, guest_token, session_id, values):
force_guest_env(guest_token)
self.session_update_and_broadcast(session_id, values)
@route("/im_livechat/cors/rtc/session/notify_call_members", methods=["POST"], type="jsonrpc", auth="public", cors="*")
def livechat_session_call_notify(self, guest_token, peer_notifications):
force_guest_env(guest_token)
self.session_call_notify(peer_notifications)
@route("/im_livechat/cors/channel/ping", methods=["POST"], type="jsonrpc", auth="public", cors="*")
def livechat_channel_ping(self, guest_token, channel_id, rtc_session_id=None, check_rtc_session_ids=None):
force_guest_env(guest_token)
return self.channel_ping(channel_id, rtc_session_id, check_rtc_session_ids)

View file

@ -0,0 +1,17 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.http import route
from odoo.addons.mail.controllers.thread import ThreadController
from odoo.addons.im_livechat.tools.misc import force_guest_env
class LivechatThreadController(ThreadController):
@route("/im_livechat/cors/message/post", methods=["POST"], type="jsonrpc", auth="public", cors="*")
def livechat_message_post(self, guest_token, thread_model, thread_id, post_data, context=None, **kwargs):
force_guest_env(guest_token)
return self.mail_message_post(thread_model, thread_id, post_data, context, **kwargs)
@route("/im_livechat/cors/message/update_content", methods=["POST"], type="jsonrpc", auth="public", cors="*")
def livechat_message_update_content(self, guest_token, message_id, update_data, **kwargs):
force_guest_env(guest_token)
return self.mail_message_update_content(message_id, update_data, **kwargs)

View file

@ -0,0 +1,19 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.http import route
from odoo.addons.mail.controllers.webclient import WebclientController
from odoo.addons.im_livechat.tools.misc import force_guest_env
class WebClient(WebclientController):
"""Override to add CORS support."""
@route("/im_livechat/cors/action", methods=["POST"], type="jsonrpc", auth="public", cors="*")
def livechat_action(self, guest_token="", **kwargs):
force_guest_env(guest_token, raise_if_not_found=False)
return self.mail_action(**kwargs)
@route("/im_livechat/cors/data", methods=["POST"], type="jsonrpc", auth="public", cors="*", readonly=True)
def livechat_data(self, guest_token="", **kwargs):
force_guest_env(guest_token, raise_if_not_found=False)
return self.mail_data(**kwargs)