def analyze_pack(pack, workdir, token, all, source_only, no_group_venue, outdir): packname = os.path.basename(pack)[:4] if packname[3] == "0": packname = packname[:3] with common.extract_and_connect(pack, workdir): users = Database.get_users() if token: users = list(filter(lambda u: u["token"] in token, users)) if not users: return False for user in users: token = user["token"] print("Found user %s %s" % (user["name"], user["surname"])) tasks = common.get_tasks() num_submissions = 0 for task in tasks: submissions = Database.get_submissions(token, task) num_submissions += len(submissions) if no_group_venue: taskdir = os.path.join(outdir, task, token) else: taskdir = os.path.join(outdir, packname, task, token) os.makedirs(taskdir, exist_ok=True) if not all: best = max(submissions, key=lambda x: x["score"], default=None) if best: submissions = [best] for submission in submissions: store_submission(submission, taskdir, workdir, source_only) print(" > %d submissions" % num_submissions, file=sys.stderr) return len(token) == 1 and num_submissions > 0
def get_submissions(self, user, task): """ GET /user/<token>/submissions/<task> """ submissions = [] for sub in Database.get_submissions(user["token"], task["name"]): submissions.append(InfoHandler.patch_submission(sub)) return {"items": submissions}