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
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
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
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
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
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
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
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
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
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
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
def _check_ids(value): if not ID_REGEX_CHECK.match(value): raise BadValueError("Invalid ID: '{}'".format(value))