From: Karl O. Pinc Date: Fri, 20 Sep 2024 22:10:04 +0000 (-0500) Subject: Pyramid views returning Pyramid Response objects are not rendered X-Git-Url: https://papio.biology.duke.edu/gitweb/?a=commitdiff_plain;h=ca18eb299d2f32ebe8327142b280082b46db8f4b;p=pgwui_common Pyramid views returning Pyramid Response objects are not rendered --- diff --git a/src/pgwui_common/view.py b/src/pgwui_common/view.py index fda4755..75a729c 100644 --- a/src/pgwui_common/view.py +++ b/src/pgwui_common/view.py @@ -22,6 +22,7 @@ '''View decorators to expose useful response "variables" to templates ''' +import pyramid.response def merge_urls(request, pgwui): @@ -41,6 +42,8 @@ def base_view(wrapped): '''Add variables missing but needed by base.mk to the response. ''' response = wrapped(request) + if isinstance(response, pyramid.response.Response): + return response # Pyramid views returning Response don't render pgwui = response.get('pgwui', {}) merge_urls(request, pgwui) response['pgwui'] = pgwui diff --git a/tests/test_view.py b/tests/test_view.py index 9936785..b931130 100644 --- a/tests/test_view.py +++ b/tests/test_view.py @@ -21,6 +21,7 @@ # Karl O. Pinc import pytest +import pyramid.response from pyramid.threadlocal import get_current_request import pgwui_common.view as view @@ -108,6 +109,16 @@ def test_base_view_default(mock_merge_urls): check_base_view_results(request, pgwui) +def test_base_view_response(mock_merge_urls): + '''Pyramid requests are immediately returned''' + wrapper = view.base_view(lambda request: pyramid.response.Response()) + request = get_current_request() + response = wrapper(request) + + assert isinstance(response, pyramid.response.Response) + assert mock_merge_urls.call_count == 0 + + mock_base_view = testing.make_mock_fixture(view, 'base_view')