[FIX] Roundtrips binary field value if not bin size
lp bug: https://launchpad.net/bugs/1082616 fixed bzr revid: fme@openerp.com-20121211103357-csqirmhxehmszyu4
This commit is contained in:
parent
e616a9aa14
commit
c124fc3281
|
@ -1246,6 +1246,7 @@ class Binary(openerpweb.Controller):
|
||||||
jdata = simplejson.loads(data)
|
jdata = simplejson.loads(data)
|
||||||
model = jdata['model']
|
model = jdata['model']
|
||||||
field = jdata['field']
|
field = jdata['field']
|
||||||
|
data = jdata['data']
|
||||||
id = jdata.get('id', None)
|
id = jdata.get('id', None)
|
||||||
filename_field = jdata.get('filename_field', None)
|
filename_field = jdata.get('filename_field', None)
|
||||||
context = jdata.get('context', {})
|
context = jdata.get('context', {})
|
||||||
|
@ -1254,7 +1255,9 @@ class Binary(openerpweb.Controller):
|
||||||
fields = [field]
|
fields = [field]
|
||||||
if filename_field:
|
if filename_field:
|
||||||
fields.append(filename_field)
|
fields.append(filename_field)
|
||||||
if id:
|
if data:
|
||||||
|
res = { field: data }
|
||||||
|
elif id:
|
||||||
res = Model.read([int(id)], fields, context)[0]
|
res = Model.read([int(id)], fields, context)[0]
|
||||||
else:
|
else:
|
||||||
res = Model.default_get(fields, context)
|
res = Model.default_get(fields, context)
|
||||||
|
|
|
@ -1694,6 +1694,10 @@ instance.web.form.compute_domain = function(expr, fields) {
|
||||||
return _.all(stack, _.identity);
|
return _.all(stack, _.identity);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
instance.web.form.is_bin_size = function(v) {
|
||||||
|
return /^\d+(\.\d*)? \w+$/.test(v);
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Must be applied over an class already possessing the PropertiesMixin.
|
* Must be applied over an class already possessing the PropertiesMixin.
|
||||||
*
|
*
|
||||||
|
@ -4867,11 +4871,6 @@ instance.web.form.FieldBinary = instance.web.form.AbstractField.extend(instance.
|
||||||
if (!value) {
|
if (!value) {
|
||||||
this.do_warn(_t("Save As..."), _t("The field is empty, there's nothing to save !"));
|
this.do_warn(_t("Save As..."), _t("The field is empty, there's nothing to save !"));
|
||||||
ev.stopPropagation();
|
ev.stopPropagation();
|
||||||
} else if (this._dirty_flag) {
|
|
||||||
var link = this.$('.oe_form_binary_file_save_data')[0];
|
|
||||||
link.download = this.filename || "download.bin"; // Works on only on Google Chrome
|
|
||||||
//link.target = '_blank';
|
|
||||||
link.href = "data:application/octet-stream;base64," + value;
|
|
||||||
} else {
|
} else {
|
||||||
instance.web.blockUI();
|
instance.web.blockUI();
|
||||||
var c = instance.webclient.crashmanager;
|
var c = instance.webclient.crashmanager;
|
||||||
|
@ -4882,6 +4881,7 @@ instance.web.form.FieldBinary = instance.web.form.AbstractField.extend(instance.
|
||||||
id: (this.view.datarecord.id || ''),
|
id: (this.view.datarecord.id || ''),
|
||||||
field: this.name,
|
field: this.name,
|
||||||
filename_field: (this.node.attrs.filename || ''),
|
filename_field: (this.node.attrs.filename || ''),
|
||||||
|
data: instance.web.form.is_bin_size(value) ? null : value,
|
||||||
context: this.view.dataset.get_context()
|
context: this.view.dataset.get_context()
|
||||||
})},
|
})},
|
||||||
complete: instance.web.unblockUI,
|
complete: instance.web.unblockUI,
|
||||||
|
@ -4961,7 +4961,7 @@ instance.web.form.FieldBinaryImage = instance.web.form.FieldBinary.extend({
|
||||||
render_value: function() {
|
render_value: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
var url;
|
var url;
|
||||||
if (this.get('value') && ! /^\d+(\.\d*)? \w+$/.test(this.get('value'))) {
|
if (this.get('value') && !instance.web.form.is_bin_size(this.get('value'))) {
|
||||||
url = 'data:image/png;base64,' + this.get('value');
|
url = 'data:image/png;base64,' + this.get('value');
|
||||||
} else if (this.get('value')) {
|
} else if (this.get('value')) {
|
||||||
var id = JSON.stringify(this.view.datarecord.id || null);
|
var id = JSON.stringify(this.view.datarecord.id || null);
|
||||||
|
|
|
@ -988,7 +988,7 @@ instance.web_kanban.KanbanRecord = instance.web.Widget.extend({
|
||||||
kanban_image: function(model, field, id, cache, options) {
|
kanban_image: function(model, field, id, cache, options) {
|
||||||
options = options || {};
|
options = options || {};
|
||||||
var url;
|
var url;
|
||||||
if (this.record[field] && this.record[field].value && ! /^\d+(\.\d*)? \w+$/.test(this.record[field].value)) {
|
if (this.record[field] && this.record[field].value && !instance.web.form.is_bin_size(this.record[field].value)) {
|
||||||
url = 'data:image/png;base64,' + this.record[field].value;
|
url = 'data:image/png;base64,' + this.record[field].value;
|
||||||
} else if (this.record[field] && ! this.record[field].value) {
|
} else if (this.record[field] && ! this.record[field].value) {
|
||||||
url = "/web/static/src/img/placeholder.png";
|
url = "/web/static/src/img/placeholder.png";
|
||||||
|
|
Loading…
Reference in New Issue