Beispiel #1
0
class GroupReport(models.Model):
    submission_report = models.ForeignKey(SubmissionReport,
                                          on_delete=models.CASCADE)
    group = models.CharField(max_length=30)
    score = ScoreField(null=True, blank=True)
    max_score = ScoreField(null=True, blank=True)
    status = EnumField(submission_statuses)
Beispiel #2
0
class ScoreReport(models.Model):
    submission_report = models.ForeignKey(SubmissionReport, on_delete=models.CASCADE)
    status = EnumField(submission_statuses, blank=True, null=True)
    score = ScoreField(blank=True, null=True)
    max_score = ScoreField(blank=True, null=True)
    comment = models.TextField(blank=True, null=True)

    def get_score_display(self):
        if self.score is None:
            return ''
        return six.text_type(self.score)
Beispiel #3
0
class Submission(models.Model):
    problem_instance = models.ForeignKey(ProblemInstance,
            verbose_name=_("problem"))
    user = models.ForeignKey(User, blank=True, null=True,
            verbose_name=_("user"))
    date = models.DateTimeField(default=datetime.datetime.now, blank=True,
            verbose_name=_("date"))
    kind = EnumField(submission_kinds, default='NORMAL',
            verbose_name=_("kind"))
    score = ScoreField(blank=True, null=True,
            verbose_name=_("score"))
    status = EnumField(submission_statuses, default='?',
            verbose_name=_("status"))
    comment = models.TextField(blank=True,
            verbose_name=_("comment"))

    class Meta:
        verbose_name = _("submission")
        verbose_name_plural = _("submissions")
        get_latest_by = 'id'

    def get_date_display(self):
        return self.problem_instance.contest.controller \
                .render_submission_date(self)

    def get_score_display(self):
        if self.score is None:
            return None
        return self.problem_instance.contest.controller \
                .render_submission_score(self)
Beispiel #4
0
class ScoreReport(models.Model):
    submission_report = models.ForeignKey(SubmissionReport)
    status = EnumField(submission_statuses, blank=True, null=True)
    score = ScoreField(blank=True, null=True)
    comment = models.TextField(blank=True, null=True)

    def get_score_display(self):
        if self.score is None:
            return ''
        return unicode(self.score)
Beispiel #5
0
class Submission(models.Model):
    problem_instance = models.ForeignKey(ProblemInstance,
                                         verbose_name=_("problem"),
                                         on_delete=models.CASCADE)
    user = models.ForeignKey(User,
                             blank=True,
                             null=True,
                             verbose_name=_("user"),
                             on_delete=models.CASCADE)
    date = models.DateTimeField(default=timezone.now,
                                blank=True,
                                verbose_name=_("date"),
                                db_index=True)
    kind = EnumField(submission_kinds,
                     default='NORMAL',
                     verbose_name=_("kind"))
    score = ScoreField(blank=True, null=True, verbose_name=_("score"))
    status = EnumField(submission_statuses,
                       default='?',
                       verbose_name=_("status"))
    comment = models.TextField(blank=True, verbose_name=_("comment"))

    @property
    def problem(self):
        return self.problem_instance.problem

    class Meta(object):
        verbose_name = _("submission")
        verbose_name_plural = _("submissions")
        get_latest_by = 'date'

    def is_scored(self):
        return self.score is not None

    def get_date_display(self, shortened=False):
        return self.problem_instance.controller.render_submission_date(
            self, shortened)

    def get_date_display_shortened(self):
        return self.get_date_display(True)

    def get_score_display(self):
        if self.score is None:
            return None
        return self.problem_instance.controller.render_submission_score(self)

    def __str__(self):
        return u"Submission(%d, %s, %s, %s, %s, %s)" % (
            self.id,
            self.problem_instance.problem.name,
            self.user.username if self.user else None,
            self.date,
            self.kind,
            self.status,
        )
