Ejemplo n.º 1
0
def dict_field(data, field=None, required=True):
    """ dict validator.

    Args:
        data: If `field` is None, `data` is `field`, otherwise get `field` from `data`.
        field: If `field` is None, `data` is `field`, otherwise get `field` from `data`.
        required: if `field` must in `data`, True or False, default is True.

    Returns:
        1. Dict field.
        2. If `field` is not exits and required is False, return None.

    Raise:
        ValidationError: The type of `field` is not dict.
    """
    field_data = _field(data, field, required)
    if not field_data and not required:
        return None
    if isinstance(field_data, str):
        try:
            field_data = json.loads(field_data)
        except:
            raise exceptions.ValidationError(
                "The type of `{field}` is not dict".format(
                    field=field or data))
    if not isinstance(field_data, dict):
        raise exceptions.ValidationError(
            "The type of `{field}` is not dict".format(field=field or data))
    return field_data
Ejemplo n.º 2
0
def _field(data, field, required):
    if field:
        data = data or {}
        if not isinstance(data, dict):
            raise exceptions.ValidationError("field `{field}` lost".format(field=field))
        if required and field not in data:
            raise exceptions.ValidationError("field `{field}` lost".format(field=field))
        return data.get(field)
    else:
        return data
Ejemplo n.º 3
0
def bool_field(data, field=None, required=True):
    """ bool validator.

    Args:
        data: If `field` is None, `data` is `field`, otherwise get `field` from `data`.
        field: If `field` is None, `data` is `field`, otherwise get `field` from `data`.
        required: if `field` must in `data`, True or False, default is True.

    Returns:
        1. If `field` value is "True" or "true", return True;
        2. If `field` value is "False" or "false", return False;
        3. If `field` is not exits and required is False, return None.

    Raise:
        ValidationError: The type of `field` is not bool.
    """
    field_data = _field(data, field, required)
    if str(field_data).lower() == "true":
        return True
    if str(field_data).lower() == "false":
        return False
    if not required:
        return None
    raise exceptions.ValidationError(
        "The type of `{field}` is not bool".format(field=field or data))
Ejemplo n.º 4
0
def float_field(data, field=None, required=True):
    """ float validator.

    Args:
        data: If `field` is None, `data` is `field`, otherwise get `field` from `data`.
        field: If `field` is None, `data` is `field`, otherwise get `field` from `data`.
        required: if `field` must in `data`, True or False, default is True.

    Returns:
        1. Float field.
        2. If `field` is not exits and required is False, return None.

    Raise:
        ValidationError: The type of `field` is not float.
    """
    field_data = _field(data, field, required)
    if not field_data and not required:
        return None
    try:
        return float(field_data)
    except:
        raise exceptions.ValidationError("The type of `{field}` is not float".format(field=field or data))