def test_message(self): field = init_field() form = field.form ve = ValidationError(u'Ошибка') ve.fill_errors(field) self.assertEqual(form.errors, {'name': u'Ошибка'})
def test_by_field_fieldset(self): class f(Form): fields = [FieldSet('name', fields=[Field('subfield')])] env = AppEnvironment.create() form = f(env) ve = ValidationError( by_field={ '.subfield': u'Ошибка-1', 'field': u'Ошибка-3', # XXX what does this mean? '': u'Ошибка-4' }) ve.fill_errors(form.get_field('name')) self.assertEqual(form.errors, { 'name.subfield': u'Ошибка-1', 'field': u'Ошибка-3', '': u'Ошибка-4' }) ve = ValidationError(by_field={'.absent': u'1'}) self.assertRaises( AttributeError, # XXX is AttributeError good? lambda: ve.fill_errors(form.get_field('name')))
def test_by_field_field_list(self): class f(Form): fields = [FieldList('name', field=FieldSet(None, fields=[ Field('subfield') ]) )] form = f() ve = ValidationError(by_field={'.2.subfield': u'Ошибка-2', 'field': u'Ошибка-3', # XXX what does this mean? '': u'Ошибка-4'}) ve.fill_errors(form.get_field('name')) self.assertEqual(form.errors, {'name.2.subfield': u'Ошибка-2', 'field': u'Ошибка-3', '': u'Ошибка-4'})
def test_by_field_up(self): class f(Form): fields = [ FieldSet('name', fields=[ Field('subfield'), Field('another') ]), Field('other') ] form = f() ve = ValidationError(by_field={'..another': u'1', '...other': u'2'}) ve.fill_errors(form.get_field('name.subfield')) self.assertEqual(form.errors, {'name.another': u'1', 'other': u'2'}) ve = ValidationError(by_field={'...other': u'1'}) self.assertRaises(AttributeError, lambda: ve.fill_errors(form.get_field('name')))
def test_by_field_fieldset(self): class f(Form): fields = [ FieldSet('name', fields=[ Field('subfield') ]) ] form = f() ve = ValidationError(by_field={'.subfield': u'Ошибка-1', 'field': u'Ошибка-3', # XXX what does this mean? '': u'Ошибка-4'}) ve.fill_errors(form.get_field('name')) self.assertEqual(form.errors, {'name.subfield': u'Ошибка-1', 'field': u'Ошибка-3', '': u'Ошибка-4'}) ve = ValidationError(by_field={'.absent': u'1'}) self.assertRaises(AttributeError, # XXX is AttributeError good? lambda: ve.fill_errors(form.get_field('name')))
def check_circular_dependency(converter, value): """ To avoid circular dependencies, item cannot be chosen as it's parent. Also item should not be presented in the path to the root of it's new parent. """ current_item = converter.field.form.item # Nothing to check here if value is None: return value if current_item.id == value.id: raise ValidationError(u'Раздел не может быть собственным родителем') # Check if current item is not present in value's path to the root parent_candidate = value while parent_candidate.parent_id: if parent_candidate.parent_id == current_item.id: raise ValidationError(u'Обнаружена циклическая зависимость') parent_candidate = parent_candidate.parent return value
def test_by_field_field_list(self): class f(Form): fields = [ FieldList('name', field=FieldSet(None, fields=[Field('subfield')])) ] env = AppEnvironment.create() form = f(env) ve = ValidationError( by_field={ '.2.subfield': u'Ошибка-2', 'field': u'Ошибка-3', # XXX what does this mean? '': u'Ошибка-4' }) ve.fill_errors(form.get_field('name')) self.assertEqual(form.errors, { 'name.2.subfield': u'Ошибка-2', 'field': u'Ошибка-3', '': u'Ошибка-4' })
def global_slug_uniqueness(converter, value): """ Slug should be unique globally. """ current_item = converter.field.form.item env = converter.field.form.env slug_exists = env.db.query(env.models.Section) \ .filter_by(slug=value) \ .filter(env.models.Section.id != current_item.id, env.models.Section.state != env.models.Section.DELETED).count() if slug_exists: raise ValidationError(u'Такой раздел может быть только один.') return value
def slug_uniqueness(converter, value): """ Slug should be unique on current section tree level. """ current_item = converter.field.form.item form_parent_id = converter.field.form.raw_data.get('parent') or None env = converter.field.form.env slug_exists = env.db.query(env.models.Section) \ .filter_by(parent_id=form_parent_id, slug=value) \ .filter(env.models.Section.id != current_item.id, env.models.Section.state != env.models.Section.DELETED).count() if slug_exists: raise ValidationError(u'Раздел с таким слагом уже существует.') return value
def test_by_field_up(self): class f(Form): fields = [ FieldSet('name', fields=[Field('subfield'), Field('another')]), Field('other') ] env = AppEnvironment.create() form = f(env) ve = ValidationError(by_field={'..another': u'1', '...other': u'2'}) ve.fill_errors(form.get_field('name.subfield')) self.assertEqual(form.errors, {'name.another': u'1', 'other': u'2'}) ve = ValidationError(by_field={'...other': u'1'}) self.assertRaises(AttributeError, lambda: ve.fill_errors(form.get_field('name')))
def NoUpperConv(field, value): if value and not (value.upper()!=value or value.lower() == value): raise ValidationError(u'Не нужно писать БОЛЬШИМИ БУКВАМИ') return value
def test_repr(self): r = "%r" % ValidationError(u'Ошибка error', {'.field': u'Ошибка'}) self.assert_('error' in r) self.assert_('.field' in r)