Beispiel #6
0
class TestReport(models.Model):
    __test__ = False
    submission_report = models.ForeignKey(SubmissionReport,
                                          on_delete=models.CASCADE)
    status = EnumField(submission_statuses)
    comment = models.CharField(max_length=255, blank=True)
    score = ScoreField(null=True, blank=True)
    max_score = ScoreField(null=True, blank=True)
    time_used = models.IntegerField(blank=True)
    output_file = FileField(upload_to=make_output_filename,
                            null=True,
                            blank=True)

    test = models.ForeignKey(Test,
                             blank=True,
                             null=True,
                             on_delete=models.SET_NULL)
    test_name = models.CharField(max_length=30)
    test_group = models.CharField(max_length=30)
    test_time_limit = models.IntegerField(null=True, blank=True)
Beispiel #7
0
class UserResultForRound(models.Model):
    """User result (score) for the round.

       Each user can have only one :class:`UserResultForRound` per round.
    """
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    round = models.ForeignKey(Round, on_delete=models.CASCADE)
    score = ScoreField(blank=True, null=True)

    class Meta(object):
        unique_together = ('user', 'round')
Beispiel #8
0
class UserResultForContest(models.Model):
    """Represents the user result (score) for the contest.

       Each user can have only one :class:`UserResultForContest` per contest
       for given type.
    """
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    contest = models.ForeignKey(Contest, on_delete=models.CASCADE)
    score = ScoreField(blank=True, null=True)

    class Meta(object):
        unique_together = ('user', 'contest')
Beispiel #9
0
class UserResultForProblem(models.Model):
    """User result (score) for the problem.

       Each user can have only one class:`UserResultForProblem` per problem
       instance.
    """
    user = models.ForeignKey(User)
    problem_instance = models.ForeignKey(ProblemInstance)
    score = ScoreField(blank=True, null=True)
    status = EnumField(submission_statuses, blank=True, null=True)

    class Meta:
        unique_together = ('user', 'problem_instance')
Beispiel #10
0
class TestReport(models.Model):
    submission_report = models.ForeignKey(SubmissionReport)
    status = EnumField(submission_statuses)
    comment = models.CharField(max_length=255, blank=True)
    score = ScoreField(blank=True)
    time_used = models.IntegerField(blank=True)

    test = models.ForeignKey(Test, blank=True, null=True,
            on_delete=models.SET_NULL)
    test_name = models.CharField(max_length=30)
    test_group = models.CharField(max_length=30)
    test_time_limit = models.IntegerField(null=True, blank=True)
    test_max_score = models.IntegerField(null=True, blank=True)
Beispiel #11
0
class QuestionReport(models.Model):
    submission_report = models.ForeignKey(SubmissionReport,
                                        verbose_name=_("Submission report"))
    comment = models.TextField(blank=True, null=True,
                                    verbose_name=_("Comment"))
    score = ScoreField(verbose_name=_("Score"))
    question = models.ForeignKey(QuizQuestion, blank=True, null=True,
                             on_delete=models.SET_NULL, verbose_name=_("Question"))
    question_max_score = models.IntegerField(verbose_name=_("Question max score"))
    status = EnumField(submission_statuses, default='WA', verbose_name=_("Status"))

    class Meta(object):
        verbose_name = _("Question report")
        verbose_name_plural = _("Question reports")
Beispiel #12
0
class GroupReport(models.Model):
    submission_report = models.ForeignKey(SubmissionReport)
    group = models.CharField(max_length=30)
    score = ScoreField()
    status = EnumField(submission_statuses)
Beispiel #13
0
 class ScoreFieldTestModel(models.Model):
     score = ScoreField(null=True)
Beispiel #14
0
class ScoreReport(models.Model):
    submission_report = models.ForeignKey(SubmissionReport)
    status = EnumField(submission_statuses, blank=True, null=True)
    score = ScoreField(blank=True, null=True)
    comment = models.TextField(blank=True, null=True)