You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2015/12/17 20:22:20 UTC

[33/50] [abbrv] allura git commit: [#7919] new tools/subprojects to get proper last ordinal value

[#7919] new tools/subprojects to get proper last ordinal value


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/54bc381c
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/54bc381c
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/54bc381c

Branch: refs/heads/db/8034
Commit: 54bc381c41ee71f1e35b5a5066df6285c1f10f50
Parents: 478fc33
Author: Dave Brondsema <da...@brondsema.net>
Authored: Thu Dec 10 13:35:05 2015 -0500
Committer: Heith Seewald <he...@gmail.com>
Committed: Wed Dec 16 13:55:39 2015 -0600

----------------------------------------------------------------------
 Allura/allura/ext/admin/admin_main.py           | 13 +++++-----
 .../admin/templates/project_install_tool.html   |  1 -
 Allura/allura/model/project.py                  | 27 +++++++++++++++++---
 3 files changed, 30 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/54bc381c/Allura/allura/ext/admin/admin_main.py
----------------------------------------------------------------------
diff --git a/Allura/allura/ext/admin/admin_main.py b/Allura/allura/ext/admin/admin_main.py
index d9f87fa..f0bc151 100644
--- a/Allura/allura/ext/admin/admin_main.py
+++ b/Allura/allura/ext/admin/admin_main.py
@@ -343,7 +343,6 @@ class ProjectAdminController(BaseController):
                         'default_mount_label': 'SubProject',
                         'default_mount_point': 'subproject'
                     },
-                    total_mounts=999,  # FIXME
                     options=[],
             )
 
@@ -351,7 +350,6 @@ class ProjectAdminController(BaseController):
         return dict(
                 tool_name=tool_name,
                 tool=tool,
-                total_mounts=999,  # FIXME
                 options=tool.options_on_install(),
         )
 
@@ -700,7 +698,10 @@ class ProjectAdminController(BaseController):
                     meta=dict(mount_point=mount_point, name=new['mount_label']))
                 sp = c.project.new_subproject(mount_point)
                 sp.name = new['mount_label']
-                sp.ordinal = int(new['ordinal'])
+                if 'ordinal' in new:
+                    sp.ordinal = int(new['ordinal'])
+                else:
+                    sp.ordinal = c.project.last_ordinal_value() + 1
             else:
                 require_access(c.project, 'admin')
                 installable_tools = AdminApp.installable_tools_for(c.project)
@@ -722,7 +723,7 @@ class ProjectAdminController(BaseController):
                     ep_name,
                     mount_point,
                     mount_label=new['mount_label'],
-                    ordinal=new['ordinal'],
+                    ordinal=int(new['ordinal']) if 'ordinal' in new else None,
                     **config_on_install)
         g.post_event('project_updated')
 
@@ -763,9 +764,10 @@ class ProjectAdminController(BaseController):
             'status': c.project.bulk_export_status()
         }
 
+
 class ProjectAdminRestController(BaseController):
     """
-    Exposes RESTful APi for project admin actions.
+    Exposes RESTful API for project admin actions.
     """
 
     def _check_security(self):
@@ -788,7 +790,6 @@ class ProjectAdminRestController(BaseController):
         M.AuditLog.log('Updated tool order')
         return {'status': 'ok'}
 
-
     @expose('json:')
     @require_post()
     def configure_tool_grouping(self, grouping_threshold='1', **kw):

http://git-wip-us.apache.org/repos/asf/allura/blob/54bc381c/Allura/allura/ext/admin/templates/project_install_tool.html
----------------------------------------------------------------------
diff --git a/Allura/allura/ext/admin/templates/project_install_tool.html b/Allura/allura/ext/admin/templates/project_install_tool.html
index 0e6d98d..82f6f65 100644
--- a/Allura/allura/ext/admin/templates/project_install_tool.html
+++ b/Allura/allura/ext/admin/templates/project_install_tool.html
@@ -14,7 +14,6 @@
 {% endif %}
 
 <form method="post" action="{{ full_url }}admin/update_mounts" id="install_form">
-    <input type="hidden" name="new.ordinal" value="{{ total_mounts }}"/>
     <input type="hidden" name="new.ep_name" class="new_ep_name" value="{{ tool_name }}">
     <label class="grid-13" for="new.mount_label">Label</label>
     <div class="grid-13"><input type="text" name="new.mount_label" class="new_mount_label"

http://git-wip-us.apache.org/repos/asf/allura/blob/54bc381c/Allura/allura/model/project.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/project.py b/Allura/allura/model/project.py
index 158904a..6a2007d 100644
--- a/Allura/allura/model/project.py
+++ b/Allura/allura/model/project.py
@@ -776,12 +776,29 @@ class Project(SearchIndexable, MappedClass, ActivityNode, ActivityObject):
         except fe.Invalid as e:
             raise exceptions.ToolError(u'{}: {}'.format(opt.name, str(e)))
 
+    def last_ordinal_value(self):
+        last_menu_item = self.ordered_mounts(include_hidden=True)[-1]
+        if 'ac' in last_menu_item:
+            ordinal = last_menu_item['ac'].options.ordinal
+        else:
+            ordinal = last_menu_item['sub'].ordinal
+        return ordinal
+
     def install_app(self, ep_name, mount_point=None, mount_label=None, ordinal=None, **override_options):
+        '''
+        Install an app
+
+        :param str ep_name: Entry Point name, e.g. "wiki"
+        :param str mount_point: URL path, e.g. "docs"
+        :param str mount_label: Display name
+        :param int ordinal: location of tool, relative to others; None will go to the end.
+        :param override_options:
+        :return:
+        '''
         App = g.entry_points['tool'][ep_name]
         mount_point = self._mount_point_for_install(App, mount_point)
         if ordinal is None:
-            ordinal = int(self.ordered_mounts(include_hidden=True)
-                          [-1]['ordinal']) + 1
+            ordinal = self.last_ordinal_value() + 1
         options = App.default_options()
         options['mount_point'] = mount_point
         options['mount_label'] = mount_label or App.default_mount_label or mount_point
@@ -843,8 +860,10 @@ class Project(SearchIndexable, MappedClass, ActivityNode, ActivityObject):
         return provider.register_subproject(self, name, user or c.user, install_apps, project_name=project_name)
 
     def ordered_mounts(self, include_hidden=False):
-        '''Returns an array of a projects mounts (tools and sub-projects) in
-        toolbar order.'''
+        '''
+        Returns an array of a projects mounts (tools and sub-projects) in toolbar order.
+        Note that the top-level 'ordinal' field may be offset from the stored ordinal value, due to anchored tools
+        '''
         result = []
         anchored_tools = self.neighborhood.get_anchored_tools()
         i = len(anchored_tools)