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/02/12 23:21:49 UTC

[4/11] git commit: [#5727] ticket:264 Command skeleton

[#5727] ticket:264 Command skeleton


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

Branch: refs/heads/cj/5685
Commit: 6a37341e64f16468a3508c235e76d17186175d30
Parents: 1150a67
Author: Igor Bondarenko <je...@gmail.com>
Authored: Fri Feb 1 09:51:15 2013 +0000
Committer: Dave Brondsema <db...@geek.net>
Committed: Tue Feb 12 16:58:47 2013 +0000

----------------------------------------------------------------------
 .../forgetracker/command/fix_discussion.py         |   53 +++++++++++++++
 ForgeTracker/setup.py                              |    3 +
 2 files changed, 56 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/6a37341e/ForgeTracker/forgetracker/command/__init__.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/command/__init__.py b/ForgeTracker/forgetracker/command/__init__.py
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/6a37341e/ForgeTracker/forgetracker/command/fix_discussion.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/command/fix_discussion.py b/ForgeTracker/forgetracker/command/fix_discussion.py
new file mode 100644
index 0000000..bfac130
--- /dev/null
+++ b/ForgeTracker/forgetracker/command/fix_discussion.py
@@ -0,0 +1,53 @@
+from bson import ObjectId
+from bson.errors import InvalidId
+
+from allura.command import base
+from allura import model as M
+from allura.lib import exceptions as exc
+
+
+class FixDiscussion(base.Command):
+    """Fixes trackers that had used buggy 'ticket move' feature before it was fixed.
+
+    See [#5727] for details.
+
+    Usage:
+
+    paster fix-discussion ../Allura/development.ini [project_name_or_id]
+
+    If used with optional parameter will fix trackers for specified project,
+    else will fix all trackers in all projects.
+    """
+    group_name = 'ForgeTracker'
+    min_args = 1
+    max_args = 2
+    usage = '<ini file> [project_name_or_id]'
+    summary = "Fix trackers that had used buggy 'ticket move' feature"
+    parser = base.Command.standard_parser(verbose=True)
+
+    def command(self):
+        self.basic_setup()
+
+        if len(self.args) >= 2:
+            p_name_or_id = self.args[1]
+            try:
+                project = M.Project.query.get(_id=ObjectId(p_name_or_id))
+            except InvalidId:
+                projects = M.Project.query.find({'$or': [
+                    {'shortname': p_name_or_id},
+                    {'name': p_name_or_id}
+                ]})
+                if projects.count() > 1:
+                    raise exc.ForgeError('Multiple projects has a shortname %s. '
+                            'Use project _id instead.' % p_name_or_id)
+                project = projects.first()
+            if not project:
+                raise exc.NoSuchProjectError('The project %s '
+                        'could not be found' % p_name_or_id)
+
+            self.fix_for_project(project)
+        else:
+            base.log.info('Checking discussion instances for each tracker in all projects')
+
+    def fix_for_project(self, project):
+        base.log.info('Checking discussion instances for each tracker in project %s' % project.shortname)

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/6a37341e/ForgeTracker/setup.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/setup.py b/ForgeTracker/setup.py
index b44f1a4..3cd2da0 100644
--- a/ForgeTracker/setup.py
+++ b/ForgeTracker/setup.py
@@ -28,5 +28,8 @@ setup(name='ForgeTracker',
 
       [easy_widgets.resources]
       ew_resources=forgetracker.config.resources:register_ew_resources
+
+      [paste.paster_command]
+      fix-discussion = forgetracker.command.fix_discussion:FixDiscussion
       """,
       )