From 909eaec7d7061af30289602c404e7582d37654a4 Mon Sep 17 00:00:00 2001 From: Tudor Date: Sun, 1 Mar 2015 17:30:52 -0500 Subject: [PATCH] Add Hack model References #12 --- judge/models.py | 55 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/judge/models.py b/judge/models.py index a32495830c..4c6196b652 100644 --- a/judge/models.py +++ b/judge/models.py @@ -252,7 +252,6 @@ class Meta: ('AB', 'Aborted'), ) - class Submission(models.Model): STATUS = ( ('QU', 'Queued'), @@ -337,6 +336,60 @@ class Meta: ) +HACK_RESULT = ( + ('AC', 'Successful Hack'), + ('WA', 'Unsuccessful Hack'), + ('TLE', 'Time Limit Exceeded'), + ('MLE', 'Memory Limit Exceeded'), + ('OLE', 'Output Limit Exceeded'), + ('IR', 'Invalid Return'), + ('RTE', 'Runtime Error'), + ('CE', 'Compile Error'), + ('IE', 'Internal Error'), + ('AB', 'Aborted'), +) + +class Hack(models.Model): + STATUS = ( + ('QU', 'Queued'), + ('C', 'Compiled'), + ('H', 'Hacking'), + ('D', 'Completed'), + ('IE', 'Internal Error'), + ) + RESULT = HACK_RESULT + USER_DISPLAY_CODES = { + 'AC': 'Successful Hack', + 'WA': 'Unsuccessful Hack', + 'SC': "Short Circuited", + 'TLE': 'Time Limit Exceeded', + 'MLE': 'Memory Limit Exceeded', + 'OLE': 'Output Limit Exceeded', + 'IR': 'Invalid Return', + 'RTE': 'Runtime Error', + 'CE': 'Compile Error', + 'IE': 'Internal Error (judging server error)', + 'QU': 'Queued', + 'C': 'Compiled', + 'G': 'Grading', + 'D': 'Completed', + 'AB': 'Aborted', + } + + hacker = models.ForeignKey(Profile) + target_submission = models.ForeignKey(Submission) + problem = models.ForeignKey(Problem) + date = models.DateTimeField(verbose_name='Hack time', auto_now_add=True) + time = models.FloatField(verbose_name='Execution time', null=True, db_index=True) + memory = models.FloatField(verbose_name='Memory usage', null=True) + language = models.ForeignKey(Language, verbose_name='Hack language') + source = models.TextField(verbose_name='Source code', max_length=65536) + status = models.CharField(max_length=2, choices=STATUS, default='QU', db_index=True) + result = models.CharField(max_length=3, choices=HACK_RESULT, default=None, null=True, + blank=True, db_index=True) + error = models.TextField(verbose_name='Compile errors', null=True, blank=True) + feedback = models.CharField(max_length=50, verbose_name='Judging feedback', blank=True) + class SubmissionTestCase(models.Model): RESULT = SUBMISSION_RESULT