You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
provide a way to configure Validation Exceptions to be contextual #175
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.
@view_config(route_name="comments", renderer="json", request_method="GET", openapi=True)defcomments(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.
Activity
zupo commentedon Oct 6, 2022
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
PKgotso commentedon Oct 6, 2022
@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
On the above, if the slug was a requirement and meant to be an integer and the user supplied a string, the
RequestValidationErrorwould beFailed 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.
zupo commentedon Oct 6, 2022
Ah, I see. Hmm ...
What about custom formatters?
pyramid_openapi3/pyramid_openapi3/tests/test_extract_errors.py
Line 567 in 29f0180
PKgotso commentedon Oct 6, 2022
These are actually cool, I can try that, but I still think the feature might be a neat feature especially on large projects.
zupo commentedon Oct 6, 2022
Yep, I agree!