You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by ke...@apache.org on 2022/09/09 13:29:12 UTC
[allura] 01/01: [#8462] Redirect any missing tools as 301 instead of 404
This is an automated email from the ASF dual-hosted git repository.
kentontaylor pushed a commit to branch kt/8462
in repository https://gitbox.apache.org/repos/asf/allura.git
commit d678f5b872c1b652fe931a5959bae8856332a3d7
Author: Kenton Taylor <kt...@slashdotmedia.com>
AuthorDate: Fri Sep 9 13:21:04 2022 +0000
[#8462] Redirect any missing tools as 301 instead of 404
---
Allura/allura/controllers/project.py | 9 +++++----
Allura/allura/tests/functional/test_neighborhood.py | 10 +++++-----
2 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/Allura/allura/controllers/project.py b/Allura/allura/controllers/project.py
index 153bd347b..6b195ebd3 100644
--- a/Allura/allura/controllers/project.py
+++ b/Allura/allura/controllers/project.py
@@ -364,7 +364,9 @@ class ProjectController(FeedController):
c.project = subproject
c.app = None
return ProjectController(), remainder
- raise exc.HTTPNotFound(name)
+
+ # if a tool doesn't exist, redirect to the first valid tool instead of 404
+ self.index()
@expose('jinja:allura:templates/members.html')
@with_trailing_slash
@@ -399,11 +401,10 @@ class ProjectController(FeedController):
if mount is not None:
if hasattr(app, 'default_redirect'):
app.default_redirect()
- # 301 redirect for user profiles only
- args = dict(redirect_with=exc.HTTPMovedPermanently) if isinstance(app, UserProfileApp) else dict()
+ args = dict(redirect_with=exc.HTTPMovedPermanently)
redirect(app.url() if callable(app.url) else app.url, **args) # Application has property; Subproject has method
else:
- redirect(c.project.app_configs[0].url())
+ redirect(c.project.app_configs[0].url(), redirect_with=exc.HTTPMovedPermanently)
def get_feed(self, project, app, user):
"""Return a :class:`allura.controllers.feed.FeedArgs` object describing
diff --git a/Allura/allura/tests/functional/test_neighborhood.py b/Allura/allura/tests/functional/test_neighborhood.py
index a60820621..162377da8 100644
--- a/Allura/allura/tests/functional/test_neighborhood.py
+++ b/Allura/allura/tests/functional/test_neighborhood.py
@@ -861,12 +861,12 @@ class TestNeighborhood(TestController):
def test_neighborhood_project(self):
self.app.get('/adobe/adobe-1/admin/', status=200)
self.app.get('/p/test/sub1/wiki/')
- self.app.get('/p/test/sub1/', status=302)
- self.app.get('/p/test/no-such-app/', status=404)
+ self.app.get('/p/test/sub1/', status=301)
+ self.app.get('/p/test/no-such-app/', status=301)
def test_neighborhood_namespace(self):
# p/test exists, so try creating adobe/test
- self.app.get('/adobe/test/wiki/', status=404)
+ self.app.get('/adobe/test/wiki/', status=301)
r = self.app.post('/adobe/register',
params=dict(
project_unixname='test', project_name='Test again',
@@ -984,7 +984,7 @@ class TestPhoneVerificationOnProjectRegistration(TestController):
def test_verify_phone_no_params(self):
with h.push_config(config, **{'project.verify_phone': 'true'}):
- self.app.get('/p/verify_phone', status=404)
+ self.app.get('/p/verify_phone', status=301)
def test_verify_phone_error(self):
with h.push_config(config, **{'project.verify_phone': 'true'}):
@@ -1039,7 +1039,7 @@ class TestPhoneVerificationOnProjectRegistration(TestController):
def test_check_phone_verification_no_params(self):
with h.push_config(config, **{'project.verify_phone': 'true'}):
- self.app.get('/p/check_phone_verification', status=404)
+ self.app.get('/p/check_phone_verification', status=301)
@patch.object(g, 'phone_service', autospec=True)
def test_check_phone_verification_error(self, phone_service):