From 548a809ff5853f3c97d6cd6bc3c71fa850d58289 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 17 Oct 2011 16:58:49 +0200 Subject: [PATCH] [FIX] downloading files from an unsaved/in-memory wizard fallback on default_get if record does not exist in db, as for e.g. Thunderbird and Outlook plugins lp bug: https://launchpad.net/bugs/856487 fixed bzr revid: xmo@openerp.com-20111017145849-p8dq0eprkru4xtl1 --- addons/web/controllers/main.py | 5 ++++- addons/web/static/src/js/view_form.js | 12 ++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 42b90a4a6b8..4ca998aea14 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1003,7 +1003,10 @@ class Binary(openerpweb.Controller): def saveas(self, req, model, id, field, fieldname, **kw): Model = req.session.model(model) context = req.session.eval_context(req.context) - res = Model.read([int(id)], [field, fieldname], context)[0] + if id: + res = Model.read([int(id)], [field, fieldname], context)[0] + else: + res = Model.default_get([field, fieldname], context) filecontent = base64.b64decode(res.get(field, '')) if not filecontent: return req.not_found() diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index e998b3b2afc..06171ed1d73 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2642,14 +2642,10 @@ openerp.web.form.FieldBinary = openerp.web.form.Field.extend({ on_file_uploaded_and_valid: function(size, name, content_type, file_base64) { }, on_save_as: function() { - if (!this.view.datarecord.id) { - this.do_warn("Can't save file", "The record has not yet been saved"); - } else { - var url = '/web/binary/saveas?session_id=' + this.session.session_id + '&model=' + - this.view.dataset.model +'&id=' + (this.view.datarecord.id || '') + '&field=' + this.name + - '&fieldname=' + (this.node.attrs.filename || '') + '&t=' + (new Date().getTime()); - window.open(url); - } + var url = '/web/binary/saveas?session_id=' + this.session.session_id + '&model=' + + this.view.dataset.model +'&id=' + (this.view.datarecord.id || '') + '&field=' + this.name + + '&fieldname=' + (this.node.attrs.filename || '') + '&t=' + (new Date().getTime()); + window.open(url); }, on_clear: function() { if (this.value !== false) {