示例#1
0
 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))
示例#2
0
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)
示例#3
0
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
示例#4
0
def validate_id(element):
    if type(element) == int:
        if element > 0:
            return element
        else:
            raise ValidationException(
                "Переданный аргумент должен быть положительным числом (> 0)")
    else:
        raise ValidationException(
            "Переданный аргумент имеет неверный тип, ожидается целое число")
示例#5
0
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
示例#6
0
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
示例#7
0
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)
示例#8
0
 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
示例#10
0
 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)
             )
示例#11
0
    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)
示例#12
0
 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)
                                       )
示例#13
0
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")
示例#14
0
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)
示例#15
0
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)
示例#16
0
 def validate(self,value,key=None):
     if not value:
         raise ValidationException(
             u'{0}: This value is required'.format(key)
             )
示例#17
0
 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))
示例#18
0
 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))
示例#19
0
 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)
             )