Exemple #1
0
async def wait_submission_finish(bot, channel, id, user, contest):
    if contest is not None:
        await contest.on_start_submission(id)
    while True:
        try:
            sub = database.judgeserver.judges.finished_submissions[id]
            with await database.locks["submissions"][id]:
                database.add_submission(sub)
                sub = database.get_submissions(id=id, contest_subs=True)[0]
                await sub.user.update_points()
                if contest is not None:
                    await contest.on_finish_submission(sub)
            print(sub)
            info = {
                'bot': bot,
                'channel': channel if contest is None else user.discord_user,
                'user': user,
                'content': [str(id)],
            }
            await handlers.Submissions().view(info,
                                              live_submission=True,
                                              submission=sub)
            return
        except KeyError:
            pass
        await asyncio.sleep(0.5)
Exemple #2
0
async def get_submission(self, info):
    try:
        return database.get_submissions(id=int(info['content'][0]))[0]
    except (KeyError, IndexError):
        await info['bot'].send_message(info['channel'],
                                       "Please enter a valid submission id.")
    return None
Exemple #3
0
    async def list(self, info):
        current_list, page_num = await get_current_list(
            info, database.get_submissions())
        if current_list is None:
            return
        em = Embed(title="Submissions",
                   description="Submission page {}".format(page_num),
                   color=BOT_COLOUR)
        for x in current_list:
            value = """\
By: {0}
Problem: {1}
Score: {2}/{3}
Verdict: {4}
            """.format(x.user.discord_user, x._problem, x.points, x.total,
                       x.result)
            em.add_field(name="Submission #{}".format(x.submission_id),
                         value=value)
        await info['bot'].send_message(info['channel'], embed=em)
                     username=MONGO_PYTHON_DAEMON_USERNAME,
                     password=MONGO_PYTHON_DAEMON_PASSWORD,
                     authSource=MONGO_INITDB_DATABASE,
                     authMechanism='SCRAM-SHA-1')

db = client[MONGO_INITDB_DATABASE]
sub_coll = db['reddit_submissions']
comm_coll = db['reddit_comments']
sub_coll.delete_many({})
comm_coll.delete_many({})

print("Fetching data from {} to {}".format(starting_time.isoformat(),
                                           ending_time.isoformat()))
r_sub = get_submissions(Config.URL_SUB,
                        field_list=Config.SUBMISSION_FIELD_LIST,
                        subreddit_list=Config.SUBREDDIT_LIST,
                        after=int(starting_time.timestamp()),
                        before=int(ending_time.timestamp()))
print("Fetched {} reddit submissions".format(len(r_sub.json()['data'])))
if r_sub.json()['data']:
    sub_coll.insert_many(r_sub.json()['data'])
    for sub in r_sub.json()['data']:
        #Get list of comments
        r_ids = get_comments_id(Config.URL_COMMENTS_ID,
                                r_sub.json()['data'][0]['id'])
        id_list = r_ids.json()['data']
        if id_list:
            r_comments = get_comments(Config.URL_COMMENTS,
                                      field_list=Config.COMMENT_FIELD_LIST,
                                      id_list=id_list)
            comm_coll.insert_many(r_comments.json()['data'])
 def submissions(self):
     return database.get_submissions(self.id)