Beispiel #1
0
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
Beispiel #2
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}