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