summaryrefslogtreecommitdiff
path: root/addons/web/controllers/main.py
diff options
context:
space:
mode:
authorniv-openerp <nicolas.vanhoren@openerp.com>2013-06-10 17:45:14 +0200
committerniv-openerp <nicolas.vanhoren@openerp.com>2013-06-10 17:45:14 +0200
commita94bbf8e5e3aafb236a059f82b855d16dc033d9e (patch)
tree0b3f2cfa795a23150a10d561996052a023fd48f5 /addons/web/controllers/main.py
parent901ba0cba5ea8413ea5cb64974ce8fc973093105 (diff)
parent02aa3f211471a55fd956027a84b6baca1272ffa1 (diff)
[FIX] Merge fix in saas1 for the problem that made the server crash when install a db
bzr revid: nicolas.vanhoren@openerp.com-20130610144915-0nj8vpk7n84ocj3f bzr revid: nicolas.vanhoren@openerp.com-20130610150657-3xddn91gm0iq0ubp bzr revid: nicolas.vanhoren@openerp.com-20130610154514-oee6s4f9g17bx63z
Diffstat (limited to 'addons/web/controllers/main.py')
-rw-r--r--addons/web/controllers/main.py32
1 files changed, 19 insertions, 13 deletions
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py
index b7071eff9e2..8683ef177bc 100644
--- a/addons/web/controllers/main.py
+++ b/addons/web/controllers/main.py
@@ -310,7 +310,7 @@ def fs2web(path):
"""convert FS path into web path"""
return '/'.join(path.split(os.path.sep))
-def manifest_glob(extension, addons=None, db=None):
+def manifest_glob(extension, addons=None, db=None, include_remotes=False):
if addons is None:
addons = module_boot(db=db)
else:
@@ -324,8 +324,12 @@ def manifest_glob(extension, addons=None, db=None):
addons_path = os.path.join(manifest['addons_path'], '')[:-1]
globlist = manifest.get(extension, [])
for pattern in globlist:
- for path in glob.glob(os.path.normpath(os.path.join(addons_path, addon, pattern))):
- r.append((path, fs2web(path[len(addons_path):])))
+ if pattern.startswith(('http://', 'https://', '//')):
+ if include_remotes:
+ r.append((None, pattern))
+ else:
+ for path in glob.glob(os.path.normpath(os.path.join(addons_path, addon, pattern))):
+ r.append((path, fs2web(path[len(addons_path):])))
return r
def manifest_list(extension, mods=None, db=None):
@@ -333,14 +337,16 @@ def manifest_list(extension, mods=None, db=None):
mods: a comma separated string listing modules
db: a database name (return all installed modules in that database)
"""
+ files = manifest_glob(extension, addons=mods, db=db, include_remotes=True)
if not req.debug:
path = '/web/webclient/' + extension
if mods is not None:
path += '?' + urllib.urlencode({'mods': mods})
elif db:
path += '?' + urllib.urlencode({'db': db})
- return [path]
- files = manifest_glob(extension, addons=mods, db=db)
+
+ remotes = [wp for fp, wp in files if fp is None]
+ return [path] + remotes
return [wp for _fp, wp in files]
def get_last_modified(files):
@@ -1204,19 +1210,19 @@ class Binary(openerpweb.Controller):
headers = [('Content-Type', 'image/png')]
etag = req.httprequest.headers.get('If-None-Match')
hashed_session = hashlib.md5(req.session_id).hexdigest()
+ retag = hashed_session
id = None if not id else simplejson.loads(id)
if type(id) is list:
id = id[0] # m2o
- if etag:
- if not id and hashed_session == etag:
- return werkzeug.wrappers.Response(status=304)
- else:
- date = Model.read([id], [last_update], req.context)[0].get(last_update)
- if hashlib.md5(date).hexdigest() == etag:
+ try:
+ if etag:
+ if not id and hashed_session == etag:
return werkzeug.wrappers.Response(status=304)
+ else:
+ date = Model.read([id], [last_update], req.context)[0].get(last_update)
+ if hashlib.md5(date).hexdigest() == etag:
+ return werkzeug.wrappers.Response(status=304)
- retag = hashed_session
- try:
if not id:
res = Model.default_get([field], req.context).get(field)
image_base64 = res