diff options
| author | Christophe Simonis <chs@openerp.com> | 2013-06-13 19:39:00 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@openerp.com> | 2013-06-13 19:39:00 +0200 |
| commit | a61e7cb0c80ae773cab9753bd8a4e7e888bbf415 (patch) | |
| tree | 019a235869a5e087055700895d4584c80e2f9afb /addons/web/controllers/main.py | |
| parent | 5ed0ac2614b9430e61dae472d657a21c037d6ee9 (diff) | |
| parent | 180e6e41d81e28df43b41e3cb6131225d4169a28 (diff) | |
[MERGE] forward port of branch saas-1 up to revid 4887 chs@openerp.com-20130612153934-qyp6pb3bc4za4taf
bzr revid: chs@openerp.com-20130613172414-dln3g4j0ykcwaa02
bzr revid: chs@openerp.com-20130613173900-xl7rh321nnw2b04b
Diffstat (limited to 'addons/web/controllers/main.py')
| -rw-r--r-- | addons/web/controllers/main.py | 48 |
1 files changed, 23 insertions, 25 deletions
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 8683ef177bc..1bcdb7f54a9 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -32,6 +32,7 @@ except ImportError: import openerp import openerp.modules.registry from openerp.tools.translate import _ +from openerp.tools import config from .. import http openerpweb = http @@ -86,9 +87,9 @@ def rjsmin(script): ).strip() return result -def db_list(): +def db_list(force=False): proxy = req.session.proxy("db") - dbs = proxy.list() + dbs = proxy.list(force) h = req.httprequest.environ['HTTP_HOST'].split(':')[0] d = h.split('.')[0] r = openerp.tools.config['dbfilter'].replace('%h', h).replace('%d', d) @@ -104,25 +105,21 @@ def db_monodb_redirect(): if db_url: return (db_url, False) - try: - dbs = db_list() - except Exception: - # ignore access denied - dbs = [] + dbs = db_list(True) # 2 use the database from the cookie if it's listable and still listed cookie_db = req.httprequest.cookies.get('last_used_database') if cookie_db in dbs: db = cookie_db - # 3 use the first db - if dbs and not db: + # 3 use the first db if user can list databases + if dbs and not db and (config['list_db'] or len(dbs) == 1): db = dbs[0] # redirect to the chosen db if multiple are available if db and len(dbs) > 1: query = dict(urlparse.parse_qsl(req.httprequest.query_string, keep_blank_values=True)) - query.update({ 'db': db }) + query.update({'db': db}) redirect = req.httprequest.path + '?' + urllib.urlencode(query) return (db, redirect) @@ -283,8 +280,9 @@ def concat_files(file_list, reader=None, intersperse=""): if reader is None: def reader(f): - with open(f, 'rb') as fp: - return fp.read() + import codecs + with codecs.open(f, 'rb', "utf-8-sig") as fp: + return fp.read().encode("utf-8") files_content = [] for fname in file_list: @@ -766,7 +764,14 @@ class Database(openerpweb.Controller): @openerpweb.jsonrequest def get_list(self): - return db_list() + # TODO change js to avoid calling this method if in monodb mode + try: + return db_list() + except openerp.exceptions.AccessDenied: + monodb = db_monodb(req) + if monodb: + return [monodb] + raise @openerpweb.jsonrequest def create(self, fields): @@ -781,20 +786,11 @@ class Database(openerpweb.Controller): @openerpweb.jsonrequest def duplicate(self, fields): params = dict(map(operator.itemgetter('name', 'value'), fields)) - return req.session.proxy("db").duplicate_database( - params['super_admin_pwd'], - params['db_original_name'], - params['db_name']) - - @openerpweb.jsonrequest - def duplicate(self, fields): - params = dict(map(operator.itemgetter('name', 'value'), fields)) duplicate_attrs = ( params['super_admin_pwd'], params['db_original_name'], params['db_name'], ) - return req.session.proxy("db").duplicate_database(*duplicate_attrs) @openerpweb.jsonrequest @@ -802,9 +798,9 @@ class Database(openerpweb.Controller): password, db = operator.itemgetter( 'drop_pwd', 'drop_db')( dict(map(operator.itemgetter('name', 'value'), fields))) - + try: - return req.session.proxy("db").drop(password, db) + if req.session.proxy("db").drop(password, db):return True except openerp.exceptions.AccessDenied: return {'error': 'AccessDenied', 'title': 'Drop Database'} except Exception: @@ -1380,7 +1376,7 @@ class Binary(openerpweb.Controller): else: try: # create an empty registry - registry = openerp.modules.registry.Registry(dbname.lower()) + registry = openerp.modules.registry.Registry(dbname) with registry.cursor() as cr: cr.execute("""SELECT c.logo_web FROM res_users u @@ -1490,6 +1486,8 @@ class Export(openerpweb.Controller): if all(dict(attrs).get('readonly', True) for attrs in field.get('states', {}).values()): continue + if not field.get('exportable', True): + continue id = prefix + (prefix and '/'or '') + field_name name = parent_name + (parent_name and '/' or '') + field['string'] |
