diff options
| author | Christophe Simonis <chs@odoo.com> | 2018-02-01 18:15:21 +0100 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2018-02-01 18:15:21 +0100 |
| commit | 7e469eb77aae1f7e05a3ce0f6575b5149fed3ca1 (patch) | |
| tree | 25023238fd6ccde1f3b8e805b03fcf228798a7b0 /odoo/addons/base | |
| parent | c4895c2f2ba0fcd8fc5aef210003c20ba2154979 (diff) | |
| parent | f5e7b866860436782ade53308da1ff725be1f124 (diff) | |
[MERGE] forward port branch 11.0 up to f5e7b866860
Diffstat (limited to 'odoo/addons/base')
| -rw-r--r-- | odoo/addons/base/models/ir_actions.py | 5 | ||||
| -rw-r--r-- | odoo/addons/base/models/res_users.py | 8 | ||||
| -rw-r--r-- | odoo/addons/base/tests/test_float.py | 18 |
3 files changed, 21 insertions, 10 deletions
diff --git a/odoo/addons/base/models/ir_actions.py b/odoo/addons/base/models/ir_actions.py index d857c14593b..646615cb593 100644 --- a/odoo/addons/base/models/ir_actions.py +++ b/odoo/addons/base/models/ir_actions.py @@ -8,6 +8,7 @@ from odoo.tools.safe_eval import safe_eval, test_python_expr from odoo.tools import pycompat from odoo.http import request +import base64 from collections import defaultdict import datetime import dateutil @@ -76,6 +77,8 @@ class IrActions(models.Model): 'datetime': datetime, 'dateutil': dateutil, 'timezone': timezone, + 'b64encode': base64.b64encode, + 'b64decode': base64.b64decode, } @api.model @@ -253,7 +256,7 @@ class IrActionsActWindowView(models.Model): _name = 'ir.actions.act_window.view' _table = 'ir_act_window_view' _rec_name = 'view_id' - _order = 'sequence' + _order = 'sequence,id' sequence = fields.Integer() view_id = fields.Many2one('ir.ui.view', string='View') diff --git a/odoo/addons/base/models/res_users.py b/odoo/addons/base/models/res_users.py index 2915d9a0086..53a3438b21a 100644 --- a/odoo/addons/base/models/res_users.py +++ b/odoo/addons/base/models/res_users.py @@ -15,7 +15,6 @@ 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__) @@ -373,8 +372,6 @@ 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) @@ -388,10 +385,7 @@ class Users(models.Model): db = self._cr.dbname for id in self.ids: self.__uid_cache[db].pop(id, None) - res = super(Users, self).unlink() - # force deletion of all sessions for these users - root.session_store.delete_sessions_for_uids(self.ids) - return res + return super(Users, self).unlink() @api.model def name_search(self, name='', args=None, operator='ilike', limit=100): diff --git a/odoo/addons/base/tests/test_float.py b/odoo/addons/base/tests/test_float.py index 1c2fcc3e91f..6e42f8adf1d 100644 --- a/odoo/addons/base/tests/test_float.py +++ b/odoo/addons/base/tests/test_float.py @@ -92,6 +92,18 @@ class TestFloatPrecision(TransactionCase): try_round(1.8, '2', 0, method='UP') try_round(-1.8, '-2', 0, method='UP') + # Try some rounding value with rounding method DOWN instead of HALF-UP + # We use 2.425 because when normalizing 2.425 with precision_digits=3 it gives + # us 2424.9999999999995 as value, and if not handle correctly the rounding DOWN + # value will be incorrect (should be 2.425 and not 2.424) + try_round(2.425, '2.425', method='DOWN') + try_round(2.4249, '2.424', method='DOWN') + try_round(-2.425, '-2.425', method='DOWN') + try_round(-2.4249, '-2.424', method='DOWN') + try_round(-2.500, '-2.500', method='DOWN') + try_round(1.8, '1', 0, method='DOWN') + try_round(-1.8, '-1', 0, method='DOWN') + # Extended float range test, inspired by Cloves Almeida's test on bug #882036. fractions = [.0, .015, .01499, .675, .67499, .4555, .4555, .45555] expecteds = ['.00', '.02', '.01', '.68', '.67', '.46', '.456', '.4556'] @@ -135,8 +147,8 @@ class TestFloatPrecision(TransactionCase): try_compare(-657.4444, -657.445, 1) # Rounding to unusual rounding units (e.g. coin values) - def try_round(amount, expected, precision_rounding=None): - value = float_round(amount, precision_rounding=precision_rounding) + def try_round(amount, expected, precision_rounding=None, method='HALF-UP'): + value = float_round(amount, precision_rounding=precision_rounding, rounding_method=method) result = float_repr(value, precision_digits=2) self.assertEqual(result, expected, 'Rounding error: got %s, expected %s' % (result, expected)) @@ -145,6 +157,8 @@ class TestFloatPrecision(TransactionCase): try_round(457.3, '455.00', precision_rounding=5) try_round(457.5, '460.00', precision_rounding=5) try_round(457.1, '456.00', precision_rounding=3) + try_round(2.5, '2.50', precision_rounding=0.05, method='DOWN') + try_round(-2.5, '-2.50', precision_rounding=0.05, method='DOWN') def test_rounding_04(self): """ check that proper rounding is performed for float persistence """ |
