summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorChristophe Matthieu <chm@odoo.com>2015-08-21 09:58:13 +0200
committerAntony Lesuisse <al@openerp.com>2015-08-21 22:06:52 +0200
commit6baf611df1064a3ae5f6368d3a35b3c3d7779543 (patch)
tree6d6c6b51896ab3322ff205ff30dc57173f591b48 /addons/web/static/src
parent5d2c3ceb028095880262f3c6fa11013f39f86c57 (diff)
[IMP] web: create generic controller '/web/content' and '/web/image'
Replace deprecate controllers like /web/binary/image, /web/binary/saveas... Use ETag for all content with 'unique' option to cache the content if the content is never changed.
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/views/form_relational_widgets.js4
-rw-r--r--addons/web/static/src/js/views/form_view.js1
-rw-r--r--addons/web/static/src/js/views/form_widgets.js28
-rw-r--r--addons/web/static/src/js/views/list_view.js2
-rw-r--r--addons/web/static/src/js/widgets/sidebar.js8
-rw-r--r--addons/web/static/src/js/widgets/user_menu.js2
6 files changed, 22 insertions, 23 deletions
diff --git a/addons/web/static/src/js/views/form_relational_widgets.js b/addons/web/static/src/js/views/form_relational_widgets.js
index d1d1378b92b..92d2360163c 100644
--- a/addons/web/static/src/js/views/form_relational_widgets.js
+++ b/addons/web/static/src/js/views/form_relational_widgets.js
@@ -1462,7 +1462,7 @@ var FieldMany2ManyBinaryMultiFiles = AbstractManyField.extend(common.Reinitializ
this.$el.on('change', 'input.oe_form_binary_file', this.on_file_change );
},
get_file_url: function (attachment) {
- return this.session.url('/web/binary/saveas', {model: 'ir.attachment', field: 'datas', filename_field: 'datas_fname', id: attachment.id});
+ return '/web/content/' + attachment.id + '?download=true';
},
read_name_values : function () {
var self = this;
@@ -1474,7 +1474,7 @@ var FieldMany2ManyBinaryMultiFiles = AbstractManyField.extend(common.Reinitializ
return this.ds_file.call('read', [_value, ['id', 'name', 'datas_fname']]).then(function (datas) {
_.each(datas, function (data) {
data.no_unlink = true;
- data.url = self.session.url('/web/binary/saveas', {model: 'ir.attachment', field: 'datas', filename_field: 'datas_fname', id: data.id});
+ data.url = '/web/content/' + data.id + '?download=true';
self.data[data.id] = data;
});
return ids;
diff --git a/addons/web/static/src/js/views/form_view.js b/addons/web/static/src/js/views/form_view.js
index c386e6fc993..9beb6a8c9a0 100644
--- a/addons/web/static/src/js/views/form_view.js
+++ b/addons/web/static/src/js/views/form_view.js
@@ -333,6 +333,7 @@ var FormView = View.extend(common.FieldManagerMixin, {
}
var fields = _.keys(self.fields_view.fields);
fields.push('display_name');
+ fields.push('__last_update');
return self.dataset.read_index(fields, {
context: { 'bin_size': true }
}).then(function(r) {
diff --git a/addons/web/static/src/js/views/form_widgets.js b/addons/web/static/src/js/views/form_widgets.js
index 7d007981484..0d42f3d4469 100644
--- a/addons/web/static/src/js/views/form_widgets.js
+++ b/addons/web/static/src/js/views/form_widgets.js
@@ -1155,18 +1155,18 @@ var FieldBinary = common.AbstractField.extend(common.ReinitializeFieldMixin, {
var filename_fieldname = this.node.attrs.filename;
var filename_field = this.view.fields && this.view.fields[filename_fieldname];
this.session.get_file({
- url: '/web/binary/saveas_ajax',
- data: {data: JSON.stringify({
- model: this.view.dataset.model,
- id: (this.view.datarecord.id || ''),
- field: this.name,
- filename_field: (filename_fieldname || ''),
- data: utils.is_bin_size(value) ? null : value,
- filename: filename_field ? filename_field.get('value') : null,
- context: this.view.dataset.get_context()
- })},
- complete: framework.unblockUI,
- error: c.rpc_error.bind(c)
+ 'url': '/web/content',
+ 'data': {
+ 'model': this.view.dataset.model,
+ 'id': this.view.datarecord.id,
+ 'field': this.name,
+ 'filename_field': filename_fieldname,
+ 'filename': filename_field ? filename_field.get('value') : null,
+ 'download': true,
+ 'data': utils.is_bin_size(value) ? null : value,
+ },
+ 'complete': framework.unblockUI,
+ 'error': c.rpc_error.bind(c)
});
ev.stopPropagation();
return false;
@@ -1263,11 +1263,11 @@ var FieldBinaryImage = FieldBinary.extend({
var field = this.name;
if (this.options.preview_image)
field = this.options.preview_image;
- url = session.url('/web/binary/image', {
+ url = session.url('/web/image', {
model: this.view.dataset.model,
id: id,
field: field,
- t: (new Date().getTime()),
+ unique: (this.view.datarecord.__last_update || '').replace(/[^0-9]/g, ''),
});
} else {
url = this.placeholder;
diff --git a/addons/web/static/src/js/views/list_view.js b/addons/web/static/src/js/views/list_view.js
index ec21706bbca..63940726fca 100644
--- a/addons/web/static/src/js/views/list_view.js
+++ b/addons/web/static/src/js/views/list_view.js
@@ -1910,7 +1910,7 @@ var ColumnBinary = Column.extend({
if (value.substr(0, 10).indexOf(' ') == -1) {
download_url = "data:application/octet-stream;base64," + value;
} else {
- download_url = session.url('/web/binary/saveas', {model: options.model, field: this.id, id: options.id});
+ download_url = session.url('/web/content', {model: options.model, field: this.id, id: options.id, download: true});
if (this.filename) {
download_url += '&filename_field=' + this.filename;
}
diff --git a/addons/web/static/src/js/widgets/sidebar.js b/addons/web/static/src/js/widgets/sidebar.js
index 9f7c46bf48d..18f488cdfec 100644
--- a/addons/web/static/src/js/widgets/sidebar.js
+++ b/addons/web/static/src/js/widgets/sidebar.js
@@ -174,16 +174,14 @@ var Sidebar = Widget.extend({
}
},
on_attachments_loaded: function(attachments) {
- var self = this;
- var prefix = session.url('/web/binary/saveas', {model: 'ir.attachment', field: 'datas', filename_field: 'name'});
_.each(attachments,function(a) {
a.label = a.name;
if(a.type === "binary") {
- a.url = prefix + '&id=' + a.id + '&t=' + (new Date().getTime());
+ a.url = '/web/content/' + a.id + '?download=true&t=' + (new Date().getTime());
}
});
- self.items.files = attachments;
- self.redraw();
+ this.items.files = attachments;
+ this.redraw();
this.$('.oe_sidebar_add_attachment .oe_form_binary_file').change(this.on_attachment_changed);
this.$el.find('.oe_sidebar_delete_item').click(this.on_attachment_delete);
},
diff --git a/addons/web/static/src/js/widgets/user_menu.js b/addons/web/static/src/js/widgets/user_menu.js
index 94a47cfa4b0..9111a9a34ba 100644
--- a/addons/web/static/src/js/widgets/user_menu.js
+++ b/addons/web/static/src/js/widgets/user_menu.js
@@ -47,7 +47,7 @@ var SystrayMenu = Widget.extend({
if (!session.debug) {
topbar_name = _.str.sprintf("%s (%s)", topbar_name, session.db);
}
- var avatar_src = session.url('/web/binary/image', {model:'res.users', field: 'image_small', id: session.uid});
+ var avatar_src = session.url('/web/image', {model:'res.users', field: 'image_small', id: session.uid});
$avatar.attr('src', avatar_src);
core.bus.trigger('resize'); // Re-trigger the reflow logic