Example #1
0
    def test_message(self):
        field = init_field()
        form = field.form

        ve = ValidationError(u'Ошибка')

        ve.fill_errors(field)
        self.assertEqual(form.errors, {'name': u'Ошибка'})
Example #2
0
    def test_message(self):
        field = init_field()
        form = field.form

        ve = ValidationError(u'Ошибка')

        ve.fill_errors(field)
        self.assertEqual(form.errors, {'name': u'Ошибка'})
Example #3
0
    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')))
Example #4
0
    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'})
Example #5
0
    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')))
Example #6
0
    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')))
Example #7
0
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
Example #8
0
    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'
        })
Example #9
0
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
Example #10
0
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
Example #11
0
    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')))
Example #12
0
def NoUpperConv(field, value):
    if value and not (value.upper()!=value or value.lower() == value):
        raise ValidationError(u'Не нужно писать БОЛЬШИМИ БУКВАМИ')
    return value
Example #13
0
 def test_repr(self):
     r = "%r" % ValidationError(u'Ошибка error', {'.field': u'Ошибка'})
     self.assert_('error' in r)
     self.assert_('.field' in r)