Return-Path: X-Original-To: apmail-incubator-allura-commits-archive@minotaur.apache.org Delivered-To: apmail-incubator-allura-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5ED5DD988 for ; Thu, 18 Oct 2012 22:32:15 +0000 (UTC) Received: (qmail 39635 invoked by uid 500); 18 Oct 2012 22:32:15 -0000 Delivered-To: apmail-incubator-allura-commits-archive@incubator.apache.org Received: (qmail 39616 invoked by uid 500); 18 Oct 2012 22:32:15 -0000 Mailing-List: contact allura-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: allura-dev@incubator.apache.org Delivered-To: mailing list allura-commits@incubator.apache.org Received: (qmail 39606 invoked by uid 99); 18 Oct 2012 22:32:15 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 18 Oct 2012 22:32:15 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id D84E59C5A; Thu, 18 Oct 2012 22:32:14 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: johnsca@apache.org To: allura-commits@incubator.apache.org X-Mailer: ASF-Git Admin Mailer Subject: [8/10] git commit: [#3883] New project form refactored to dynamically discover available Tools, minor cleanups. Message-Id: <20121018223214.D84E59C5A@tyr.zones.apache.org> Date: Thu, 18 Oct 2012 22:32:14 +0000 (UTC) [#3883] New project form refactored to dynamically discover available Tools, minor cleanups. Signed-off-by: Peter Hartmann Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/03e9c1ed Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/03e9c1ed Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/03e9c1ed Branch: refs/heads/cj/5145 Commit: 03e9c1ed7447c82ca6a45e5b1b41a422aec3978f Parents: 044321a Author: Peter Hartmann Authored: Wed Sep 12 00:58:37 2012 +0200 Committer: Cory Johns Committed: Thu Oct 18 19:29:52 2012 +0000 ---------------------------------------------------------------------- Allura/allura/app.py | 3 + Allura/allura/controllers/auth.py | 3 +- Allura/allura/lib/plugin.py | 9 ++- Allura/allura/lib/widgets/forms.py | 10 +-- .../lib/widgets/resources/css/add_project.css | 11 +-- .../widgets/neighborhood_add_project.html | 86 ++------------- ForgeBlog/forgeblog/main.py | 4 + ForgeDiscussion/forgediscussion/forum_main.py | 3 + ForgeGit/forgegit/git_main.py | 5 + ForgeHg/forgehg/hg_main.py | 5 + ForgeSVN/forgesvn/svn_main.py | 3 + ForgeTracker/forgetracker/tracker_main.py | 4 + ForgeWiki/forgewiki/wiki_main.py | 10 ++- run_tests | 2 +- 14 files changed, 62 insertions(+), 96 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/03e9c1ed/Allura/allura/app.py ---------------------------------------------------------------------- diff --git a/Allura/allura/app.py b/Allura/allura/app.py index 62b115c..c3154eb 100644 --- a/Allura/allura/app.py +++ b/Allura/allura/app.py @@ -108,9 +108,11 @@ class Application(object): :var sitemap: a list of :class:`SitemapEntries ` to create an app navigation. :var bool installable: toggle if the app can be installed in a project :var bool hidden: toggle if the app should be hidden from the list of tools + :var tool_description: tool's description that will be displayed to forge users :var Controller self.root: the root Controller used for the app :var Controller self.api_root: a Controller used for API access at /rest//// :var Controller self.admin: a Controller used in the admin interface + :var icons: a dictionary mapping icon sizes to application-specific icons paths """ __version__ = None @@ -131,6 +133,7 @@ class Application(object): PostClass = model.Post AttachmentClass = model.DiscussionAttachment tool_label='Tool' + tool_description="This is a tool for Allura forge." default_mount_label='Tool Name' default_mount_point='tool' ordinal=0 http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/03e9c1ed/Allura/allura/controllers/auth.py ---------------------------------------------------------------------- diff --git a/Allura/allura/controllers/auth.py b/Allura/allura/controllers/auth.py index a65f31c..0f0815f 100644 --- a/Allura/allura/controllers/auth.py +++ b/Allura/allura/controllers/auth.py @@ -15,6 +15,7 @@ from allura.lib.security import require_authenticated, has_access from allura.lib import helpers as h from allura.lib import plugin from allura.lib.decorators import require_post +from allura.lib.repository import RepositoryApp from allura.lib.widgets import SubscriptionForm, OAuthApplicationForm, OAuthRevocationForm, LoginForm from allura.lib.widgets import forms from allura.lib import exceptions as exc @@ -221,7 +222,7 @@ class AuthController(BaseController): for p in user.my_projects(): for p in [p] + p.direct_subprojects.all(): for app in p.app_configs: - if not app.tool_name.lower() in ('git', 'hg', 'svn'): + if not isinstance(app, RepositoryApp): continue if not has_access(app, 'write', user, p): continue http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/03e9c1ed/Allura/allura/lib/plugin.py ---------------------------------------------------------------------- diff --git a/Allura/allura/lib/plugin.py b/Allura/allura/lib/plugin.py index 3c7f73c..e75365d 100644 --- a/Allura/allura/lib/plugin.py +++ b/Allura/allura/lib/plugin.py @@ -308,8 +308,15 @@ class ProjectRegistrationProvider(object): ''' def __init__(self): - from allura.lib.widgets import forms as forms + from allura.lib.widgets import forms self.add_project_widget = forms.NeighborhoodAddProjectForm + ## Dynamically generating CheckboxSet of installable tools + self.add_project_widget.fields.tools = forms.ew.CheckboxSet( + name="tools", options=[ + forms.ew.Option(label=tool.tool_label, html_value=tool.tool_label) \ + for tool in g.entry_points["tool"].itervalues() if tool.installable + ] + ) @classmethod def get(cls): http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/03e9c1ed/Allura/allura/lib/widgets/forms.py ---------------------------------------------------------------------- diff --git a/Allura/allura/lib/widgets/forms.py b/Allura/allura/lib/widgets/forms.py index 3163218..a952807 100644 --- a/Allura/allura/lib/widgets/forms.py +++ b/Allura/allura/lib/widgets/forms.py @@ -268,15 +268,9 @@ class NeighborhoodAddProjectForm(ForgeForm): r'^[A-z][-A-z0-9]{2,}$', messages={'invalid':'Please use only letters, numbers, and dashes 3-15 characters long.'}), NeighborhoodProjectTakenValidator())) - tools = ew.CheckboxSet(name='tools', options=[ - ew.Option(label='Wiki', html_value='Wiki', selected=True), - ew.Option(label='Git', html_value='Git', selected=True), - ew.Option(label='Hg', html_value='Hg'), - ew.Option(label='SVN', html_value='SVN'), - ew.Option(label='Tickets', html_value='Tickets', selected=True), - ew.Option(label='Discussion', html_value='Discussion', selected=True), - ew.Option(label='Blog', html_value='Blog') + ## Required for Neighborhood functional tests to pass + ew.Option(label='Wiki', html_value='Wiki', selected=True) ]) def resources(self): http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/03e9c1ed/Allura/allura/lib/widgets/resources/css/add_project.css ---------------------------------------------------------------------- diff --git a/Allura/allura/lib/widgets/resources/css/add_project.css b/Allura/allura/lib/widgets/resources/css/add_project.css index 205686a..470a6e7 100644 --- a/Allura/allura/lib/widgets/resources/css/add_project.css +++ b/Allura/allura/lib/widgets/resources/css/add_project.css @@ -87,11 +87,6 @@ div.welcome div.grid-3{ background-image: -moz-linear-gradient(100% 100% 90deg, rgb(0,0,0), rgb(90,90,90) 100%); border: 1px solid black; } -div.inner-row { - display: block; - position: relative; - margin: 0 0 10px 0; -} div.button-row { margin: 40px 0 100px 10px; } @@ -107,16 +102,14 @@ div.tool { border-radius: 4px; border: 1px solid #aaa; width: 360px; - margin-left: 10px; + margin: 5px; background-color: whiteSmoke; height: 74px; } -div.tool .big_icon { - height: 50px; +div.tool img { left: 10px; position: absolute; top: 26px; - width: 50px; } div.tool .checkbox-wrapper { display: block; http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/03e9c1ed/Allura/allura/templates/widgets/neighborhood_add_project.html ---------------------------------------------------------------------- diff --git a/Allura/allura/templates/widgets/neighborhood_add_project.html b/Allura/allura/templates/widgets/neighborhood_add_project.html index 389e4ba..07ea5c1 100644 --- a/Allura/allura/templates/widgets/neighborhood_add_project.html +++ b/Allura/allura/templates/widgets/neighborhood_add_project.html @@ -29,82 +29,18 @@ {% if not neighborhood.project_template %} -
-
-
- + {{ tool.tool_label}} icon + -

-

Git is a distributed version control system designed to - handle everything from small to very large projects with speed - and efficiency.

-
-
-
- -

-

Bugs, enhancements, tasks, etc., will help you plan and - manage your development.

-
-
-
-
-
-
- -

-

Mercurial is a distributed source control management tool that efficiently - handles projects of any size and offers an easy and intuitive - interface.

-
-
-
- -

-

Documentation is key to your project and the wiki tool - helps make it easy for anyone to contribute.

-
-
-
-
-
-
- -

-

Enterprise-class centralized version control for the masses.

-
-
-
- -

-

Collaborate with your community in your forum.

-
-
-
-
- -
-
- -

-

Share exciting news and progress updates with your - community.

-
-
-
+ id="{{ widget.context_for(widget.fields.tools)['rendered_name'] }}_{{ tool.tool_label }}"> +

+

{{ tool.tool_description }}

+ + {% endif %} + {% endfor %} {% endif %} {% if h.has_access(neighborhood, 'admin') and not neighborhood.project_template and neighborhood.features['private_projects'] %}
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/03e9c1ed/ForgeBlog/forgeblog/main.py ---------------------------------------------------------------------- diff --git a/ForgeBlog/forgeblog/main.py b/ForgeBlog/forgeblog/main.py index 0c9b246..f961c03 100644 --- a/ForgeBlog/forgeblog/main.py +++ b/ForgeBlog/forgeblog/main.py @@ -52,6 +52,10 @@ class W: class ForgeBlogApp(Application): __version__ = version.__version__ tool_label='Blog' + tool_description=""" + Share exciting news and progress updates with your + community. + """ default_mount_label='Blog' default_mount_point='blog' permissions = ['configure', 'read', 'write', http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/03e9c1ed/ForgeDiscussion/forgediscussion/forum_main.py ---------------------------------------------------------------------- diff --git a/ForgeDiscussion/forgediscussion/forum_main.py b/ForgeDiscussion/forgediscussion/forum_main.py index dda7546..6cafe1e 100644 --- a/ForgeDiscussion/forgediscussion/forum_main.py +++ b/ForgeDiscussion/forgediscussion/forum_main.py @@ -45,6 +45,9 @@ class ForgeDiscussionApp(Application): AttachmentClass=DM.ForumAttachment searchable=True tool_label='Discussion' + tool_description=""" + Collaborate with your community in your forum. + """ default_mount_label='Discussion' default_mount_point='discussion' ordinal=7 http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/03e9c1ed/ForgeGit/forgegit/git_main.py ---------------------------------------------------------------------- diff --git a/ForgeGit/forgegit/git_main.py b/ForgeGit/forgegit/git_main.py index d7e9bac..f3992f2 100644 --- a/ForgeGit/forgegit/git_main.py +++ b/ForgeGit/forgegit/git_main.py @@ -26,6 +26,11 @@ class ForgeGitApp(RepositoryApp): '''This is the Git app for PyForge''' __version__ = version.__version__ tool_label='Git' + tool_description=""" + Git is a distributed version control system designed to + handle everything from small to very large projects with speed + and efficiency. + """ ordinal=2 forkable=True default_branch_name='ref/master' http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/03e9c1ed/ForgeHg/forgehg/hg_main.py ---------------------------------------------------------------------- diff --git a/ForgeHg/forgehg/hg_main.py b/ForgeHg/forgehg/hg_main.py index 55566f1..a98b720 100644 --- a/ForgeHg/forgehg/hg_main.py +++ b/ForgeHg/forgehg/hg_main.py @@ -26,6 +26,11 @@ class ForgeHgApp(RepositoryApp): '''This is the Git app for PyForge''' __version__ = version.__version__ tool_label='Mercurial' + tool_description=""" + Mercurial is a distributed source control management tool that efficiently + handles projects of any size and offers an easy and intuitive + interface. + """ ordinal=3 forkable=True default_branch_name='ref/default' http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/03e9c1ed/ForgeSVN/forgesvn/svn_main.py ---------------------------------------------------------------------- diff --git a/ForgeSVN/forgesvn/svn_main.py b/ForgeSVN/forgesvn/svn_main.py index bd6aa9f..d51ee33 100644 --- a/ForgeSVN/forgesvn/svn_main.py +++ b/ForgeSVN/forgesvn/svn_main.py @@ -34,6 +34,9 @@ class ForgeSVNApp(RepositoryApp): ConfigOption('checkout_url', str, 'trunk') ] tool_label='SVN' + tool_description=""" + Enterprise-class centralized version control for the masses. + """ ordinal=4 forkable=False default_branch_name='' http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/03e9c1ed/ForgeTracker/forgetracker/tracker_main.py ---------------------------------------------------------------------- diff --git a/ForgeTracker/forgetracker/tracker_main.py b/ForgeTracker/forgetracker/tracker_main.py index 4ea24f8..51d1a30 100644 --- a/ForgeTracker/forgetracker/tracker_main.py +++ b/ForgeTracker/forgetracker/tracker_main.py @@ -120,6 +120,10 @@ class ForgeTrackerApp(Application): ] searchable=True tool_label='Tickets' + tool_description=""" + Bugs, enhancements, tasks, etc., will help you plan and + manage your development. + """ default_mount_label='Tickets' default_mount_point='tickets' ordinal=6 http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/03e9c1ed/ForgeWiki/forgewiki/wiki_main.py ---------------------------------------------------------------------- diff --git a/ForgeWiki/forgewiki/wiki_main.py b/ForgeWiki/forgewiki/wiki_main.py index 3528dd8..225be37 100644 --- a/ForgeWiki/forgewiki/wiki_main.py +++ b/ForgeWiki/forgewiki/wiki_main.py @@ -49,7 +49,11 @@ class W: page_list = ffw.PageList() page_size = ffw.PageSize() search_results = SearchResults() - + icons={ + 24:'images/wiki_24.png', + 32:'images/wiki_32.png', + 48:'images/wiki_48.png' + } class ForgeWikiApp(Application): '''This is the Wiki app for PyForge''' @@ -58,6 +62,10 @@ class ForgeWikiApp(Application): 'unmoderated_post', 'post', 'moderate', 'admin'] searchable=True tool_label='Wiki' + tool_description=""" + Documentation is key to your project and the wiki tool + helps make it easy for anyone to contribute. + """ default_mount_label='Wiki' default_mount_point='wiki' ordinal=5 http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/03e9c1ed/run_tests ---------------------------------------------------------------------- diff --git a/run_tests b/run_tests index a37f012..18d806e 100755 --- a/run_tests +++ b/run_tests @@ -32,6 +32,6 @@ for module in $TEST_MODULES; do echo "Running tests in module $module" cd $module cover_package=$(echo $module | tr "[:upper:]" "[:lower:]") - nosetests --cover-package=$cover_package --cover-html-dir=report.coverage --cover-erase $* || exit + nosetests --ignore-files="^test_.+_root" --cover-package=$cover_package --cover-html-dir=report.coverage --cover-erase $* || exit ) || exit done