Reviewers: ,


Please review this at http://codereview.tryton.org/908002/

Affected files:
  M trytond/model/modelstorage.py


Index: trytond/model/modelstorage.py
===================================================================

--- a/trytond/model/modelstorage.py
+++ b/trytond/model/modelstorage.py
@@ -933,64 +933,65 @@
                         not field.setter:
                     continue
                 # validate domain
-                if (field._type in
-                        ('many2one', 'many2many', 'one2many', 'one2one')
-                        and field.domain):
-                    if field._type in ('many2one', 'one2many'):
-                        Relation = pool.get(field.model_name)
-                    else:
-                        Relation = field.get_target()
-                    if is_pyson(field.domain):
-                        pyson_domain = PYSONEncoder().encode(field.domain)
-                        for record in records:
-                            env = EvalEnvironment(record, cls)
-                            env.update(Transaction().context)
-                            env['current_date'] = datetime.datetime.today()
-                            env['time'] = time
-                            env['context'] = Transaction().context
-                            env['active_id'] = record.id
-                            domain = PYSONDecoder(env).decode(pyson_domain)
+                with Transaction().set_context(active_test=False):
+                    if (field._type in
+                            ('many2one', 'many2many', 'one2many', 'one2one')
+                            and field.domain):
+                        if field._type in ('many2one', 'one2many'):
+                            Relation = pool.get(field.model_name)
+                        else:
+                            Relation = field.get_target()
+                        if is_pyson(field.domain):
+                            pyson_domain = PYSONEncoder().encode(field.domain)
+                            for record in records:
+                                env = EvalEnvironment(record, cls)
+                                env.update(Transaction().context)
+                                env['current_date'] = datetime.datetime.today()
+                                env['time'] = time
+                                env['context'] = Transaction().context
+                                env['active_id'] = record.id
+                                domain = PYSONDecoder(env).decode(pyson_domain)
+                                relation_ids = []
+                                if getattr(record, field_name):
+                                    if field._type in ('many2one', 'one2one'):
+                                        relation_ids.append(
+                                            getattr(record, field_name).id)
+                                    else:
+                                        relation_ids.extend(
+                                            [x.id for x in getattr(record,
+                                                    field_name)])
+                                    if relation_ids and not Relation.search([
+                                                'AND',
+                                                [('id', 'in', relation_ids)],
+                                                domain,
+                                                ]):
+                                        cls.raise_user_error(
+                                            'domain_validation_record',
+                                            error_args=cls._get_error_args(
+                                                field_name))
+                        else:
                             relation_ids = []
-                            if getattr(record, field_name):
-                                if field._type in ('many2one', 'one2one'):
-                                    relation_ids.append(
-                                        getattr(record, field_name).id)
-                                else:
-                                    relation_ids.extend(
-                                        [x.id for x in getattr(record,
-                                                field_name)])
-                            if relation_ids and not Relation.search([
-                                        'AND',
-                                        [('id', 'in', relation_ids)],
-                                        domain,
-                                        ]):
-                                cls.raise_user_error(
-                                        'domain_validation_record',
-                                        error_args=cls._get_error_args(
-                                            field_name))
-                    else:
-                        relation_ids = []
-                        for record in records:
-                            if getattr(record, field_name):
-                                if field._type in ('many2one', 'one2one'):
-                                    relation_ids.append(
-                                        getattr(record, field_name).id)
-                                else:
-                                    relation_ids.extend(
-                                        [x.id for x in getattr(record,
-                                                field_name)])
-                        if relation_ids:
-                            finds = Relation.search([
-                                'AND',
-                                [('id', 'in', relation_ids)],
-                                field.domain,
-                                ])
-                            find_ids = map(int, finds)
-                            if not set(relation_ids) == set(find_ids):
-                                cls.raise_user_error(
-                                        'domain_validation_record',
-                                        error_args=cls._get_error_args(
-                                            field_name))
+                            for record in records:
+                                if getattr(record, field_name):
+                                    if field._type in ('many2one', 'one2one'):
+                                        relation_ids.append(
+                                            getattr(record, field_name).id)
+                                    else:
+                                        relation_ids.extend(
+                                            [x.id for x in getattr(record,
+                                                    field_name)])
+                            if relation_ids:
+                                finds = Relation.search([
+                                    'AND',
+                                    [('id', 'in', relation_ids)],
+                                    field.domain,
+                                    ])
+                                find_ids = map(int, finds)
+                                if not set(relation_ids) == set(find_ids):
+                                    cls.raise_user_error(
+                                            'domain_validation_record',
+                                            error_args=cls._get_error_args(
+                                                field_name))
 
                 def required_test(value, field_name):
                     if (isinstance(value, (type(None), type(False), list,

Reply via email to