def fetch_replays(replayfilters={},tagfilters={},playerfilters={},groupfilters={},queue=None):
    logger.info("Fetching replays")
    with DB_Manager() as mann:
        if replayfilters  or tagfilters or playerfilters or groupfilters:
            replays = mann.filter_replays(replayfilters,tagfilters,playerfilters,groupfilters)
            logger.debug("Fetched replays from database with parameters %s %s %s %s",
                replayfilters,tagfilters,playerfilters,groupfilters)
        else:
            replays = mann.get_all("replays","date_time desc")
            logger.debug("Fetched all replays (paramless)")

    # print "REPLAYS: ",replays

    for replay in replays:
        if not os.path.isfile(rl_paths.tracked_folder(replay[1])) and os.path.isfile(rl_paths.backup_folder(replay[1])):
            shutil.copy2(rl_paths.backup_folder(replay[1]), rl_paths.tracked_folder(replay[1]))
            logger.info("Restored missing replay %s from backup",replay[1])
        # print "Putting replay",replay
        queue.put(
            (replay, os.path.isfile(rl_paths.demo_folder(replay[1])))
            )

    logger.info("Inserted replays into tracked_replay_list")
    print "Fetch replays done"
    queue.put(QueueOp.STOP)
def copy_to_staging(variables, queue):
    if not os.path.isfile(rl_paths.demo_folder(variables[1])):
        shutil.copy2(rl_paths.tracked_folder(variables[1]),rl_paths.demo_folder(variables[1]))
        logger.info("Copied %s to demo_folder",variables[1])

    if not os.path.isfile(rl_paths.tracked_folder(variables[1])):
        shutil.copy2(rl_paths.demo_folder(variables[1]),rl_paths.tracked_folder(variables[1]))
        logger.info("Copied %s to tracked folder",variables[1])

    if not os.path.isfile(rl_paths.backup_folder(variables[1])):
        shutil.copy2(rl_paths.demo_folder(variables[1]),rl_paths.backup_folder(variables[1]))
        logger.info("Copied %s to backup folder",variables[1])
    queue.put(QueueOp.STOP)
def restore(var):

    print "Restoring demo folder"
    logger.info("Restoring demo folder to its original state")
    logger.info("Path to backups: %s",rl_paths.backup_folder())
    logger.debug("Files there: %s",os.listdir(rl_paths.backup_folder()))
    for f in os.listdir(rl_paths.backup_folder()):
        f = os.path.splitext(f)[0]
        src = rl_paths.backup_folder(f)
        dst = rl_paths.demo_folder(f)
        shutil.copy2(src,dst)
        logger.debug("Copied from %s to %s",src,dst)

    shutil.rmtree(rl_paths.tracked_folder())
    shutil.rmtree(rl_paths.untracked_folder())
    logger.info("Removed tracked and untracked folder")
    logger.info("Restore Complete!")
    var.set("Demo folder restored!")
def _insert_new_replay_into_database(replay):
    try:
        with DB_Manager(debug=True) as dmann:
            #Create a replay entry and get the id.

            c = dmann.add_replay(filename=replay['filename'],name=replay['name'], mapname=replay['mapname'], date_time=replay['date'])
            idx = c.lastrowid
            logger.debug("Created replay: %s",replay)

            #Make list of tuples to be inserted into database
            teams = [(idx,)+player[1:] for player in replay['teams']]
            logger.debug("Inserting teams: %s",teams)
            dmann.add_many_team(teams)
            dmann.add_note(idx,"")
            logger.info("Replay added")
            shutil.copy2(rl_paths.demo_folder(replay['filename']),rl_paths.backup_folder(replay['filename']))
            shutil.move(rl_paths.demo_folder(replay['filename']),rl_paths.backup_folder(replay['filename']))

    except sqlite3.IntegrityError, e:
        self.notif_text.set("ERROR: COULD NOT CREATE ENTRY\n"+str(e))
        logger.error("Could not create entry")
        logger.error("Error : %s",e)
        raise