diff options
| author | Christophe Simonis <chs@odoo.com> | 2018-01-25 12:43:02 +0100 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2018-01-25 12:43:02 +0100 |
| commit | c6b2fa47ed399e45c8291426803a48260f67e0fb (patch) | |
| tree | a3a4504915bc49778b7a8ddc7842c3fd7230bc3d /odoo | |
| parent | 1d884bec7511e60bee51b68bb67727ad8a26c21e (diff) | |
| parent | da9baf2331c3e072c76a56ac3e2681f3ad369527 (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.xml | 4 | ||||
| -rw-r--r-- | odoo/addons/base/res/res_currency_data.xml | 11 | ||||
| -rw-r--r-- | odoo/addons/base/res/res_currency_demo.xml | 6 | ||||
| -rw-r--r-- | odoo/addons/base/res/res_users.py | 8 | ||||
| -rw-r--r-- | odoo/http.py | 16 |
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): |
