def check_finished(jobFile, tmpdir):
    """returns successFlag, doneFlag, doneList."""

    doneFlag = ryw_upload.check_robot_finished(jobFile)
    if not doneFlag:
        return (True, False, None)

    try:
        doneList = os.listdir(tmpdir)
    except:
        ryw.give_bad_news("ReadIncomingCDStack.check_finished: listdir failed: " + tmpdir, logging.critical)
        return (False, True, None)
    logging.debug("ReadIncomingCDStack.check_finished: listdir contents: " + repr(doneList))
    return (True, True, doneList)
def wait_for_robot(finishedStuff):
    #
    # monitor robot job status for all the discs to finish.
    #
    totalToWaitFor = len(finishedStuff)
    reallyFinished = 0
    reallyFinishedList = []
    ryw.give_news2('waiting for robot...', logging.info)
    ryw.give_news2('<BR>', logging.info)
    while True:
        for job in finishedStuff:
            tmpImgDir,jrq = job
            done = ryw_upload.check_robot_finished(jrq)
            if done and (not job in reallyFinishedList):
                reallyFinished += 1
                reallyFinishedList.append(job)
                ryw.give_news('robot finished: ' + str(reallyFinished) +
                              ' out of ' + str(totalToWaitFor) + ' disc(s).',
                              logging.info)
                ryw.give_news('  tmp files: ' + tmpImgDir + ' ' + jrq,
                              logging.info)
                ryw.give_news(' ', logging.info)
        if reallyFinished >= totalToWaitFor:
            break
        ryw.give_news2('*', logging.info)
        time.sleep(5)

    #
    # wait 60 seconds before removing temp data.
    #
    delay = 60
    ryw.give_news(' ', logging.info)
    ryw.give_news('will delete all temporary data in ' + str(delay) +
                  ' seconds.  press esc to stop it...', logging.info)
    ryw.give_news(' ', logging.info)
    while delay > 0:
        ryw.give_news2(str(delay) + '...', logging.info)
        time.sleep(5)
        delay -= 5
    ryw.give_news(' ', logging.info)
    ryw.give_news('deleting all temporary data...', logging.info)
        
    #
    # remove all temporary data...
    #
    for job in reallyFinishedList:
        tmpImgDir,jrq = job
        ryw_upload.cleanup_incoming(tmpImgDir, jrq)
    ryw.give_news('all temporary data removed.', logging.info)