diff --git a/dms/controllers/main.py b/dms/controllers/main.py index 8bf75abf0..9297d01d3 100644 --- a/dms/controllers/main.py +++ b/dms/controllers/main.py @@ -6,7 +6,7 @@ import unicodedata from odoo import http -from odoo.exceptions import AccessError +from odoo.exceptions import AccessError, ValidationError from odoo.http import request from odoo.addons.web.controllers.binary import clean @@ -42,13 +42,15 @@ def upload_dms_file(self, ufile, directory_id, callback=None): # we need to send it the same stuff, otherwise it'll fail filename = unicodedata.normalize("NFD", ufile.filename) try: - dms_file = Model.create( - { - "directory_id": directory_id, - "name": filename, - "content": base64.b64encode(ufile.read()), - } - ) + with request.env.cr.savepoint(): + dms_file = Model.create( + { + "directory_id": directory_id, + "name": filename, + "content": base64.b64encode(ufile.read()), + } + ) + dms_file.flush_recordset() except AccessError: args.append( { @@ -57,6 +59,8 @@ def upload_dms_file(self, ufile, directory_id, callback=None): ) } ) + except ValidationError as error: + args.append({"error": error.args[0]}) except Exception: args.append({"error": request.env._("Something horrible happened")}) else: diff --git a/dms/static/src/js/views/dms_file_upload.esm.js b/dms/static/src/js/views/dms_file_upload.esm.js index e2024b79c..0b1e35bf5 100644 --- a/dms/static/src/js/views/dms_file_upload.esm.js +++ b/dms/static/src/js/views/dms_file_upload.esm.js @@ -116,8 +116,13 @@ export function createFileUploadExtension() { "text" ); const result = JSON.parse(fileData); - if (result.error) { - throw new Error(result.error); + for (const result_item of result) { + if (result_item.error) { + this.notification.add(result_item.error, { + type: "danger", + sticky: true, + }); + } } self.actionService.restore(controllerID); },