summaryrefslogtreecommitdiff
path: root/odoo
diff options
context:
space:
mode:
Diffstat (limited to 'odoo')
-rw-r--r--odoo/addons/base/base.sql2
-rw-r--r--odoo/addons/base/ir/ir_model.py4
-rw-r--r--odoo/http.py5
-rw-r--r--odoo/tools/misc.py9
-rw-r--r--odoo/tools/sql.py10
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