Skip to content

Commit bdedc19

Browse files
committed
Fixed django#204 -- Fixed broken RSS links in timeline and query pages
1 parent 75fe130 commit bdedc19

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

DjangoPlugin/tracdjangoplugin/plugins.py

+5
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,11 @@ def process_request(self, req):
121121
raise RequestDone
122122

123123
def do_get(self, req):
124+
# Not 100% sure why, but for some links (RSS especially) Trac likes
125+
# to generate URLs pointing to `/login?referer=<the actual link>` when
126+
# the user is already authenticated.
127+
if req.is_authenticated:
128+
req.redirect(self._get_safe_redirect_url(req, redir_param="referer"))
124129
return "plainlogin.html", {
125130
"form": AuthenticationForm(),
126131
"referer": req.args.get("referer", ""),

DjangoPlugin/tracdjangoplugin/tests.py

+9
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,15 @@ def test_login_invalid_inactive_user(self):
149149
User.objects.create_user(username="test", password="test", is_active=False)
150150
self.assertLoginFails(username="test", password="test")
151151

152+
def test_login_page_redirects_if_already_logged_in(self):
153+
self.env.config.set("trac", "base_url", "")
154+
request = self.request_factory(method="GET", path_info="/login", args={"referer": "/test"}, authname="admin")
155+
156+
with self.assertRaises(RequestDone):
157+
self.component.process_request(request)
158+
159+
self.assertEqual(request.headers_sent["Location"], "/test")
160+
152161

153162
class DjangoDBManagementMiddlewareTestCase(SimpleTestCase):
154163
@classmethod

0 commit comments

Comments
 (0)