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)
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
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)