def main(oldproject, newproject): oldprojectPHID = phabdb.get_project_phid(oldproject) old_tasks = phabdb.get_project_tasks(oldprojectPHID) newprojectPHID = phabdb.get_project_phid(newproject) for t in old_tasks: print phabdb.set_related_project(t, newprojectPHID) phabdb.remove_project_tasks(oldprojectPHID)
def create(bugid): phab = Phabricator(config.phab_user, config.phab_cert, config.phab_host) phabm = phabmacros('', '', '') phabm.con = phab pmig = phabdb.phdb(db=config.bzmigrate_db, user=config.bzmigrate_user, passwd=config.bzmigrate_passwd) current = pmig.sql_x("SELECT priority, \ header, \ comments, \ created, \ modified \ FROM bugzilla_meta WHERE id = %s", (bugid,)) if current: import_priority, buginfo, com, created, modified = current[0] else: elog('%s not present for migration' % (bugid,)) return False def get_ref(id): refexists = phabdb.reference_ticket('%s%s' % (bzlib.prepend, id)) if refexists: return refexists[0] buginfo = json.loads(buginfo) com = json.loads(com) bugid = int(bugid) vlog(bugid) vlog(buginfo) ticket = get_ref(bugid) print 'TICKET ', ticket def is_sensitive(name): return name.strip().lower().startswith('security') def project_security_settings(pname): if is_sensitive(pname): ephid = phabdb.get_project_phid('security') edit = ephid else: edit = 'users' view = 'public' return edit, view server = xmlrpclib.ServerProxy(config.Bugzilla_url, use_datetime=True) token_data = server.User.login({'login': config.Bugzilla_login, 'password': config.Bugzilla_password}) token = token_data['token'] #http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/Bug.html#attachments kwargs = { 'ids': [bugid], 'Bugzilla_token': token } #list of projects to add to ticket ptags = [] if buginfo['status'] == 'VERIFIED': vlog("Adding 'verified' to %s" % (ticket,)) ptags.append(('verified', 'tags')) if buginfo['status'].lower() == 'patch_to_review': vlog("Adding 'Patch-For-Review' to %s" % (ticket,)) ptags.append(('Patch-For-Review', 'tags', 'green')) log("status recognized as %s" % (buginfo['status'],)) phids = [] for p in ptags: edit, view = project_security_settings(p[0]) phid = phabm.ensure_project(p[0], edit=edit, view=view) phids.append(phid) if p[1] is not None: vlog("setting project %s icon to %s" % (p[0], p[1])) set_project_icon(p[0], icon=p[1]) for phid in phids: phabdb.set_related_project(ticket, phid) pmig.close() return True