diff --git a/server.py b/server.py index 3bf333b..be8f29d 100644 --- a/server.py +++ b/server.py @@ -55,6 +55,15 @@ class Meta: database = db +class QuestionStatus(Model): + question = ForeignKeyField(Question) + user = TextField() + status = TextField() + + class Meta: + database = db + + class ContestProblems(Model): contest = ForeignKeyField(Contest, backref="questions") question = ForeignKeyField(Question) @@ -76,7 +85,7 @@ class Meta: db.connect() -db.create_tables([User, Session, Submission, ContestProblems, Contest, Question]) +db.create_tables([User, Session, Submission, ContestProblems, Contest, Question, QuestionStatus]) def login_required(function): @@ -236,9 +245,16 @@ def question(code, number): .dicts() .get() ) - return bottle.template( - "question.html", question_number=number, contest=code, question=statement - ) + user = Session.get(Session.token == bottle.request.get_cookie("s_id")).user + question_status = QuestionStatus.select().where((QuestionStatus.question == number) & (QuestionStatus.user == user)) + if question_status.count() == 0: + return bottle.template( + "question.html", question_number=number, contest=code, question=statement, question_status='Not Submitted' + ) + else: + return bottle.template( + "question.html", question_number=number, contest=code, question=statement, question_status='Submitted' + ) @app.get("/contest/") @@ -399,6 +415,12 @@ def file_upload(code, number): ) except Exception as e: bottle.abort(500, str(e)) + try: + QuestionStatus.get_or_create( + question=number, user=user, status='Attempted' + ) + except Exception as e: + bottle.abort(500, str(e)) if not ans: return "Wrong Answer!!" else: diff --git a/views/question.html b/views/question.html index de10aaa..4efd073 100644 --- a/views/question.html +++ b/views/question.html @@ -6,6 +6,7 @@

Submission Page

{{question["question_statement"]}}

+

Status : {{question_status}}

Download Test Case