def invalid_message(self, record=None): if record is None: record = self.current_record domain_string = _('"%s" is not valid according to its domain') domain_parser = DomainParser( {n: f.attrs for n, f in record.group.fields.iteritems()}) fields = [] for field, invalid in sorted(record.invalid_fields.items()): string = record.group.fields[field].attrs['string'] if invalid == 'required' or invalid == [[field, '!=', None]]: fields.append(_('"%s" is required') % string) elif invalid == 'domain': fields.append(domain_string % string) elif invalid == 'children': fields.append(_('The values of "%s" are not valid') % string) else: if domain_parser.stringable(invalid): fields.append(domain_parser.string(invalid)) else: fields.append(domain_string % string) if len(fields) > 5: fields = fields[:5] + ['...'] return '\n'.join(fields)
def invalid_message(self, record=None): if record is None: record = self.current_record domain_string = _('"%s" is not valid according to its domain') domain_parser = DomainParser( {n: f.attrs for n, f in record.group.fields.iteritems()}) fields = [] for field, invalid in sorted(record.invalid_fields.items()): string = record.group.fields[field].attrs['string'] if invalid == 'required' or invalid == [[field, '!=', None]]: fields.append(_('"%s" is required') % string) elif invalid == 'domain': fields.append(domain_string % string) elif invalid == 'children': fields.append(_('The values of "%s" are not valid') % string) else: if domain_parser.stringable(invalid): fields.append(domain_parser.string(invalid)) else: fields.append(domain_string % string) if len(fields) > 5: fields = fields[:5] + ['...'] return '\n'.join(fields)
def test_stringable(self): "Test stringable" dom = DomainParser({ 'name': { 'string': 'Name', 'type': 'char', }, 'multiselection': { 'string': "MultiSelection", 'type': 'multiselection', 'selection': [ ('foo', "Foo"), ('bar', "Bar"), ('baz', "Baz"), ], }, 'relation': { 'string': 'Relation', 'type': 'many2one', 'relation_fields': { 'name': { 'string': "Name", 'type': 'char', }, }, }, 'relations': { 'string': 'Relations', 'type': 'many2many', }, }) valid = ('name', '=', 'Doe') invalid = ('surname', '=', 'John') self.assertTrue(dom.stringable([valid])) self.assertFalse(dom.stringable([invalid])) self.assertTrue(dom.stringable(['AND', valid])) self.assertFalse(dom.stringable(['AND', valid, invalid])) self.assertTrue(dom.stringable([[valid]])) self.assertFalse(dom.stringable([[valid], [invalid]])) self.assertTrue(dom.stringable([('multiselection', '=', None)])) self.assertTrue(dom.stringable([('multiselection', '=', '')])) self.assertFalse(dom.stringable([('multiselection', '=', 'foo')])) self.assertTrue(dom.stringable([('multiselection', '=', ['foo'])])) self.assertTrue(dom.stringable([('relation', '=', None)])) self.assertTrue(dom.stringable([('relation', '=', "Foo")])) self.assertTrue(dom.stringable([('relation.rec_name', '=', "Foo")])) self.assertFalse(dom.stringable([('relation', '=', 1)])) self.assertTrue(dom.stringable([('relations', '=', "Foo")])) self.assertTrue(dom.stringable([('relations', 'in', ["Foo"])])) self.assertFalse(dom.stringable([('relations', 'in', [42])])) self.assertTrue(dom.stringable([('relation.name', '=', "Foo")]))