From ca18eb299d2f32ebe8327142b280082b46db8f4b Mon Sep 17 00:00:00 2001 From: "Karl O. Pinc" Date: Fri, 20 Sep 2024 17:10:04 -0500 Subject: [PATCH] Pyramid views returning Pyramid Response objects are not rendered --- src/pgwui_common/view.py | 3 +++ tests/test_view.py | 11 +++++++++++ 2 files changed, 14 insertions(+) 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') -- 2.34.1