This is an automated email from the ASF dual-hosted git repository.
brondsem pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/allura.git
The following commit(s) were added to refs/heads/master by this push:
new 7ff944374 support overlapping admin urls, if a tool is installed with
"groups" mount point
7ff944374 is described below
commit 7ff9443742f751009b4f6bf0d33f76cb4efae868
Author: Dave Brondsema <[email protected]>
AuthorDate: Tue Mar 12 11:40:18 2024 -0400
support overlapping admin urls, if a tool is installed with "groups" mount
point
---
Allura/allura/ext/admin/admin_main.py | 13 ++++++++-----
Allura/allura/tests/functional/test_admin.py | 6 ++++++
2 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/Allura/allura/ext/admin/admin_main.py
b/Allura/allura/ext/admin/admin_main.py
index d250a70fe..78563f2cb 100644
--- a/Allura/allura/ext/admin/admin_main.py
+++ b/Allura/allura/ext/admin/admin_main.py
@@ -300,11 +300,6 @@ class ProjectAdminController(BaseController):
raise exc.HTTPNotFound(name)
return app.admin, remainder
- @without_trailing_slash
- @expose('jinja:allura.ext.admin:templates/project_permissions.html')
- def groups(self, **kw):
- return dict()
-
@expose()
@require_post()
@validate(W.metadata_admin, error_handler=overview)
@@ -1089,6 +1084,14 @@ class GroupsController(BaseController):
def _check_security(self):
require_access(c.project, 'admin')
+ @expose()
+ def _lookup(self, *remainder):
+ # if a forum/wiki/etc is installed at mount_point 'groups', this
allows its tool admin pages to still work
+ # could expand this to other ProjectAdminController paths too.
+ app = c.project.app_instance('groups')
+ if app:
+ return app.admin, remainder
+
def _index_permissions(self):
permissions = {
p: [] for p in c.project.permissions}
diff --git a/Allura/allura/tests/functional/test_admin.py
b/Allura/allura/tests/functional/test_admin.py
index 485f26b9b..62d7111d8 100644
--- a/Allura/allura/tests/functional/test_admin.py
+++ b/Allura/allura/tests/functional/test_admin.py
@@ -999,6 +999,12 @@ class TestProjectAdmin(TestController):
resp = self.app.post('/admin/update', params={'fediverse_address':
'https://indieweb.social/@test'})
assert resp.status_int == 302
+ @td.with_tool('test', 'Wiki', 'groups')
+ def test_overlapping_url_paths(self):
+ # the wiki installed at "groups" overlaps its admin pages with normal
/admin/groups but is still usable
+ r = self.app.get('/p/test/admin/groups/edit_label')
+ r.mustcontain('<form method="post"
action="/p/test/admin/groups/update_label">')
+
class TestExport(TestController):