def update_submission_score(self, submission): try: report = SubmissionReport.objects.get(submission=submission, status='ACTIVE', kind='FULL') score_report = report.score_report if score_report.status in IGNORED_STATUSES: submission.score = None else: submission.score = BinaryScore(score_report.status == 'OK') submission.status = score_report.status except SubmissionReport.DoesNotExist: submission.score = None if SubmissionReport.objects.filter(submission=submission, status='ACTIVE', kind='FAILURE'): submission.status = 'SE' else: submission.status = '?' submission.save()
def acm_score_aggregator(group_results): if not group_results: return None, None, 'OK' status = aggregate_statuses([result['status'] for result in group_results.itervalues()]) return BinaryScore(status == 'OK'), BinaryScore(True), status