Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion flask_classy.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down Expand Up @@ -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):
Expand Down
7 changes: 6 additions & 1 deletion test_classy/test_view_wrappers.py
Original file line number Diff line number Diff line change
@@ -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")
Expand All @@ -11,6 +11,7 @@
AfterViewView.register(app)
AfterRequestView.register(app)
DecoratedView.register(app)
MakeResponseView.register(app)

client = app.test_client()

Expand Down Expand Up @@ -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)
9 changes: 9 additions & 0 deletions test_classy/view_classes.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down