[ADD] Added 'Save As' feature to binary fields
bzr revid: fme@openerp.com-20110519134535-mjxhz0yvqlsnpsvm
This commit is contained in:
@@ -563,13 +563,28 @@ class FormView(View):
|
||||
if not id:
|
||||
res = Model.default_get([field], request.context).get(field, '')
|
||||
else:
|
||||
res = Model.read([id], [field], request.context)[0].get(field, '')
|
||||
res = Model.read([int(id)], [field], request.context)[0].get(field, '')
|
||||
return base64.decodestring(res)
|
||||
except:
|
||||
return self.placeholder()
|
||||
def placeholder(self):
|
||||
return open(os.path.join(openerpweb.path_addons, 'base', 'static', 'src', 'img', 'placeholder.png'), 'rb').read()
|
||||
|
||||
@openerpweb.httprequest
|
||||
def saveas(self, request, session_id, model, id, field, fieldname, **kw):
|
||||
Model = request.session.model(model)
|
||||
res = Model.read([int(id)], [field, fieldname])[0]
|
||||
filecontent = res.get(field, '')
|
||||
if not filecontent:
|
||||
raise cherrypy.NotFound
|
||||
else:
|
||||
cherrypy.response.headers['Content-Type'] = 'application/octet-stream'
|
||||
filename = '%s_%s' % (model.replace('.', '_'), id)
|
||||
if fieldname:
|
||||
filename = res.get(fieldname, '') or filename
|
||||
cherrypy.response.headers['Content-Disposition'] = 'attachment; filename=' + filename
|
||||
return base64.decodestring(filecontent)
|
||||
|
||||
@openerpweb.httprequest
|
||||
def upload(self, request, session_id, callback, ufile=None):
|
||||
cherrypy.response.timeout = 500
|
||||
|
||||
@@ -1196,6 +1196,7 @@ openerp.base.form.FieldBinary = openerp.base.form.Field.extend({
|
||||
start: function() {
|
||||
this._super.apply(this, arguments);
|
||||
this.$element.find('input.oe-binary-file').change(this.on_file_change);
|
||||
this.$element.find('button.oe-binary-file-save').click(this.on_save_as);
|
||||
this.$element.find('.oe-binary-file-clear').click(this.on_clear);
|
||||
},
|
||||
set_value_from_ui: function() {
|
||||
@@ -1235,6 +1236,12 @@ openerp.base.form.FieldBinary = openerp.base.form.Field.extend({
|
||||
},
|
||||
on_file_uploaded_and_valid: function(size, name, content_type, file_base64) {
|
||||
},
|
||||
on_save_as: function() {
|
||||
var url = '/base/formview/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) {
|
||||
this.value = false;
|
||||
@@ -1266,6 +1273,7 @@ openerp.base.form.FieldBinaryFile = openerp.base.form.FieldBinary.extend({
|
||||
var filename = this.node.attrs.filename;
|
||||
if (this.view.fields[filename]) {
|
||||
this.view.fields[filename].set_value(value);
|
||||
this.view.fields[filename].on_ui_change();
|
||||
}
|
||||
},
|
||||
on_clear: function() {
|
||||
|
||||
Reference in New Issue
Block a user