summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Jung <flo@windfisch.org>2013-09-05 01:02:34 +0200
committerFlorian Jung <flo@windfisch.org>2013-09-05 01:02:34 +0200
commit5c152fe7823625e151241bcb99f994f945da8fcd (patch)
tree67c2f12683b11234993d0eba271b3993870789ab
parent136af04dfe39d7bafae9fc522d56423b938579bc (diff)
Import assigned_to field using a user dictionary
-rwxr-xr-xissues.py29
1 files changed, 26 insertions, 3 deletions
diff --git a/issues.py b/issues.py
index db7623d..bca36e4 100755
--- a/issues.py
+++ b/issues.py
@@ -1,5 +1,18 @@
#!/usr/bin/env python
+
+
+userdict = {
+ # provide your sourceforge -> github user name mappings here.
+ # syntax:
+ # "old_sf_user": "NewGitHubUser",
+ # "another": "line",
+ # "last": "line"
+}
+
+
+#######################################################################
+
import re
import better_exchook
@@ -8,7 +21,7 @@ better_exchook.install()
import sys
import optparse
-parser = optparse.OptionParser(usage='Usage: %prog [options] sfexport.xml githubuser/repo')
+parser = optparse.OptionParser(usage='Usage: %prog [options] sfexport.xml githubuser/repo\n\tYou might want to edit %prog with a text editor and set\n\tup the userdict = {...} accordingly, for mapping user names.')
parser.add_option('-s', '--start', dest='start_id', action='store', help='id of first issue to import; useful for aborted runs')
parser.add_option('-u', '--user', dest='github_user')
opts, args = parser.parse_args()
@@ -169,8 +182,18 @@ def handle_tracker_item(item, issue_title_prefix, statusprintprefix):
cleanup_message_body(followup.find('field',attrs={'name':'body'}).string),
]))
- print statusprintprefix+ 'Creating: %s [%s] (%d comments)%s for SF #%s from %s' % (title, ','.join(labels), len(comments), ' (closed)' if closed else '', item_id, item_date)
- response = rest_call('POST', 'issues', {'title': title, 'body': body, 'labels': labels})
+ assignee_sf = item.find('field',attrs={'name':'assigned_to'}).string.strip().lower()
+ if assignee_sf == "nobody":
+ assignee = None
+ else:
+ try:
+ assignee = userdict[assignee_sf]
+ except KeyError: # not in dict
+ print "Warning: could not convert original assignee '%s': Not found in userdict." % assignee_sf
+ assignee = None
+
+ print statusprintprefix+ 'Creating: %s [%s] (%d comments)%s for SF #%s from %s, assigned to %s' % (title, ','.join(labels), len(comments), ' (closed)' if closed else '', item_id, item_date, assignee)
+ response = rest_call('POST', 'issues', {'title': title, 'body': body, 'labels': labels, 'assignee': assignee})
if response.status_code == 500:
print "ISSUE CAUSED SERVER SIDE ERROR AND WAS NOT SAVED!!! Import will continue."
else: