You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by jo...@apache.org on 2013/09/05 20:20:33 UTC

[08/50] git commit: [#6482] change page to show importers in a grid

[#6482] change page to show importers in a grid


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

Branch: refs/heads/cj/6596
Commit: b7fb5f2dd43636783c58c6f5d03b4fbe0a216820
Parents: f705a17
Author: Dave Brondsema <db...@slashdotmedia.com>
Authored: Tue Aug 13 19:20:11 2013 +0000
Committer: Tim Van Steenburgh <tv...@gmail.com>
Committed: Tue Aug 27 17:24:58 2013 +0000

----------------------------------------------------------------------
 ForgeImporters/forgeimporters/base.py           | 31 +++++++++--
 .../forgeimporters/templates/list_all.html      | 58 ++++++++------------
 2 files changed, 51 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/b7fb5f2d/ForgeImporters/forgeimporters/base.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/base.py b/ForgeImporters/forgeimporters/base.py
index 620097e..c6cdf4a 100644
--- a/ForgeImporters/forgeimporters/base.py
+++ b/ForgeImporters/forgeimporters/base.py
@@ -18,6 +18,7 @@
 import logging
 import urllib
 import urllib2
+from collections import defaultdict
 
 from pkg_resources import iter_entry_points
 
@@ -359,11 +360,33 @@ class ProjectToolsImportController(object):
     @with_trailing_slash
     @expose('jinja:forgeimporters:templates/list_all.html')
     def index(self, *a, **kw):
-        importers = {}
-        for app_name, app in g.entry_points['tool'].iteritems():
-            importers[app] = ToolImporter.by_app(app)
+        # make dictionaries of both axis
+        importers_by_source = defaultdict(dict)
+        importers_by_tool = defaultdict(dict)
+        for ep in iter_entry_points('allura.importers'):
+            importer = ep.load()
+            importers_by_source[importer.source][ep.name] = importer
+            for tool in aslist(importer.target_app):
+                importers_by_tool[tool][ep.name] = importer
+
+        relevant_tools = sorted(importers_by_tool.keys(), key=lambda t: t.tool_label)
+
+        # build a full matrix including empty spots
+        importer_matrix = dict() # source -> [importer names]
+        for source, src_importers in importers_by_source.iteritems():
+            row = list()
+            for tool in relevant_tools:
+                for ep_name, importer in src_importers.iteritems():
+                    if tool in aslist(importer.target_app):
+                        row.append(ep_name)
+                        break
+                else:
+                    row.append(None)
+            importer_matrix[source] = row
+
         return {
-            'importers': importers
+            'tools': relevant_tools,
+            'importer_matrix': importer_matrix,
         }
 
     @expose()

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/b7fb5f2d/ForgeImporters/forgeimporters/templates/list_all.html
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/templates/list_all.html b/ForgeImporters/forgeimporters/templates/list_all.html
index 58c9f34..b91e0df 100644
--- a/ForgeImporters/forgeimporters/templates/list_all.html
+++ b/ForgeImporters/forgeimporters/templates/list_all.html
@@ -21,42 +21,32 @@
 
 {% block title %}{{c.project.name}} / Import{% endblock %}
 
-{% block header %}Import from external sources{% endblock %}
-
-{% block extra_css %}
-<style type="text/css">
-    .tool {
-        margin-bottom: 3em;
-    }
-    .tool img {
-        float: left;
-        margin: 0 1em;
-    }
-    .importer .descr {
-        margin: 0 2em 1em 2em;
-    }
-</style>
-{% endblock %}
+{% block header %}Import{% endblock %}
 
 {% block content %}
-    {% for tool, tool_importers in importers.iteritems() %}
-        <div class="tool">
-        {% for importer_name, importer in tool_importers.iteritems() %}
-            {% if loop.first %}
-                <img src="{{ g.theme.app_icon_url(tool, 48) }}" alt="{{ tool.tool_label }} icon">
-                <h2>{{ tool.tool_label }}</h2>
-            {% endif %}
-            <div class="importer">
-                <a href="{{importer_name}}"><h3>
-                {{importer.source}}:
-                {{importer.tool_label}}
-                </h3>
-                </a>
-                <div class="descr">
-                {{importer.tool_description}}
-                </div>
-            </div>
+<p>
+    To import from one of these external sources into your project, just click on "Import" and fill out the form.
+</p>
+<table>
+    <thead>
+    <tr>
+        <th></th>
+        {% for tool in tools %}
+            <th>{{tool.tool_label}}</th>
+        {% endfor %}
+    </tr>
+    </thead>
+    {% for source, importers in importer_matrix|dictsort %}
+        <tr>
+        <td><strong>{{ source }}</strong></td>
+        {% for importer_name in importers %}
+            <td>
+                {% if importer_name %}
+                <a href="{{importer_name}}">Import</a>
+                {% endif %}
+            </td>
         {% endfor %}
-        </div>
+        </tr>
     {% endfor %}
+</table>
 {% endblock %}