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