summaryrefslogtreecommitdiff
path: root/odoo
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2018-01-25 12:43:02 +0100
committerChristophe Simonis <chs@odoo.com>2018-01-25 12:43:02 +0100
commitc6b2fa47ed399e45c8291426803a48260f67e0fb (patch)
treea3a4504915bc49778b7a8ddc7842c3fd7230bc3d /odoo
parent1d884bec7511e60bee51b68bb67727ad8a26c21e (diff)
parentda9baf2331c3e072c76a56ac3e2681f3ad369527 (diff)
Revert "[FIX] base: bad back-port"
This reverts commit 0ac6043ec746ef4c4d4ddb66edc93c0ae098ca0b.
Diffstat (limited to 'odoo')
-rw-r--r--odoo/addons/base/res/res_country_data.xml4
-rw-r--r--odoo/addons/base/res/res_currency_data.xml11
-rw-r--r--odoo/addons/base/res/res_currency_demo.xml6
-rw-r--r--odoo/addons/base/res/res_users.py8
-rw-r--r--odoo/http.py16
5 files changed, 37 insertions, 8 deletions
diff --git a/odoo/addons/base/res/res_country_data.xml b/odoo/addons/base/res/res_country_data.xml
index 819082fb27d..008f8b7e995 100644
--- a/odoo/addons/base/res/res_country_data.xml
+++ b/odoo/addons/base/res/res_country_data.xml
@@ -254,8 +254,8 @@
<field name="name">Belarus</field>
<field name="code">by</field>
<field file="base/static/img/country_flags/by.png" name="image" type="base64" />
- <field name="currency_id" ref="BYR" />
- <field eval="0" name="phone_code" />
+ <field name="currency_id" ref="BYN" />
+ <field eval="375" name="phone_code" />
</record>
<record id="bz" model="res.country">
<field name="name">Belize</field>
diff --git a/odoo/addons/base/res/res_currency_data.xml b/odoo/addons/base/res/res_currency_data.xml
index f286190872d..2d32fedb9c5 100644
--- a/odoo/addons/base/res/res_currency_data.xml
+++ b/odoo/addons/base/res/res_currency_data.xml
@@ -516,10 +516,19 @@
<field name="symbol">BR</field>
<field name="rounding">0.01</field>
<field name="active" eval="False"/>
- <field name="currency_unit_label">Ruble</field>
+ <field name="currency_unit_label">Ruble BYR</field>
<field name="currency_subunit_label">Kapeyka</field>
</record>
+ <record id="BYN" model="res.currency">
+ <field name="name">BYN</field>
+ <field name="symbol">Br</field>
+ <field name="rounding">0.01</field>
+ <field name="active" eval="False"/>
+ <field name="currency_unit_label">Rubles</field>
+ <field name="currency_subunit_label">Kopeks</field>
+ </record>
+
<record id="BZD" model="res.currency">
<field name="name">BZD</field>
<field name="symbol">BZ$</field>
diff --git a/odoo/addons/base/res/res_currency_demo.xml b/odoo/addons/base/res/res_currency_demo.xml
index 8ca63297a3d..220e7849668 100644
--- a/odoo/addons/base/res/res_currency_demo.xml
+++ b/odoo/addons/base/res/res_currency_demo.xml
@@ -349,6 +349,12 @@
<field name="rate">10228.19</field>
</record>
+ <record forcecreate="0" id="rateBYN" model="res.currency.rate">
+ <field name="currency_id" ref="BYN" />
+ <field name="name">2016-07-01</field>
+ <field name="rate">2.23151</field>
+ </record>
+
<record forcecreate="0" id="rateBZD" model="res.currency.rate">
<field name="currency_id" ref="BZD" />
<field name="name">2010-01-01</field>
diff --git a/odoo/addons/base/res/res_users.py b/odoo/addons/base/res/res_users.py
index 53a3438b21a..2915d9a0086 100644
--- a/odoo/addons/base/res/res_users.py
+++ b/odoo/addons/base/res/res_users.py
@@ -15,6 +15,7 @@ from odoo.exceptions import AccessDenied, AccessError, UserError, ValidationErro
from odoo.osv import expression
from odoo.service.db import check_super
from odoo.tools import partition, pycompat
+from odoo.http import root
_logger = logging.getLogger(__name__)
@@ -372,6 +373,8 @@ class Users(models.Model):
if any(key.startswith('context_') or key in ('lang', 'tz') for key in values):
self.context_get.clear_cache(self)
if any(key in values for key in ['active'] + USER_PRIVATE_FIELDS):
+ # force deletion of all sessions for these users
+ root.session_store.delete_sessions_for_uids(self.ids)
db = self._cr.dbname
for id in self.ids:
self.__uid_cache[db].pop(id, None)
@@ -385,7 +388,10 @@ class Users(models.Model):
db = self._cr.dbname
for id in self.ids:
self.__uid_cache[db].pop(id, None)
- return super(Users, self).unlink()
+ res = super(Users, self).unlink()
+ # force deletion of all sessions for these users
+ root.session_store.delete_sessions_for_uids(self.ids)
+ return res
@api.model
def name_search(self, name='', args=None, operator='ilike', limit=100):
diff --git a/odoo/http.py b/odoo/http.py
index 7524595406a..eae6b69a76a 100644
--- a/odoo/http.py
+++ b/odoo/http.py
@@ -1030,7 +1030,6 @@ class OpenERPSession(werkzeug.contrib.sessions.Session):
self.db = db
self.uid = uid
self.login = login
- self.password = password
request.uid = uid
request.disable_db = False
@@ -1045,7 +1044,6 @@ class OpenERPSession(werkzeug.contrib.sessions.Session):
"""
if not self.db or not self.uid:
raise SessionExpiredException("Session expired")
- security.check(self.db, self.uid, self.password)
def logout(self, keep_db=False):
for k in list(self):
@@ -1058,7 +1056,6 @@ class OpenERPSession(werkzeug.contrib.sessions.Session):
self.setdefault("db", None)
self.setdefault("uid", None)
self.setdefault("login", None)
- self.setdefault("password", None)
self.setdefault("context", {})
def get_context(self):
@@ -1271,6 +1268,17 @@ class DisableCacheMiddleware(object):
start_response(status, new_headers)
return self.app(environ, start_wrapped)
+class OdooSessionStore(werkzeug.contrib.sessions.FilesystemSessionStore):
+ def delete_sessions_for_uids(self, uids):
+ # pretty expensive on large session stores, especially non-local!
+ uids = set(uids)
+ _logger.info('Deleting all HTTP sessions for UIDs %s', uids)
+ for sid in self.list():
+ s = self.get(sid)
+ if s.uid and s.uid in uids:
+ _logger.debug('Deleting session %s', sid)
+ self.delete(s)
+
class Root(object):
"""Root WSGI application for the OpenERP Web Client.
"""
@@ -1282,7 +1290,7 @@ class Root(object):
# Setup http sessions
path = odoo.tools.config.session_dir
_logger.debug('HTTP sessions stored in: %s', path)
- return werkzeug.contrib.sessions.FilesystemSessionStore(path, session_class=OpenERPSession)
+ return OdooSessionStore(path, session_class=OpenERPSession)
@lazy_property
def nodb_routing_map(self):