[IMP] add doc to Binary.saveas, and rename a field for clarity
bzr revid: xmo@openerp.com-20120110143518-ircd8x1feyf5rquf
This commit is contained in:
parent
bf6e1eae28
commit
ee9a9558c0
|
@ -1184,20 +1184,34 @@ class Binary(openerpweb.Controller):
|
||||||
return open(os.path.join(addons_path, 'web', 'static', 'src', 'img', 'placeholder.png'), 'rb').read()
|
return open(os.path.join(addons_path, 'web', 'static', 'src', 'img', 'placeholder.png'), 'rb').read()
|
||||||
|
|
||||||
@openerpweb.httprequest
|
@openerpweb.httprequest
|
||||||
def saveas(self, req, model, id, field, fieldname, **kw):
|
def saveas(self, req, model, field, id=None, filename_field=None, **kw):
|
||||||
|
""" Download link for files stored as binary fields.
|
||||||
|
|
||||||
|
If the ``id`` parameter is omitted, fetches the default value for the
|
||||||
|
binary field (via ``default_get``), otherwise fetches the field for
|
||||||
|
that precise record.
|
||||||
|
|
||||||
|
:param req: OpenERP request
|
||||||
|
:type req: :class:`web.common.http.HttpRequest`
|
||||||
|
:param str model: name of the model to fetch the binary from
|
||||||
|
:param str field: binary field
|
||||||
|
:param str id: id of the record from which to fetch the binary
|
||||||
|
:param str filename_field: field holding the file's name, if any
|
||||||
|
:returns: :class:`werkzeug.wrappers.Response`
|
||||||
|
"""
|
||||||
Model = req.session.model(model)
|
Model = req.session.model(model)
|
||||||
context = req.session.eval_context(req.context)
|
context = req.session.eval_context(req.context)
|
||||||
if id:
|
if id:
|
||||||
res = Model.read([int(id)], [field, fieldname], context)[0]
|
res = Model.read([int(id)], [field, filename_field], context)[0]
|
||||||
else:
|
else:
|
||||||
res = Model.default_get([field, fieldname], context)
|
res = Model.default_get([field, filename_field], context)
|
||||||
filecontent = base64.b64decode(res.get(field, ''))
|
filecontent = base64.b64decode(res.get(field, ''))
|
||||||
if not filecontent:
|
if not filecontent:
|
||||||
return req.not_found()
|
return req.not_found()
|
||||||
else:
|
else:
|
||||||
filename = '%s_%s' % (model.replace('.', '_'), id)
|
filename = '%s_%s' % (model.replace('.', '_'), id)
|
||||||
if fieldname:
|
if filename_field:
|
||||||
filename = res.get(fieldname, '') or filename
|
filename = res.get(filename_field, '') or filename
|
||||||
return req.make_response(filecontent,
|
return req.make_response(filecontent,
|
||||||
[('Content-Type', 'application/octet-stream'),
|
[('Content-Type', 'application/octet-stream'),
|
||||||
('Content-Disposition', 'attachment; filename=' + filename)])
|
('Content-Disposition', 'attachment; filename=' + filename)])
|
||||||
|
|
|
@ -3023,7 +3023,7 @@ openerp.web.form.FieldBinary = openerp.web.form.Field.extend({
|
||||||
on_save_as: function() {
|
on_save_as: function() {
|
||||||
var url = '/web/binary/saveas?session_id=' + this.session.session_id + '&model=' +
|
var url = '/web/binary/saveas?session_id=' + this.session.session_id + '&model=' +
|
||||||
this.view.dataset.model +'&id=' + (this.view.datarecord.id || '') + '&field=' + this.name +
|
this.view.dataset.model +'&id=' + (this.view.datarecord.id || '') + '&field=' + this.name +
|
||||||
'&fieldname=' + (this.node.attrs.filename || '') + '&t=' + (new Date().getTime());
|
'&filename_field=' + (this.node.attrs.filename || '') + '&t=' + (new Date().getTime());
|
||||||
window.open(url);
|
window.open(url);
|
||||||
},
|
},
|
||||||
on_clear: function() {
|
on_clear: function() {
|
||||||
|
|
|
@ -748,7 +748,7 @@
|
||||||
<li t-foreach="attachments" t-as="attachment">
|
<li t-foreach="attachments" t-as="attachment">
|
||||||
<t t-if="attachment.type == 'binary'" t-set="attachment.url" t-value="_s + '/web/binary/saveas?session_id='
|
<t t-if="attachment.type == 'binary'" t-set="attachment.url" t-value="_s + '/web/binary/saveas?session_id='
|
||||||
+ session.session_id + '&model=ir.attachment&id=' + attachment.id
|
+ session.session_id + '&model=ir.attachment&id=' + attachment.id
|
||||||
+ '&field=datas&fieldname=name&t=' + (new Date().getTime())"/>
|
+ '&field=datas&filename_field=name&t=' + (new Date().getTime())"/>
|
||||||
<a class="oe-sidebar-attachments-link" t-att-href="attachment.url" target="_blank">
|
<a class="oe-sidebar-attachments-link" t-att-href="attachment.url" target="_blank">
|
||||||
<t t-esc="attachment.name"/>
|
<t t-esc="attachment.name"/>
|
||||||
</a>
|
</a>
|
||||||
|
|
Loading…
Reference in New Issue