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