support overlapping admin urls, if a tool is installed with "groups" mount point
diff --git a/Allura/allura/ext/admin/admin_main.py b/Allura/allura/ext/admin/admin_main.py
index d250a70..78563f2 100644
--- a/Allura/allura/ext/admin/admin_main.py
+++ b/Allura/allura/ext/admin/admin_main.py
@@ -300,11 +300,6 @@
             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 @@
     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 485f26b..62d7111 100644
--- a/Allura/allura/tests/functional/test_admin.py
+++ b/Allura/allura/tests/functional/test_admin.py
@@ -999,6 +999,12 @@
         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):