def on_valid(valid_content_type, on_invalid=json):
    """Renders as the specified content type only if no errors are found in the provided data object"""
    invalid_kwargs = introspect.generate_accepted_kwargs(on_invalid, 'request', 'response')
    invalid_takes_response = introspect.takes_all_arguments(on_invalid, 'response')

    def wrapper(function):
        valid_kwargs = introspect.generate_accepted_kwargs(function, 'request', 'response')
        valid_takes_response = introspect.takes_all_arguments(function, 'response')

        @content_type(valid_content_type)
        @wraps(function)
        def output_content(content, response, **kwargs):
            if type(content) == dict and 'errors' in content:
                response.content_type = on_invalid.content_type
                if invalid_takes_response:
                    kwargs['response'] = response
                return on_invalid(content, **invalid_kwargs(kwargs))

            if valid_takes_response:
                kwargs['response'] = response
            return function(content, **valid_kwargs(kwargs))
        return output_content
    return wrapper
Renders as the specified content type only if no errors are found in the provided data object