Mercurial > trac2bitbucket
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')
