From 9ce38cfff70e24ad58e5975a05b2bbbe48a09032 Mon Sep 17 00:00:00 2001 From: Ryan Olson Date: Tue, 22 Jul 2014 13:37:48 -0600 Subject: [PATCH] added make_response to FlaskView as a class method --- flask_classy.py | 7 ++++++- test_classy/test_view_wrappers.py | 7 ++++++- test_classy/view_classes.py | 9 +++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/flask_classy.py b/flask_classy.py index e0c5ccd..b04b981 100644 --- a/flask_classy.py +++ b/flask_classy.py @@ -161,6 +161,11 @@ def parse_options(cls, options): endpoint = options.pop('endpoint', None) return subdomain, endpoint, options, + @classmethod + def make_response(cls, response): + """Allows one to override Flask's make_response function. This provides + an inheritable final decorator on the view being returned.""" + return make_response(response) @classmethod def make_proxy_method(cls, name): @@ -199,7 +204,7 @@ def proxy(**forgettable_view_args): response = view(**request.view_args) if not isinstance(response, Response): - response = make_response(response) + response = cls.make_response(response) after_view_name = "after_" + name if hasattr(i, after_view_name): diff --git a/test_classy/test_view_wrappers.py b/test_classy/test_view_wrappers.py index b05675c..ac242a8 100644 --- a/test_classy/test_view_wrappers.py +++ b/test_classy/test_view_wrappers.py @@ -1,6 +1,6 @@ from flask import Flask from .view_classes import (BeforeRequestView, BeforeViewView, AfterRequestView, AfterViewView, DecoratedView, - BeforeRequestReturnsView, BeforeViewReturnsView) + BeforeRequestReturnsView, BeforeViewReturnsView, MakeResponseView) from nose.tools import * app = Flask("wrappers") @@ -11,6 +11,7 @@ AfterViewView.register(app) AfterRequestView.register(app) DecoratedView.register(app) +MakeResponseView.register(app) client = app.test_client() @@ -45,3 +46,7 @@ def test_before_request_returns(): def test_before_view_returns(): resp = client.get("/beforeviewreturns/") eq_(b"BEFORE", resp.data) + +def test_make_response_view(): + resp = client.get("/makeresponse/") + eq_(b"Make Response", resp.data) diff --git a/test_classy/view_classes.py b/test_classy/view_classes.py index 5ad1e3a..d8245d6 100644 --- a/test_classy/view_classes.py +++ b/test_classy/view_classes.py @@ -149,6 +149,15 @@ def after_request(self, name, response): def index(self): return "Index" +class MakeResponseView(FlaskView): + + @classmethod + def make_response(cls, response): + return "Make Response" + + def index(self): + return "Index" + class VariedMethodsView(FlaskView): def index(self):