Пример #1
0
 def message(self):
     custom_error = self.schema.get('error_%s' % self.validator, self.schema.get('error'))
     if custom_error:
         return template.render(custom_error, self.__dict__)
     elif hasattr(self, 'message_%s' % self.validator):
         return getattr(self, 'message_%s' % self.validator)()
     return self._message
Пример #2
0
def set_error_message(error):
    """
    Create user facing error message from a :class:`jsonschema.ValidationError` `error`

    """
    # First, replace default error messages with our custom ones
    if error.validator == 'type':
        if isinstance(error.validator_value, basestring):
            valid_types = [error.validator_value]
        else:
            valid_types = list(error.validator_value)
        # Replace some types with more pythony ones
        replace = {'object': 'dict', 'array': 'list'}
        valid_types = [replace.get(t, t) for t in valid_types]
        # Make valid_types into an english list, with commas and 'or'
        valid_types = ', '.join(valid_types[:-2] + ['']) + ' or '.join(
            valid_types[-2:])
        if isinstance(error.instance, dict):
            error.message = 'Got a dict, expected: %s' % valid_types
        if isinstance(error.instance, list):
            error.message = 'Got a list, expected: %s' % valid_types
        error.message = 'Got `%s`, expected: %s' % (error.instance,
                                                    valid_types)
    elif error.validator == 'format':
        if error.cause:
            error.message = unicode(error.cause)
    elif error.validator == 'enum':
        error.message = 'Must be one of the following: %s' % ', '.join(
            map(unicode, error.validator_value))
    elif error.validator == 'additionalProperties':
        if error.validator_value is False:
            extras = set(
                jsonschema._utils.find_additional_properties(
                    error.instance, error.schema))
            if len(extras) == 1:
                error.message = 'The key `%s` is not valid here.' % extras.pop(
                )
            else:
                error.message = 'The keys %s are not valid here.' % ', '.join(
                    '`%s`' % e for e in extras)
    else:
        # Remove u'' string representation from jsonschema error messages
        error.message = re.sub('u\'(.*?)\'', '`\\1`', error.message)

    # Then update with any custom error message supplied from the schema
    custom_error = error.schema.get('error_%s' % error.validator,
                                    error.schema.get('error'))
    if custom_error:
        error.message = template.render(custom_error, error.__dict__)
Пример #3
0
def get_error_message(error):
    """
     Create user facing error message from a :class:`jsonschema.ValidationError` `error`

    """

    custom_error = error.schema.get('error_%s' % error.validator,
                                    error.schema.get('error'))
    if custom_error:
        return template.render(custom_error, error.__dict__)

    if error.validator == 'type':
        if isinstance(error.validator_value, basestring):
            valid_types = [error.validator_value]
        else:
            valid_types = list(error.validator_value)
        # Replace some types with more pythony ones
        replace = {'object': 'dict', 'array': 'list'}
        valid_types = [replace.get(t, t) for t in valid_types]
        # Make valid_types into an english list, with commas and 'or'
        valid_types = ', '.join(valid_types[:-2] + ['']) + ' or '.join(
            valid_types[-2:])
        if isinstance(error.instance, dict):
            return 'Got a dict, expected: %s' % valid_types
        if isinstance(error.instance, list):
            return 'Got a list, expected: %s' % valid_types
        return 'Got `%s`, expected: %s' % (error.instance, valid_types)

    if error.validator == 'format':
        if error.cause:
            return unicode(error.cause)
        return error._message

    if error.validator == 'enum':
        return 'Must be one of the following: %s' % ', '.join(
            map(unicode, error.validator_value))

    if error.validator == 'additionalProperties':
        if error.validator_value is False:
            extras = set(
                jsonschema._utils.find_additional_properties(
                    error.instance, error.schema))
            if len(extras) == 1:
                return 'The key `%s` is not valid here.' % extras.pop()
            else:
                return 'The keys %s are not valid here.' % ', '.join(
                    '`%s`' % e for e in extras)
        return error._message
Пример #4
0
def get_error_message(error):
    """
     Create user facing error message from a :class:`jsonschema.ValidationError` `error`

    """

    custom_error = error.schema.get('error_%s' % error.validator, error.schema.get('error'))
    if custom_error:
        return template.render(custom_error, error.__dict__)

    if error.validator == 'type':
        if isinstance(error.validator_value, basestring):
            valid_types = [error.validator_value]
        else:
            valid_types = list(error.validator_value)
        # Replace some types with more pythony ones
        replace = {'object': 'dict', 'array': 'list'}
        valid_types = [replace.get(t, t) for t in valid_types]
        # Make valid_types into an english list, with commas and 'or'
        valid_types = ', '.join(valid_types[:-2] + ['']) + ' or '.join(valid_types[-2:])
        if isinstance(error.instance, dict):
            return 'Got a dict, expected: %s' % valid_types
        if isinstance(error.instance, list):
            return 'Got a list, expected: %s' % valid_types
        return 'Got `%s`, expected: %s' % (error.instance, valid_types)

    if error.validator == 'format':
        if error.cause:
            return unicode(error.cause)

    if error.validator == 'enum':
        return 'Must be one of the following: %s' % ', '.join(map(unicode, error.validator_value))

    if error.validator == 'additionalProperties':
        if error.validator_value is False:
            extras = set(jsonschema._utils.find_additional_properties(error.instance, error.schema))
            if len(extras) == 1:
                return 'The key `%s` is not valid here.' % extras.pop()
            else:
                return 'The keys %s are not valid here.' % ', '.join('`%s`' % e for e in extras)

    # Remove u'' string representation from jsonschema error messages
    message = re.sub('u\'(.*?)\'', '`\\1`', error.message)
    return message
Пример #5
0
def set_error_message(error):
    """
    Create user facing error message from a :class:`jsonschema.ValidationError` `error`

    """
    # First, replace default error messages with our custom ones
    if error.validator == "type":
        if isinstance(error.validator_value, basestring):
            valid_types = [error.validator_value]
        else:
            valid_types = list(error.validator_value)
        # Replace some types with more pythony ones
        replace = {"object": "dict", "array": "list"}
        valid_types = [replace.get(t, t) for t in valid_types]
        # Make valid_types into an english list, with commas and 'or'
        valid_types = ", ".join(valid_types[:-2] + [""]) + " or ".join(valid_types[-2:])
        if isinstance(error.instance, dict):
            error.message = "Got a dict, expected: %s" % valid_types
        if isinstance(error.instance, list):
            error.message = "Got a list, expected: %s" % valid_types
        error.message = "Got `%s`, expected: %s" % (error.instance, valid_types)
    elif error.validator == "format":
        if error.cause:
            error.message = unicode(error.cause)
    elif error.validator == "enum":
        error.message = "Must be one of the following: %s" % ", ".join(map(unicode, error.validator_value))
    elif error.validator == "additionalProperties":
        if error.validator_value is False:
            extras = set(jsonschema._utils.find_additional_properties(error.instance, error.schema))
            if len(extras) == 1:
                error.message = "The key `%s` is not valid here." % extras.pop()
            else:
                error.message = "The keys %s are not valid here." % ", ".join("`%s`" % e for e in extras)
    else:
        # Remove u'' string representation from jsonschema error messages
        error.message = re.sub("u'(.*?)'", "`\\1`", error.message)

    # Then update with any custom error message supplied from the schema
    custom_error = error.schema.get("error_%s" % error.validator, error.schema.get("error"))
    if custom_error:
        error.message = template.render(custom_error, error.__dict__)