Esempio n. 1
0
def validate_object(obj,
                    field_validators=None,
                    non_field_validators=None,
                    schema=None,
                    context=None):
    """
    Takes a mapping and applies a mapping of validator functions to it
    collecting and reraising any validation errors that occur.
    """
    if schema is None:
        schema = {}
    if context is None:
        context = {}
    if field_validators is None:
        field_validators = ValidationDict()
    if non_field_validators is None:
        non_field_validators = ValidationList()

    from flex.validation.schema import (
        construct_schema_validators, )
    schema_validators = construct_schema_validators(schema, context)
    if '$ref' in schema_validators and hasattr(schema_validators['$ref'],
                                               'validators'):
        ref_ = field_validators.pop('$ref')
        for k, v in ref_.validators.items():
            if k not in schema_validators:
                schema_validators.add_validator(k, v)

    if 'discriminator' in schema:
        add_polymorphism_requirements(obj, schema, context, schema_validators)

    schema_validators.update(field_validators)
    schema_validators.validate_object(obj, context=context)
    non_field_validators.validate_object(obj, context=context)
    return obj
Esempio n. 2
0
    functools.partial(apply_validator_to_object, validator=schema_validator),
)

properties_validator = generate_object_validator(
    schema=common_properties_schema,
    non_field_validators=properties_non_field_validators,
)

# Now put the properties validator onto the schema validator.
schema_field_validators.add_property_validator('properties',
                                               properties_validator)

#
# Items
#
items_non_field_validators = ValidationList()
items_non_field_validators.add_validator(
    skip_if_empty(skip_if_not_of_type(OBJECT)(schema_validator)))
items_non_field_validators.add_validator(
    skip_if_empty(
        skip_if_not_of_type(ARRAY)(functools.partial(
            apply_validator_to_array, validator=schema_validator), )), )

items_validator = generate_object_validator(
    schema=common_items_schema,
    non_field_validators=items_non_field_validators,
)

# Now put the items validator onto the schema validator
schema_field_validators.add_property_validator('items', items_validator)
Esempio n. 3
0
import functools
from flex.datastructures import (
    ValidationList, )
from flex.constants import (
    OBJECT, )
from flex.validation.common import (
    generate_object_validator,
    apply_validator_to_object,
)
from .single import (
    single_parameter_validator, )

parameters_schema = {
    'type': OBJECT,
}

parameters_non_field_validators = ValidationList()
parameters_non_field_validators.add_validator(
    functools.partial(apply_validator_to_object,
                      validator=single_parameter_validator), )

parameters_validator = generate_object_validator(
    schema=parameters_schema,
    non_field_validators=parameters_non_field_validators,
)