Odoo18-Base/addons/cloud_storage/controllers/attachment.py

33 lines
1.4 KiB
Python
Raw Permalink Normal View History

2025-01-06 10:57:38 +07:00
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import _
from odoo.http import route, request
from odoo.addons.mail.models.discuss.mail_guest import add_guest_to_context
from odoo.addons.mail.controllers.attachment import AttachmentController
class CloudAttachmentController(AttachmentController):
@route()
@add_guest_to_context
def mail_attachment_upload(self, ufile, thread_id, thread_model, is_pending=False, **kwargs):
is_cloud_storage = kwargs.get('cloud_storage')
if (is_cloud_storage and not request.env['ir.config_parameter'].sudo().get_param('cloud_storage_provider')):
return request.make_json_response({
'error': _('Cloud storage configuration has been changed. Please refresh the page.')
})
response = super().mail_attachment_upload(ufile, thread_id, thread_model, is_pending, **kwargs)
if not is_cloud_storage:
return response
data = response.json
if data.get("error"):
return response
# append upload url to the response to allow the client to directly
# upload files to the cloud storage
attachment = request.env["ir.attachment"].browse(data["data"]["ir.attachment"][0]["id"]).sudo()
data["upload_info"] = attachment._generate_cloud_storage_upload_info()
return request.make_json_response(data)