def run(): with cfbot_util.db() as conn: # get the current Commitfest ID commitfest_id = cfbot_commitfest_rpc.get_current_commitfest_id() # pull in any build results that we are waiting for if "appveyor" in cfbot_config.CI_PROVIDERS: cfbot_appveyor.pull_build_results(conn) if "travis" in cfbot_config.CI_PROVIDERS: cfbot_travis.pull_build_results(conn) # exchange data with the Commitfest app cfbot_commitfest.pull_submissions(conn, commitfest_id) cfbot_commitfest.pull_submissions(conn, commitfest_id + 1) cfbot_commitfest.pull_modified_threads(conn) cfbot_commitfest.push_build_results(conn) # build one patch, if it is time for that cfbot_patch.maybe_process_one(conn) # rebuild a new set of web pages cfbot_web.rebuild(conn, commitfest_id) # garbage collect old build results cfbot_util.gc(conn)
cursor = conn.cursor() cursor2 = conn.cursor() cursor.execute("""SELECT commitfest_id, submission_id, last_email_time FROM submission WHERE last_email_time_checked IS NULL OR last_email_time_checked != last_email_time""") for commitfest_id, submission_id, last_email_time in cursor: url = cfbot_commitfest_rpc.get_thread_url_for_submission(commitfest_id, submission_id) message_id, attachments = cfbot_commitfest_rpc.get_latest_patches_from_thread_url(url) # clear last_branch_message_id because of stupid race with slow updating # archives website ... gah, need different state tracking cursor2.execute("""UPDATE submission SET last_email_time_checked = %s, last_message_id = %s, last_branch_message_id = NULL WHERE commitfest_id = %s AND submission_id = %s""", (last_email_time, message_id, commitfest_id, submission_id)) conn.commit() def push_build_results(conn): pass if __name__ == "__main__": with cfbot_util.db() as conn: commitfest_id = cfbot_commitfest_rpc.get_current_commitfest_id() pull_submissions(conn, commitfest_id) pull_submissions(conn, commitfest_id + 1) pull_modified_threads(conn) push_build_results(conn)