summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabien Meghazi <fme@openerp.com>2011-05-26 23:06:41 +0200
committerFabien Meghazi <fme@openerp.com>2011-05-26 23:06:41 +0200
commite3eb23b96c478f4e2aaf8ed34513b5e7d2aa37c7 (patch)
tree35b9fd8049a4b91624316aeed2d25193bc9a7395
parent91e65e8f00933a6e357e7c0b639a25261caea9d9 (diff)
[ADD] Added Binary#upload_attachment controller
bzr revid: fme@openerp.com-20110526210641-geszqjfcw3vx0vq8
-rw-r--r--addons/base/controllers/main.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py
index 0a5b3ba64b0..3462efd656e 100644
--- a/addons/base/controllers/main.py
+++ b/addons/base/controllers/main.py
@@ -414,6 +414,11 @@ class DataSet(openerpweb.Controller):
return {'result': r}
@openerpweb.jsonrequest
+ def unlink(self, request, model, ids=[]):
+ Model = request.session.model(model)
+ return Model.unlink(ids)
+
+ @openerpweb.jsonrequest
def call(self, req, model, method, ids, args):
m = req.session.model(model)
r = getattr(m, method)(ids, *args)
@@ -722,6 +727,32 @@ class Binary(openerpweb.Controller):
args = [False, e.message]
return out % (simplejson.dumps(callback), simplejson.dumps(args))
+ @openerpweb.httprequest
+ def upload_attachment(self, request, session_id, callback, model, id, ufile=None):
+ cherrypy.response.timeout = 500
+ Model = request.session.model('ir.attachment')
+ try:
+ out = """<script language="javascript" type="text/javascript">
+ var win = window.top.window,
+ callback = win[%s];
+ if (typeof(callback) === 'function') {
+ callback.call(this, %s);
+ }
+ </script>"""
+ attachment_id = Model.create({
+ 'name': ufile.filename,
+ 'datas': base64.encodestring(ufile.file.read()),
+ 'res_model': model,
+ 'res_id': int(id)
+ })
+ args = {
+ 'filename': ufile.filename,
+ 'id': attachment_id
+ }
+ except Exception, e:
+ args = { 'error': e.message }
+ return out % (simplejson.dumps(callback), simplejson.dumps(args))
+
class Action(openerpweb.Controller):
_cp_path = "/base/action"