diff options
| author | Fabien Meghazi <fme@openerp.com> | 2012-12-17 12:38:42 +0100 |
|---|---|---|
| committer | Fabien Meghazi <fme@openerp.com> | 2012-12-17 12:38:42 +0100 |
| commit | c1e9e6f12e343244f86fbf56bf4e5eb983b334d5 (patch) | |
| tree | 25b700d47006479c71f36c6231a64619d6715574 /addons/web/controllers/main.py | |
| parent | a724c43257252e19a9bb37fca9a01aae0c8bf8f5 (diff) | |
| parent | c8b5413f371fde077c872a9b782b7b60394f5e0d (diff) | |
[MERGE] trunk
bzr revid: fme@openerp.com-20121217113842-j3a013i7xrsb5a69
Diffstat (limited to 'addons/web/controllers/main.py')
| -rw-r--r-- | addons/web/controllers/main.py | 67 |
1 files changed, 49 insertions, 18 deletions
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index fe23e99a5a1..0d5194829ad 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -28,6 +28,7 @@ except ImportError: xlwt = None import openerp +import openerp.modules.registry from openerp.tools.translate import _ from .. import http @@ -169,7 +170,6 @@ def module_installed_bypass_session(dbname): loadable = openerpweb.addons_manifest.keys() modules = {} try: - import openerp.modules.registry registry = openerp.modules.registry.RegistryManager.get(dbname) with registry.cursor() as cr: m = registry.get('ir.module.module') @@ -1059,14 +1059,15 @@ class DataSet(openerpweb.Controller): def _call_kw(self, req, model, method, args, kwargs): # Temporary implements future display_name special field for model#read() - if method == 'read' and kwargs.get('context') and kwargs['context'].get('future_display_name'): + if method == 'read' and kwargs.get('context', {}).get('future_display_name'): if 'display_name' in args[1]: - names = req.session.model(model).name_get(args[0], **kwargs) + names = dict(req.session.model(model).name_get(args[0], **kwargs)) args[1].remove('display_name') - r = getattr(req.session.model(model), method)(*args, **kwargs) - for i in range(len(r)): - r[i]['display_name'] = names[i][1] or "%s#%d" % (model, names[i][0]) - return r + records = req.session.model(model).read(*args, **kwargs) + for record in records: + record['display_name'] = \ + names.get(record['id']) or "%s#%d" % (model, (record['id'])) + return records return getattr(req.session.model(model), method)(*args, **kwargs) @@ -1200,9 +1201,10 @@ class Binary(openerpweb.Controller): except: pass return req.make_response(image_data, headers) - def placeholder(self, req): + + def placeholder(self, req, image='placeholder.png'): addons_path = openerpweb.addons_manifest['web']['addons_path'] - 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', image), 'rb').read() @openerpweb.httprequest def saveas(self, req, model, field, id=None, filename_field=None, **kw): @@ -1275,11 +1277,11 @@ class Binary(openerpweb.Controller): @openerpweb.httprequest def upload(self, req, callback, ufile): # TODO: might be useful to have a configuration flag for max-length file uploads + out = """<script language="javascript" type="text/javascript"> + var win = window.top.window; + win.jQuery(win).trigger(%s, %s); + </script>""" try: - out = """<script language="javascript" type="text/javascript"> - var win = window.top.window; - win.jQuery(win).trigger(%s, %s); - </script>""" data = ufile.read() args = [len(data), ufile.filename, ufile.content_type, base64.b64encode(data)] @@ -1290,11 +1292,11 @@ class Binary(openerpweb.Controller): @openerpweb.httprequest def upload_attachment(self, req, callback, model, id, ufile): Model = req.session.model('ir.attachment') + out = """<script language="javascript" type="text/javascript"> + var win = window.top.window; + win.jQuery(win).trigger(%s, %s); + </script>""" try: - out = """<script language="javascript" type="text/javascript"> - var win = window.top.window; - win.jQuery(win).trigger(%s, %s); - </script>""" attachment_id = Model.create({ 'name': ufile.filename, 'datas': base64.encodestring(ufile.read()), @@ -1306,10 +1308,39 @@ class Binary(openerpweb.Controller): 'filename': ufile.filename, 'id': attachment_id } - except Exception,e: + except xmlrpclib.Fault, e: args = {'error':e.faultCode } return out % (simplejson.dumps(callback), simplejson.dumps(args)) + @openerpweb.httprequest + def company_logo(self, req, dbname=None): + # TODO add etag, refactor to use /image code for etag + uid = None + if req.session._db: + dbname = req.session._db + uid = req.session._uid + elif dbname is None: + dbname = db_monodb(req) + + if uid is None: + uid = openerp.SUPERUSER_ID + + if not dbname: + image_data = self.placeholder(req, 'logo.png') + else: + registry = openerp.modules.registry.RegistryManager.get(dbname) + with registry.cursor() as cr: + user = registry.get('res.users').browse(cr, uid, uid) + if user.company_id.logo_web: + image_data = user.company_id.logo_web.decode('base64') + else: + image_data = self.placeholder(req, 'nologo.png') + headers = [ + ('Content-Type', 'image/png'), + ('Content-Length', len(image_data)), + ] + return req.make_response(image_data, headers) + class Action(openerpweb.Controller): _cp_path = "/web/action" |
