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 2013/02/12 17:59:06 UTC
[2/5] git commit: [#5727] ticket:264 Command for fixing tracker's
discussions
[#5727] ticket:264 Command for fixing tracker's discussions
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/53aef826
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/53aef826
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/53aef826
Branch: refs/heads/master
Commit: 53aef826c109fbea2833e3f48f93d28bb5ec3814
Parents: ba2f013
Author: Igor Bondarenko <je...@gmail.com>
Authored: Fri Feb 1 11:26:38 2013 +0000
Committer: Dave Brondsema <db...@geek.net>
Committed: Tue Feb 12 16:58:47 2013 +0000
----------------------------------------------------------------------
.../forgetracker/command/fix_discussion.py | 29 +++++++++++++++
1 files changed, 29 insertions(+), 0 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/53aef826/ForgeTracker/forgetracker/command/fix_discussion.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/command/fix_discussion.py b/ForgeTracker/forgetracker/command/fix_discussion.py
index bfac130..14d1482 100644
--- a/ForgeTracker/forgetracker/command/fix_discussion.py
+++ b/ForgeTracker/forgetracker/command/fix_discussion.py
@@ -1,9 +1,12 @@
from bson import ObjectId
from bson.errors import InvalidId
+from ming.orm import ThreadLocalORMSession
+from pylons import tmpl_context as c
from allura.command import base
from allura import model as M
from allura.lib import exceptions as exc
+from forgetracker.model import Ticket
class FixDiscussion(base.Command):
@@ -48,6 +51,32 @@ class FixDiscussion(base.Command):
self.fix_for_project(project)
else:
base.log.info('Checking discussion instances for each tracker in all projects')
+ for project in M.Project.query.find():
+ self.fix_for_project(project)
def fix_for_project(self, project):
+ c.project = project
base.log.info('Checking discussion instances for each tracker in project %s' % project.shortname)
+ trackers = [ac for ac in project.app_configs
+ if ac.tool_name.lower() == 'tickets']
+ for tracker in trackers:
+ base.log.info('Found tracker %s' % tracker)
+ for ticket in Ticket.query.find({'app_config_id': tracker._id}):
+ base.log.info('Processing ticket %s [#%s] %s'
+ % (ticket._id, ticket.ticket_num, ticket.summary))
+ if ticket.discussion_thread.discussion.app_config_id != tracker._id:
+ # Some tickets were moved from this tracker,
+ # and Discussion instance for entire tracker was mived too.
+ # Should move it back.
+ base.log.info("Some tickets were moved from this tracker. "
+ "Moving tracker's discussion instance back.")
+ ticket.discussion_thread.discussion.app_config_id = tracker._id
+
+ if ticket.discussion_thread.discussion_id != tracker.discussion_id:
+ # Ticket was moved from another tracker.
+ # Should bind his comment thread to tracker's Discussion
+ base.log.info("Ticket was moved from another tracker. "
+ "Bind ticket's comment thread to tracker's Discussion instance.")
+ ticket.discussion_thread.discussion_id = tracker.discussion_id
+
+ ThreadLocalORMSession.flush_all()