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