# read in the xml, and create the issues. """ issues API: http://confluence.atlassian.com/display/BITBUCKET/Issues title: The title of the new issue. content: The content of the new issue. component: The component associated with the issue. milestone: The milestone associated with the issue. version: The version associated with the issue. responsible: The username of the person responsible for the issue. status: The status of the issue (new, open, resolved, on hold, invalid, duplicate, or wontfix). kind: The kind of issue (bug, enhancement, or proposal). How to delete an issue: curl X DELETE https://api.bitbucket.org/1.0/repositories/pygame/pygame/issues/3 Add --user username:password afterwards to authenticate, otherwise it does not work. """ import os,sys,urllib issue_keys = "title content component milestone version responsible status kind".split() valid_status = "new open resolved hold invalid duplicate wontfix".split() valid_kind = "bug enhancement proposal".split() def validate_issue(issue): for k in issue_keys: if k not in issue: raise ValueError("%s not in issue" % k) if issue.get('status') not in valid_status: raise ValueError(":%s: status is not one of %s" % (issue.get('status'), valid_status)) if issue.get('kind') not in valid_kind: raise ValueError(":%s: kind is not one of %s" % (issue.get('kind'), valid_kind)) def create_issue(issue): validate_issue(issue) # create http post data from issue issue_data = urllib.urlencode(issue) return issue_data def test_create_issue(): i = dict(title="just a test issue", content="some content to test", component="pygameissues", milestone="bitbucketmigration", version="1.9.2", responsible="illume", status="new", kind="bug") print create_issue(i) test_create_issue() # read bugzilla xml data. #convert the bugzilla data to an issue.