Models and Database Schema

Base Models

Contest

class judge.models.Contest(*args, **kwargs)

Model for Contest.

name

Contest name

start_datetime

Start Date and Time for Contest

soft_end_datetime

“Soft” End Date and Time for Contest

hard_end_datetime

“Hard” End Date and Time for Contest

penalty

Penalty for late-submission

public

Is the contest public?

enable_linter_score

Enable linter scoring

enable_poster_score

Enable poster scoring

Problem

class judge.models.Problem(*args, **kwargs)

Model for a Problem.

code

Problem code

contest

Foreign key to contest for the problem

name

Problem name

statement

Problem statement

input_format

Problem input format

output_format

Problem output format

difficulty

Problem difficulty

time_limit

Problem time limit

memory_limit

Problem memory limit

file_exts

Accepted file extensions for submissions to problem

starting_code

Problem starting code

max_score

Maximum score for a test case for the problem

compilation_script

Problem compilation script

test_script

Problem test script

Submission

class judge.models.Submission(*args, **kwargs)

Model for a Submission.

problem

Foreign key to problem for which this is a submission

participant

Foreign key to person who submitted the solution

file_type

File type of submission

submission_file

Submission file

timestamp

Timestamp of submission

judge_score

Judge score

poster_score

Poster score

linter_score

Linter score

final_score

Final score

TestCase

class judge.models.TestCase(*args, **kwargs)

Model for TestCase. Maintains testcases and mapping between TestCase and Problem.

problem

Foreign key to problem for which this is a test case

public

Determines if the test case is a public test case or a private test case

inputfile

Input file for the test case

outputfile

Output file for the test case

Person

class judge.models.Person(*args, **kwargs)

Model for Person.

email

Email ID of the Person

rank

Rank of the Person

Comment

class judge.models.Comment(*args, **kwargs)

Model for Comment.

problem

Foreign key to problem relating to the comment

person

Foreign key to person

commenter

Foreign key to person who commented

timestamp

Timestamp of the comment

comment

Content of the comment

Derived Models

ContestPerson

class judge.models.ContestPerson(*args, **kwargs)

Model for ContestPerson. This maps how (either as a Participant or Poster) persons have access to the contests.

contest

Foreign key to contest in which this person is taking part

person

Foreign key to the actual person

role

Determines if Person is a Poster or a Participant

SubmissionTestCase

class judge.models.SubmissionTestCase(*args, **kwargs)

Model for SubmissionTestCase. Maintains mapping between TestCase and Submission.

submission

Foreign key to submission

testcase

Foreign key to test case

verdict

Verdict by the judge

memory_taken

Virtual memory consumed by the submission

time_taken

Time taken by the submission

message

Message placeholder, used for erroneous submissions

PersonProblemFinalScore

class judge.models.PersonProblemFinalScore(*args, **kwargs)

Model to store the final score assigned to a person for a problem.

problem

Foreign key to problem for which the score is saved

person

Foreign key to person whose submission’s score is saved

score

Final score saved