From ca20fdfd033c7febd6c78954cc9d2cbb0dd62d16 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Mon, 29 Dec 2025 11:17:50 -0600 Subject: [PATCH] fix: fallback to default continuum plugin logic, when no request this solves the issue when running via command line, where it previously would always set user/IP to None since the wuttaweb plugin overrides the default when installed --- src/wuttaweb/db/continuum.py | 12 ++++++++---- tests/db/test_continuum.py | 12 ++++++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/wuttaweb/db/continuum.py b/src/wuttaweb/db/continuum.py index d6f9c40..f7dbc9e 100644 --- a/src/wuttaweb/db/continuum.py +++ b/src/wuttaweb/db/continuum.py @@ -48,11 +48,15 @@ else: request = get_current_request() if request: return request.client_addr - return None + + # nb. no request presumably means running as cli + return super().get_remote_addr(uow, session) def get_user_id(self, uow, session): # pylint: disable=empty-docstring """ """ request = get_current_request() - if request and request.user: - return request.user.uuid - return None + if request: + return request.user.uuid if request.user else None + + # nb. no request presumably means running as cli + return super().get_user_id(uow, session) diff --git a/tests/db/test_continuum.py b/tests/db/test_continuum.py index b564181..3633565 100644 --- a/tests/db/test_continuum.py +++ b/tests/db/test_continuum.py @@ -21,11 +21,15 @@ class TestWuttaWebContinuumPlugin(WebTestCase): def test_get_remote_addr(self): plugin = self.make_plugin() - with patch.object(mod, "get_current_request", return_value=None): - self.assertIsNone(plugin.get_remote_addr(None, self.session)) + # typical request from client IP + self.request.client_addr = "172.237.145.181" + self.assertEqual(plugin.get_remote_addr(None, self.session), "172.237.145.181") - self.request.client_addr = "127.0.0.1" - self.assertEqual(plugin.get_remote_addr(None, self.session), "127.0.0.1") + # pretend we have no request; IP will be random string + # (probably 127.0.0.1 but can't guarentee that..) + with patch.object(mod, "get_current_request", return_value=None): + addr = plugin.get_remote_addr(None, self.session) + self.assertIsInstance(addr, str) def test_get_user_id(self): plugin = self.make_plugin()