Exemplo n.º 1
0
    def validate(self, value, required=True):
        """ validate value """
        if required and self.empty(value):
            if self.required:
                raise BadValueError("Property %s is required." % self.name)
        else:
            if self.choices and value is not None:
                if isinstance(self.choices, list): choice_list = self.choices
                if isinstance(self.choices, dict):
                    choice_list = self.choices.keys()
                if isinstance(self.choices, tuple):
                    choice_list = [key for (key, name) in self.choices]

                if value not in choice_list:
                    raise BadValueError(
                        'Property %s is %r; must be one of %r' %
                        (self.name, value, choice_list))
        if self.validators:
            if isinstance(self.validators, (
                    list,
                    tuple,
            )):
                for validator in self.validators:
                    if callable(validator):
                        validator(value)
            elif callable(self.validators):
                self.validators(value)
        return value
Exemplo n.º 2
0
def validate_content(value, item_type=None):
    """ validate a value. test if value is in supported types """
    if isinstance(value, list):
        value = validate_list_content(value, item_type=item_type)
    elif isinstance(value, dict):
        value = validate_dict_content(value, item_type=item_type)
    elif item_type is not None and not isinstance(value, item_type):
        raise BadValueError('Items  must all be in %s' % item_type)
    elif type(value) not in ALLOWED_PROPERTY_TYPES:
        raise BadValueError('Items  must all be in %s' %
                            (ALLOWED_PROPERTY_TYPES))
    return value
Exemplo n.º 3
0
 def validate_set_contents(self, value):
     try:
         value = validate_set_content(value, item_type=self.item_type)
     except BadValueError:
         raise BadValueError('Items of %s set must all be in %s' %
                             (self.name, ALLOWED_PROPERTY_TYPES))
     return value
Exemplo n.º 4
0
 def validate(self, value, required=True):
     value = super(ListProperty, self).validate(value, required=required)
     if value and value is not None:
         if not isinstance(value, list):
             raise BadValueError('Property %s must be a list' % self.name)
         value = self.validate_list_contents(value)
     return value
Exemplo n.º 5
0
 def validate_dict_contents(self, value):
     try:
         value = validate_dict_content(value, str)
     except BadValueError:
         raise BadValueError('Items of %s dict must all be in %s' %
                             (self.name, str))
     return value
Exemplo n.º 6
0
 def validate(self, value, required=True):
     super(SemanticVersionProperty, self).validate(value, required)
     try:
         major, minor, _ = value.split('.')
         int(major)
         int(minor)
     except Exception:
         raise BadValueError("Build version %r does not comply with the x.y.z schema" % value)
     return value
Exemplo n.º 7
0
    def validate(self, value, required=True):
        value = super(DateTimeProperty, self).validate(value, required=required)

        if value is None:
            return value

        if value and not isinstance(value, self.data_type):
            raise BadValueError('Property %s must be a %s, current is %s' %
                          (self.name, self.data_type.__name__, type(value).__name__))
        return value
Exemplo n.º 8
0
    def validate(self, value, required=True):
        value = super(BooleanProperty, self).validate(value, required=required)

        if value is None:
            return value

        if value is not None and not isinstance(value, bool):
            raise BadValueError('Property %s must be bool instance, not a %s' %
                                (self.name, type(value).__name__))

        return value
Exemplo n.º 9
0
    def validate(self, value, required=True):
        value = super(StringProperty, self).validate(value, required=required)

        if value is None:
            return value

        if not isinstance(value, basestring):
            raise BadValueError(
                'Property %s must be unicode or str instance, not a %s' %
                (self.name, type(value).__name__))
        return value
Exemplo n.º 10
0
    def validate(self, value, required=True):
        value = super(FloatProperty, self).validate(value, required=required)

        if value is None:
            return value

        if not isinstance(value, float):
            raise BadValueError(
                'Property %s must be float instance, not a %s' %
                (self.name, type(value).__name__))

        return value
Exemplo n.º 11
0
    def validate(self, value, required=True):
        value = super(IntegerProperty, self).validate(value, required=required)

        if value is None:
            return value

        if value is not None and not isinstance(value, int):
            raise BadValueError(
                'Property %s must be %s or long instance, not a %s' %
                (self.name, type(
                    self.data_type).__name__, type(value).__name__))

        return value
Exemplo n.º 12
0
def _check_ids(value):
    if not ID_REGEX_CHECK.match(value):
        raise BadValueError("Invalid ID: '{}'".format(value))