Skip to content

provide a way to configure Validation Exceptions to be contextual #175

Open

Description

@PKgotso

I am looking for a way to add context to RequestValidationError. Instead of it returning the error from being unable to cast to a type, I want to be able to give it the message and append the value.

Eg
Failed to cast hello to type integer

Allowing
The number hello is not a valid number

I think this will make it extremely reusable. If this is available already, I couldn't find it in the docs.

Activity

  1. zupo commented on Oct 6, 2022

    @zupo
    Collaborator

    Have you looked at https://github.com/teamniteo/pyramid-realworld-example-app yet? There is some basic error overriding there, might serve as an inspiration for what you are trying to achieve: https://github.com/teamniteo/pyramid-realworld-example-app/blob/master/src/conduit/openapi.py#L71

  2. PKgotso commented on Oct 6, 2022

    @PKgotso
    Author

    @zupo Thank you for those, however this is not what I mean.

    Lets use this: https://github.com/teamniteo/pyramid-realworld-example-app/blob/master/src/conduit/comment/views.py

    @view_config(route_name="comments", renderer="json", request_method="GET", openapi=True)
    def comments(request: Request) -> MultipleCommentsResponse:
        """Get recent comments on the given article."""
        article = object_or_404(
            Article.by_slug(
                request.openapi_validated.parameters["path"]["slug"], db=request.db
            )
        )
        return {"comments": article.comments}

    On the above, if the slug was a requirement and meant to be an integer and the user supplied a string, the RequestValidationError would be Failed to cast slug to type integer.

    What I want to be able to do is to change this error message to something meaningful e.g `Invalid slug string provided.

    I am aware you can override the the response using this config:
    @exception_view_config(RequestValidationError)
    however, this does not allow individual views to define their own custom error message.

  3. zupo commented on Oct 6, 2022

    @zupo
    Collaborator

    Ah, I see. Hmm ...

    What about custom formatters?

    class CustomFormattersTests(unittest.TestCase):

  4. PKgotso commented on Oct 6, 2022

    @PKgotso
    Author

    These are actually cool, I can try that, but I still think the feature might be a neat feature especially on large projects.

  5. zupo commented on Oct 6, 2022

    @zupo
    Collaborator

    Yep, I agree!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions