def validate(self,value,key=None): if not isinstance(value, str): raise ValidationException( u'{0}: This value should be a str or unicode value.'.format(key)) if not value.startswith('_design/'): raise ValidationException( u'{0}: The id attribute of a design document should start with _design/'.format(key))
def validate_weight(weight): if type(weight) != float and type(weight) != int: raise ValidationException( "Переданный аргумент имеет неверный тип, ожидается число") if weight < 0.01 or weight > 50: raise ValidationException("Вес не может быть меньше 0.01 и больше 50") else: return float(weight)
def validate_time_list(time_intervals): if type(time_intervals) != list: raise ValidationException( "Переданный аргумент имеет неверный тип, ожидается массив строк") try: h = list(map(lambda x: validate_time(x), time_intervals)) except Exception as e: raise ValidationException('Недопустимый элемент массива: ' + str(e)) return h
def validate_id(element): if type(element) == int: if element > 0: return element else: raise ValidationException( "Переданный аргумент должен быть положительным числом (> 0)") else: raise ValidationException( "Переданный аргумент имеет неверный тип, ожидается целое число")
def validate_regions(regions): if type(regions) != list: raise ValidationException("Переданный аргумент имеет неверный тип, " "ожидается массив целых чисел") try: r = list(map(lambda x: validate_id(x), regions)) except Exception as e: raise ValidationException('Недопустимый элемент массива: ' + str(e)) return r
def validate_long_time(element): if type(element) != str: raise ValidationException( 'Переданный аргумент имеет неверный тип, ожидается строка') t = None try: t = datetime.strptime(element, '%Y-%m-%dT%H:%M:%S.%fZ') except Exception: raise ValidationException( 'Cтрока имеет некорректный формат, пример формата: ' '2021-01-10T09:32:14.42Z') return t
def validate_time(element): if type(element) != str: raise ValidationException( "Переданный аргумент имеет неверный тип, ожидается строка") pattern = r'^([0-1]\d|2[0-3]):[0-5][0-9]-([0-1]\d|2[0-3]):[0-5][0-9]$' if re_match(pattern, element) is None: raise ValidationException("Cтрока должны быть формата HH:MM-HH:MM") start_h = int(element[0:2]) start_m = int(element[3:5]) end_h = int(element[6:8]) end_m = int(element[9:11]) return TimeInterval(start_h, start_m, end_h, end_m)
def validate(self,value,key): if not isinstance(value, int) and value < self.length: raise ValidationException( u'{0}: This value should ' 'have a length greater than ' '{1}. Currently {2}'.format(key,self.length, value) )
def load_config(): with open('env.yml', mode='r') as file: content = yaml.load(file, Loader=yaml.FullLoader) validator = Validator(load_schema()) if not validator.validate(content): raise ValidationException(validator.errors) return content
def validate(self,value,key=None): if not isinstance(value, int) and value > self.compare_value: raise ValidationException( u'{0}: This value should ' 'have a value lesser than ' '{1}. Currently {2}'.format(key,self.compare_value, value) )
def validate(self, instance): """Validates the given document against this schema. Raises a ValidationException if there are any failures.""" errors = {} self._validate_instance(instance, errors) if len(errors) > 0: raise ValidationException(errors)
def validate(self,value,key=None): if value: try: valid_id(value) except TypeError: raise ValidationException( u'{0}: This value should be a valid ID'.format(key) )
def validate_type(element): if element == 'foot': return CourierType.foot elif element == 'bike': return CourierType.bike elif element == 'car': return CourierType.car else: raise ValidationException("Переданный аргумент должен иметь одно из " "значений перечисления CourierType")
def handle_request_parsing_error(err, req, schema, *, error_status_code, error_headers): developer_message = "" for field_name, errors in err.messages["json"].items(): developer_message += f"Error field '{field_name}': " c = 0 for i in errors: c += 1 developer_message += f"{i}" if c != len(errors): developer_message += "," raise ValidationException(exc_data=AppError.VALIDATION_ERROR, developer_message=developer_message)
def validate_courier(courier_dict): try: id = validate_id(courier_dict.get('courier_id')) except Exception as e: raise ValidationException('Поле courier_id - ' + str(e)) try: t = validate_type(courier_dict.get('courier_type')) except Exception as e: raise ValidationException('Поле courier_type - ' + str(e)) try: regions = validate_regions(courier_dict.get('regions')) except Exception as e: raise ValidationException('Поле regions - ' + str(e)) try: hours = validate_time_list(courier_dict.get('working_hours')) except Exception as e: raise ValidationException('Поле working_hours - ' + str(e)) return Courier(id, t, regions, hours)
def validate(self,value,key=None): if not value: raise ValidationException( u'{0}: This value is required'.format(key) )
def validate(self, value,key=None): if value and not isinstance(value, float): raise ValidationException(u'{0}: This value should be a float.'.format(key))
def validate(self, value,key=None): if value and not isinstance(value, datetime.datetime): raise ValidationException( u'{0}: This value should be a valid datetime object.'.format(key))
def validate(self,value,key=None): if value and not isinstance(value, (unicode,str)): raise ValidationException( u'{0}: This value should ' 'be a string'.format(key) )