From 863f46ec71a61f26a03959443db2c42bbc17c01e Mon Sep 17 00:00:00 2001 From: Olivier Colson Date: Tue, 25 Apr 2017 11:01:33 +0200 Subject: [PATCH 1/2] [FIX] resource: conditions on id Don't check ids with "id is None" statements, as it won't match if id is False. This caused some bugs with MRP when confirming a MO with no calendar defined, if mrp_operations was installed. --- addons/resource/resource.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/resource/resource.py b/addons/resource/resource.py index 09a5c2f3add..5a2b3559497 100644 --- a/addons/resource/resource.py +++ b/addons/resource/resource.py @@ -179,7 +179,7 @@ class resource_calendar(osv.osv): def get_weekdays(self, cr, uid, id, default_weekdays=None, context=None): """ Return the list of weekdays that contain at least one working interval. If no id is given (no calendar), return default weekdays. """ - if id is None: + if not id: return default_weekdays if default_weekdays is not None else [0, 1, 2, 3, 4] calendar = self.browse(cr, uid, id, context=None) weekdays = set() @@ -329,7 +329,7 @@ class resource_calendar(osv.osv): work_dt = start_dt.replace(hour=0, minute=0, second=0) # no calendar: try to use the default_interval, then return directly - if id is None: + if not id: working_interval = [] if default_interval: working_interval = (start_dt.replace(hour=default_interval[0], minute=0, second=0), start_dt.replace(hour=default_interval[1], minute=0, second=0)) @@ -448,7 +448,7 @@ class resource_calendar(osv.osv): working_intervals = self.get_working_intervals_of_day(cr, uid, id, **call_args) - if id is None and not working_intervals: # no calendar -> consider working 8 hours + if not id and not working_intervals: # no calendar -> consider working 8 hours remaining_hours -= 8.0 elif working_intervals: if backwards: @@ -541,7 +541,7 @@ class resource_calendar(osv.osv): compute_leaves=compute_leaves, resource_id=resource_id, default_interval=default_interval, context=context) - if id is None or working_intervals: # no calendar -> no working hours, but day is considered as worked + if not id or working_intervals: # no calendar -> no working hours, but day is considered as worked planned_days += 1 intervals += working_intervals # get next day From 2a65b8156d79902ae95013622f55780fbfff3ad4 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Wed, 26 Apr 2017 19:36:10 +0200 Subject: [PATCH 2/2] [FIX] base: run defined modifiers tests --- openerp/addons/base/tests/test_views.py | 5 +++++ openerp/osv/orm.py | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/openerp/addons/base/tests/test_views.py b/openerp/addons/base/tests/test_views.py index bd297d2789c..027a2d9262c 100644 --- a/openerp/addons/base/tests/test_views.py +++ b/openerp/addons/base/tests/test_views.py @@ -9,6 +9,7 @@ from lxml.builder import E from psycopg2 import IntegrityError +from openerp.osv.orm import modifiers_tests from openerp.exceptions import ValidationError from openerp.tests import common import openerp.tools @@ -854,6 +855,10 @@ class test_views(ViewCase): string="Replacement title", version="7.0" )) + def test_modifiers(self): + # implemeted elsewhere... + modifiers_tests() + class ViewModeField(ViewCase): """ This should probably, eventually, be folded back into other test case diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 835e29da7f9..be5c69d9a01 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -118,13 +118,13 @@ def test_modifiers(what, expected): node = etree.fromstring(what) transfer_node_to_modifiers(node, modifiers) simplify_modifiers(modifiers) - json = simplejson.dumps(modifiers) - assert json == expected, "%s != %s" % (json, expected) + dumped = simplejson.dumps(modifiers) + assert dumped == expected, "%s != %s" % (dumped, expected) elif isinstance(what, dict): transfer_field_to_modifiers(what, modifiers) simplify_modifiers(modifiers) - json = simplejson.dumps(modifiers) - assert json == expected, "%s != %s" % (json, expected) + dumped = simplejson.dumps(modifiers) + assert dumped == expected, "%s != %s" % (dumped, expected) # To use this test: