From 586fad76460ebbce20320dbb1a0d7ae0259bc826 Mon Sep 17 00:00:00 2001 From: taoufik07 Date: Tue, 23 Oct 2018 21:19:57 +0100 Subject: [PATCH 1/2] Fix CBV --- responder/api.py | 4 ++-- responder/routes.py | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/responder/api.py b/responder/api.py index 1b04783..a50bb73 100644 --- a/responder/api.py +++ b/responder/api.py @@ -255,11 +255,11 @@ class API: except Exception: self.default_response(req, resp, error=True) - if route.is_class_based or cont: + elif route.is_class_based or cont: try: view = route.endpoint(**params) except TypeError: - view = route.endpoint + view = route.endpoint() # Run on_request first. try: diff --git a/responder/routes.py b/responder/routes.py index a4c99cc..7e3eb81 100644 --- a/responder/routes.py +++ b/responder/routes.py @@ -73,8 +73,9 @@ class Route: def is_class_based(self): return hasattr(self.endpoint, "__class__") + @property def is_function(self): routed = hasattr(self.endpoint, "is_routed") code = hasattr(self.endpoint, "__code__") kwdefaults = hasattr(self.endpoint, "__kwdefaults__") - return all((routed, code, kwdefaults)) + return all((callable(self.endpoint), code, kwdefaults)) From 77b2e9ba7ace1a2a7b561afe4b375daf02400a85 Mon Sep 17 00:00:00 2001 From: taoufik07 Date: Tue, 23 Oct 2018 21:20:09 +0100 Subject: [PATCH 2/2] tests --- tests/test_responder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_responder.py b/tests/test_responder.py index 92de409..88a9b47 100644 --- a/tests/test_responder.py +++ b/tests/test_responder.py @@ -65,7 +65,7 @@ def test_class_based_view_registration(api): def test_class_based_view_parameters(api): @api.route("/{greeting}") class Greeting: - def on_request(req, resp, *, greeting): + def on_request(self, req, resp, *, greeting): resp.text = f"{greeting}, world!" assert api.session().get("http://;/Hello").ok