33 lines
1.4 KiB
Python
33 lines
1.4 KiB
Python
# 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)
|