changeset 2:f182c35f8afb

Read issues and comments from the db
author Radomir Dopieralski <devel@sheep.art.pl>
date Sun, 07 Oct 2012 12:02:20 +0000
parents 3e7e5534b16e
children ed543297d759
files bbbug.py
diffstat 1 files changed, 49 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- a/bbbug.py	Sun Oct 07 10:36:39 2012 +0000
+++ b/bbbug.py	Sun Oct 07 12:02:20 2012 +0000
@@ -1,6 +1,7 @@
 import csv
 import requests
 import json
+import sqlite3
 
 
 BASE_URL = 'https://api.bitbucket.org/1.0'
@@ -50,9 +51,35 @@
 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_issues(filename):
+def import_issue(summary, status, type_, priority,
+                 milestone, component, version, resolution, description):
+    if component not in cmv['components']:
+        create_cmv('components', component)
+        cmv['components'].add(component)
+    if milestone not in cmv['milestones']:
+        create_cmv('milestones', milestone)
+        cmv['milestones'].add(milestone)
+    if version not in cmv['versions']:
+        create_cmv('versions', version)
+        cmv['versions'].add(version)
+    issue = {
+        'status': STATUSES[resolution] or STATUSES[status],
+        'priority': PRIORITIES[priority],
+        'title': summary,
+        'content': description,
+        'kind': TYPES[type_],
+        'component': component,
+        'milestone': milestone,
+        'version': version,
+        'responsible': None,
+    }
+    return create_issue(**issue)
+
+
+def import_issues_csv(filename):
     cmv = {}
     for what in ('components', 'milestones', 'versions'):
         cmv[what]  = set(get_cmv(what))
@@ -62,27 +89,26 @@
              keywords, cc, description) in csv.reader(f):
             if id_ == 'id':
                 continue
-            if component not in cmv['components']:
-                create_cmv('components', component)
-                cmv['components'].add(component)
-            if milestone not in cmv['milestones']:
-                create_cmv('milestones', milestone)
-                cmv['milestones'].add(milestone)
-            if version not in cmv['versions']:
-                create_cmv('versions', version)
-                cmv['versions'].add(version)
-            issue = {
-                'status': STATUSES[resolution] or STATUSES[status],
-                'priority': PRIORITIES[priority],
-                'title': summary,
-                'content': description,
-                'kind': TYPES[type_],
-                'component': component,
-                'milestone': milestone,
-                'version': version,
-                'responsible': None,
-            }
-            create_issue(**issue)
+            import_issue(summary, status, type_, priority,
+                         milestone, component, version, resolution,
+                         description)
 
 
-import_issues('issues.csv')
+def import_issues_db(filename):
+    db = sqlite3.connect(filename)
+    for (id_, summary, status, type_, priority, milestone, component,
+         version, resolution, description) in db.execute(
+            "SELECT id, summary, status, type, priority, milestone, "
+            "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_):
+                if not comment:
+                    continue
+                text = u'%s said:\n\n%s' % (author, comment)
+                create_comment(issue_id, text)
+
+import_issues_db('trac.db')