diff options
| author | Christophe Matthieu <chm@odoo.com> | 2015-08-21 09:58:13 +0200 |
|---|---|---|
| committer | Antony Lesuisse <al@openerp.com> | 2015-08-21 22:06:52 +0200 |
| commit | 6baf611df1064a3ae5f6368d3a35b3c3d7779543 (patch) | |
| tree | 6d6c6b51896ab3322ff205ff30dc57173f591b48 /addons/web/static/src | |
| parent | 5d2c3ceb028095880262f3c6fa11013f39f86c57 (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.js | 4 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/form_view.js | 1 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/form_widgets.js | 28 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/list_view.js | 2 | ||||
| -rw-r--r-- | addons/web/static/src/js/widgets/sidebar.js | 8 | ||||
| -rw-r--r-- | addons/web/static/src/js/widgets/user_menu.js | 2 |
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 |
