changeset 3:ed543297d759

Import with all the issue comments and their dates
author Radomir Dopieralski <devel@sheep.art.pl>
date Sun, 07 Oct 2012 12:37:02 +0000
parents f182c35f8afb
children 38324ef9b854
files bbbug.py
diffstat 1 files changed, 25 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/bbbug.py	Sun Oct 07 12:02:20 2012 +0000
+++ b/bbbug.py	Sun Oct 07 12:37:02 2012 +0000
@@ -2,11 +2,12 @@
 import requests
 import json
 import sqlite3
+import datetime
 
 
 BASE_URL = 'https://api.bitbucket.org/1.0'
-AUTH = ('username', 'passowrd')
-REPO = 'username/reponame'
+AUTH = ('USERNAME', 'PASSWORD')
+REPO = 'USERNAME/REPOSITORY'
 TYPES = {
     'defect': 'bug',
     'enhancement': 'enhancement',
@@ -27,8 +28,10 @@
     'fixed': 'resolved',
     '': None,
     '--': None,
+    None: None,
 }
 PRIORITIES = {
+    None: None,
     '--': None,
     'High': 'major',
     'Normal': 'minor',
@@ -39,6 +42,8 @@
 def create_issue(**kwargs):
     url = '/'.join([BASE_URL, 'repositories', REPO, 'issues'])
     response = requests.post(url, auth=AUTH, data=kwargs)
+    print response.content
+    return json.loads(response.content)['local_id']
 
 
 def get_cmv(what):
@@ -51,11 +56,15 @@
 def create_cmv(what, name):
     url = '/'.join([BASE_URL, 'repositories', REPO, 'issues', what])
     response = requests.post(url, auth=AUTH, data={'name': name})
-    return json.loads(response.content)['id']
 
 
-def import_issue(summary, status, type_, priority,
-                 milestone, component, version, resolution, description):
+def create_comment(issue_id, text):
+    url = '/'.join([BASE_URL, 'repositories', REPO, 'issues', str(issue_id), 'comments'])
+    response = requests.post(url, auth=AUTH, data={'content': text})
+    print response.content
+
+
+def import_issue(summary, status, type_, priority, milestone, component, version, resolution, description, cmv):
     if component not in cmv['components']:
         create_cmv('components', component)
         cmv['components'].add(component)
@@ -91,10 +100,13 @@
                 continue
             import_issue(summary, status, type_, priority,
                          milestone, component, version, resolution,
-                         description)
+                         description, cmv)
 
 
 def import_issues_db(filename):
+    cmv = {}
+    for what in ('components', 'milestones', 'versions'):
+        cmv[what]  = set(get_cmv(what))
     db = sqlite3.connect(filename)
     for (id_, summary, status, type_, priority, milestone, component,
          version, resolution, description) in db.execute(
@@ -102,13 +114,15 @@
             "component, version, resolution, description FROM ticket"):
             issue_id = import_issue(summary, status, type_, priority,
                          milestone, component, version, resolution,
-                         description)
-            for comment, author in db.execute(
-                "SELECT newvalue, author FORM ticket_change WHERE "
-                "ticket=%s AND field='comment' ORDER BY oldvalue", id_):
+                         description, cmv)
+            for comment, author, time_ in db.execute(
+                "SELECT newvalue, author, time FROM ticket_change WHERE "
+                "ticket=? AND field='comment' ORDER BY oldvalue", (id_,)):
                 if not comment:
                     continue
-                text = u'%s said:\n\n%s' % (author, comment)
+                when = datetime.datetime.utcfromtimestamp(time_/1000000)
+                text = u'%s on %s said:\n\n%s' % (author, when, comment)
                 create_comment(issue_id, text)
 
+
 import_issues_db('trac.db')