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/09/19 18:21:53 UTC
[21/41] git commit: [#6535] ticket:417 milestone processing added
[#6535] ticket:417 milestone processing added
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/fedf201b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/fedf201b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/fedf201b
Branch: refs/heads/db/5822
Commit: fedf201bc4e046a54f0476f2b8f0ae5f603def14
Parents: b766bdd
Author: Anton Kasyanov <mi...@gmail.com>
Authored: Tue Aug 27 19:02:08 2013 +0300
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Thu Sep 19 14:46:50 2013 +0000
----------------------------------------------------------------------
ForgeImporters/forgeimporters/github/tracker.py | 46 ++++++++++++--------
1 file changed, 28 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/fedf201b/ForgeImporters/forgeimporters/github/tracker.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/github/tracker.py b/ForgeImporters/forgeimporters/github/tracker.py
index 3266cc8..8c402d0 100644
--- a/ForgeImporters/forgeimporters/github/tracker.py
+++ b/ForgeImporters/forgeimporters/github/tracker.py
@@ -25,6 +25,7 @@ class GitHubTrackerImporter(ToolImporter):
controller = None
tool_label = 'Issues'
max_ticket_num = 0
+ open_milestones = set()
def import_tool(self, project, user, project_name, mount_point=None,
mount_label=None, **kw):
@@ -48,9 +49,10 @@ class GitHubTrackerImporter(ToolImporter):
ticket_num=ticket_num)
self.process_fields(ticket, issue)
self.process_comments(extractor, ticket, issue)
+ self.process_milestones(ticket, issue)
session(ticket).flush(ticket)
session(ticket).expunge(ticket)
- #app.globals.custom_fields = self.get_milestones()
+ app.globals.custom_fields = self.postprocess_milestones()
app.globals.last_ticket_num = self.max_ticket_num
ThreadLocalORMSession.flush_all()
g.post_event('project_updated')
@@ -94,23 +96,31 @@ class GitHubTrackerImporter(ToolImporter):
)
p.add_multiple_attachments(attachments)
- def get_milestones(self):
- custom_fields = []
- milestones = []
- for name, field in self.custom_fields.iteritems():
- if field['name'] == '_milestone':
- field['milestones'] = [{
- 'name': milestone,
- 'due_date': None,
- 'complete': milestone not in self.open_milestones,
- } for milestone in sorted(field['options'])]
- field['options'] = ''
- elif field['type'] == 'select':
- field['options'] = ' '.join(field['options'])
- else:
- field['options'] = ''
- custom_fields.append(field)
- return custom_fields
+ def process_milestones(self, ticket, issue):
+ if issue['milestone']:
+ title = issue['milestone']['title']
+ due = None
+ if issue['milestone']['due_on']:
+ due = datetime.strptime(issue['milestone']['due_on'], '%Y-%m-%dT%H:%M:%SZ')
+ ticket.custom_fields = {
+ '_milestone': title,
+ }
+ self.open_milestones.add((title, due,))
+
+ def postprocess_milestones(self):
+ global_milestones = {
+ 'milestones': [],
+ 'type': 'milestone',
+ 'name': '_milestone',
+ 'label': 'Milestone'
+ }
+ for milestone in self.open_milestones:
+ global_milestones['milestones'].append({
+ 'name': milestone[0],
+ 'due_date': unicode(milestone[1].date()),
+ 'complete': False,
+ })
+ return [global_milestones]
def _get_attachments(self, body):
# at github, attachments are images only and are included into comment's body