summaryrefslogtreecommitdiff
path: root/addons/web/controllers
diff options
context:
space:
mode:
authorDarshan Kalola (OpenERP) <dka@tinyerp.com>2014-03-31 15:02:50 +0530
committerDarshan Kalola (OpenERP) <dka@tinyerp.com>2014-03-31 15:02:50 +0530
commitad99e8cfaebd2d686d48f6d7928ebefaa852d547 (patch)
tree28f6b719c4c250b7397c6a39db260d8e91f5c023 /addons/web/controllers
parent48388c9ad4d338050b065bdc0904a2a09ec225af (diff)
parentfc760dd0d03a07bf0c5833d93b3bcd7566a12e66 (diff)
[MERGE]sync with trunk.
bzr revid: dka@tinyerp.com-20140331093250-wq0tgglwqvlgyw53
Diffstat (limited to 'addons/web/controllers')
-rw-r--r--addons/web/controllers/main.py43
-rw-r--r--addons/web/controllers/testing.py7
2 files changed, 32 insertions, 18 deletions
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py
index a9f56a2099c..fb6cded7c2d 100644
--- a/addons/web/controllers/main.py
+++ b/addons/web/controllers/main.py
@@ -14,6 +14,7 @@ import hashlib
import os
import re
import simplejson
+import sys
import time
import urllib2
import zlib
@@ -37,10 +38,14 @@ from openerp.http import request, serialize_exception as _serialize_exception
_logger = logging.getLogger(__name__)
-env = jinja2.Environment(
- loader=jinja2.PackageLoader('openerp.addons.web', "views"),
- autoescape=True
-)
+if hasattr(sys, 'frozen'):
+ # When running on compiled windows binary, we don't have access to package loader.
+ path = os.path.realpath(os.path.join(os.path.dirname(__file__), '..', 'views'))
+ loader = jinja2.FileSystemLoader(path)
+else:
+ loader = jinja2.PackageLoader('openerp.addons.web', "views")
+
+env = jinja2.Environment(loader=loader, autoescape=True)
env.filters["json"] = simplejson.dumps
#----------------------------------------------------------
@@ -359,7 +364,13 @@ def manifest_glob(extension, addons=None, db=None, include_remotes=False):
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):])))
+ # Hack for IE, who limit 288Ko, 4095 rules, 31 sheets
+ # http://support.microsoft.com/kb/262161/en
+ if pattern == "static/lib/bootstrap/css/bootstrap.css":
+ if include_remotes:
+ r.insert(0, (None, fs2web(path[len(addons_path):])))
+ else:
+ r.append((path, fs2web(path[len(addons_path):])))
return r
def manifest_list(extension, mods=None, db=None, debug=False):
@@ -424,6 +435,15 @@ def set_cookie_and_redirect(redirect_url):
redirect.autocorrect_location_header = False
return redirect
+def login_redirect():
+ url = '/web/login?'
+ if request.debug:
+ url += 'debug&'
+ return """<html><head><script>
+ window.location = '%sredirect=' + encodeURIComponent(window.location);
+ </script></head></html>
+ """ % (url,)
+
def load_actions_from_ir_values(key, key2, models, meta):
Values = request.session.model('ir.values')
actions = Values.get(key, key2, models, meta, request.context)
@@ -622,7 +642,7 @@ class Home(http.Controller):
@http.route('/', type='http', auth="none")
def index(self, s_action=None, db=None, **kw):
- return http.local_redirect('/web', query=request.params)
+ return http.local_redirect('/web', query=request.params, keep_hash=True)
@http.route('/web', type='http', auth="none")
def web_client(self, s_action=None, **kw):
@@ -635,7 +655,7 @@ class Home(http.Controller):
}
return render_bootstrap_template("web.webclient_bootstrap", headers=headers)
else:
- return http.local_redirect('/web/login', query=request.params)
+ return login_redirect()
@http.route('/web/login', type='http', auth="none")
def web_login(self, redirect=None, **kw):
@@ -930,10 +950,11 @@ class Database(http.Controller):
return simplejson.dumps([[],[{'error': openerp.tools.ustr(e), 'title': _('Backup Database')}]])
@http.route('/web/database/restore', type='http', auth="none")
- def restore(self, db_file, restore_pwd, new_db):
+ def restore(self, db_file, restore_pwd, new_db, mode):
try:
+ copy = mode == 'copy'
data = base64.b64encode(db_file.read())
- request.session.proxy("db").restore(restore_pwd, new_db, data)
+ request.session.proxy("db").restore(restore_pwd, new_db, data, copy)
return ''
except openerp.exceptions.AccessDenied, e:
raise Exception("AccessDenied")
@@ -1598,8 +1619,8 @@ class Export(http.Controller):
model, map(operator.itemgetter('name'), export_fields_list))
return [
- {'name': field_name, 'label': fields_data[field_name]}
- for field_name in fields_data.keys()
+ {'name': field['name'], 'label': fields_data[field['name']]}
+ for field in export_fields_list
]
def fields_info(self, model, export_fields):
diff --git a/addons/web/controllers/testing.py b/addons/web/controllers/testing.py
index c99efed4294..a51b619d49f 100644
--- a/addons/web/controllers/testing.py
+++ b/addons/web/controllers/testing.py
@@ -157,10 +157,3 @@ class TestRunnerController(http.Controller):
# replace OS path separators (from join & normpath) by URI ones
yield path[len(root):].replace(os.path.sep, '/')
- @http.route('/web/tests/set_session_value', type='json', auth="none")
- def set_session_value(self, value):
- request.session.some_test_value = value
-
- @http.route('/web/tests/get_session_value', type='json', auth="none")
- def get_session_value(self):
- return request.session.some_test_value