diff options
| author | Christophe Simonis <chs@odoo.com> | 2017-09-06 17:40:59 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2017-09-06 17:40:59 +0200 |
| commit | d5382abeaad4d93b8def7e63cd47a86baaba8f0b (patch) | |
| tree | 6364ff760709b541eebdde4b04494b480dec87fb /odoo | |
| parent | c75fe95dfca366bf6c3b6a51908677039488aa4f (diff) | |
| parent | b8dd34fcbb895b8d62f3e133dcf5ee6f40a1400d (diff) | |
[MERGE] forward port branch saas-17 up to b8dd34fcbb8
Diffstat (limited to 'odoo')
| -rw-r--r-- | odoo/addons/base/base.sql | 2 | ||||
| -rw-r--r-- | odoo/addons/base/ir/ir_model.py | 4 | ||||
| -rw-r--r-- | odoo/http.py | 5 | ||||
| -rw-r--r-- | odoo/tools/misc.py | 9 | ||||
| -rw-r--r-- | odoo/tools/sql.py | 10 |
5 files changed, 19 insertions, 11 deletions
diff --git a/odoo/addons/base/base.sql b/odoo/addons/base/base.sql index 9e3efde69a6..57d57a1389b 100644 --- a/odoo/addons/base/base.sql +++ b/odoo/addons/base/base.sql @@ -50,7 +50,7 @@ CREATE TABLE ir_module_module ( website character varying(256), summary character varying(256), name character varying(128) NOT NULL, - author character varying(128), + author character varying, icon varchar, state character varying(16), latest_version character varying(64), diff --git a/odoo/addons/base/ir/ir_model.py b/odoo/addons/base/ir/ir_model.py index 9f3ef47faa0..73f1aa10ec2 100644 --- a/odoo/addons/base/ir/ir_model.py +++ b/odoo/addons/base/ir/ir_model.py @@ -1538,7 +1538,9 @@ class IrModelData(models.Model): if model == 'ir.model.fields': # Don't remove the LOG_ACCESS_COLUMNS unless _log_access # has been turned off on the model. - field = self.env[model].browse(res_id) + field = self.env[model].browse(res_id).with_context( + prefetch_fields=False, + ) if not field.exists(): _logger.info('Deleting orphan external_ids %s', external_ids) external_ids.unlink() diff --git a/odoo/http.py b/odoo/http.py index 288f13be8e3..de06e2472f3 100644 --- a/odoo/http.py +++ b/odoo/http.py @@ -306,7 +306,7 @@ class WebRequest(object): odoo.tools.debugger.post_mortem( odoo.tools.config, sys.exc_info()) # otherwise "no active exception to reraise" - raise exception + raise pycompat.reraise(type(exception), exception, sys.exc_info()[2]) def _call_function(self, *args, **kwargs): request = self @@ -1420,7 +1420,8 @@ class Root(object): # (the one using the cookie). That is a special feature of the Session Javascript class. # - It could allow session fixation attacks. if not explicit_session and hasattr(response, 'set_cookie'): - response.set_cookie('session_id', httprequest.session.sid, max_age=90 * 24 * 60 * 60) + response.set_cookie( + 'session_id', httprequest.session.sid, max_age=90 * 24 * 60 * 60, httponly=True) return response diff --git a/odoo/tools/misc.py b/odoo/tools/misc.py index 9116e08cec8..9eabfd13bd9 100644 --- a/odoo/tools/misc.py +++ b/odoo/tools/misc.py @@ -371,11 +371,12 @@ try: # TODO when xlsxwriter bump to 0.9.8, add worksheet_class=None parameter instead of kw def add_worksheet(self, name=None, **kw): - # invalid Excel character: []:*?/\ - name = re.sub(r'[\[\]:*?/\\]', '', name) + if name: + # invalid Excel character: []:*?/\ + name = re.sub(r'[\[\]:*?/\\]', '', name) - # maximum size is 31 characters - name = name[:31] + # maximum size is 31 characters + name = name[:31] return super(PatchedXlsxWorkbook, self).add_worksheet(name, **kw) xlsxwriter.Workbook = PatchedXlsxWorkbook diff --git a/odoo/tools/sql.py b/odoo/tools/sql.py index 75f71b2e6b4..ff52c5b580a 100644 --- a/odoo/tools/sql.py +++ b/odoo/tools/sql.py @@ -23,14 +23,18 @@ _CONFDELTYPES = { def existing_tables(cr, tablenames): """ Return the names of existing tables among ``tablenames``. """ - query = """ SELECT table_name FROM information_schema.tables - WHERE table_name IN %s AND table_schema != 'information_schema' """ + query = """ + SELECT relname + FROM pg_class + WHERE relname IN %s + AND relkind IN ('r', 'v', 'm') + """ cr.execute(query, [tuple(tablenames)]) return [row[0] for row in cr.fetchall()] def table_exists(cr, tablename): """ Return whether the given table exists. """ - query = "SELECT 1 FROM information_schema.tables WHERE table_name=%s AND table_schema != 'information_schema'" + query = "SELECT 1 FROM pg_class WHERE relkind IN ('r', 'v', 'm') AND relname=%s" cr.execute(query, (tablename,)) return cr.rowcount |
