Skip to content

Commit 75b6c85

Browse files
authored
Merge pull request #433 from pnu-code-place/release-1.3.6
Release 1.3.6
2 parents 0cb2d2b + b755a69 commit 75b6c85

26 files changed

Lines changed: 2803 additions & 558 deletions

backend/.coveragerc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ omit = */urls/*
55
*/migrations/*
66
*urls.py
77
utils/xss_filter.py
8+
*/MagicMock/*

backend/judge/dispatcher.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -180,14 +180,19 @@ def judge(self):
180180
self.submission.info = resp
181181
self._compute_statistic_info(resp["data"])
182182
error_test_case = list(filter(lambda case: case["result"] != 0, resp["data"]))
183-
# ACM모드: 모든 테스트 케이스가 정답이면 Accepted, 그렇지 않으면 첫번째 오답 테스트케이스의 상태를 가짐
184-
# OI모드: 모든 테스트 케이스가 맞으면 Accepted, 모두 틀리면 첫번째 오답 테스트케이스의 상태, 그렇지 않으면 Partially Accepted
183+
185184
if not error_test_case:
186185
self.submission.result = JudgeStatus.ACCEPTED
187-
elif self.problem.rule_type == ProblemRuleType.ACM or len(error_test_case) == len(resp["data"]):
188-
self.submission.result = error_test_case[0]["result"]
189186
else:
190-
self.submission.result = JudgeStatus.PARTIALLY_ACCEPTED
187+
# 첫번째 오답 테스트 케이스의 인덱스를 저장, 추후 연습 문제에서 오답 테스트 케이스 힌트를 보여주기 위해 사용
188+
self.submission.first_failed_tc_idx = int(error_test_case[0]["test_case"])
189+
190+
# ACM모드: 모든 테스트 케이스가 정답이면 Accepted, 그렇지 않으면 첫번째 오답 테스트케이스의 상태를 가짐
191+
# OI모드: 모든 테스트 케이스가 맞으면 Accepted, 모두 틀리면 첫번째 오답 테스트케이스의 상태, 그렇지 않으면 Partially Accepted
192+
if self.problem.rule_type == ProblemRuleType.ACM or len(error_test_case) == len(resp["data"]):
193+
self.submission.result = error_test_case[0]["result"]
194+
else:
195+
self.submission.result = JudgeStatus.PARTIALLY_ACCEPTED
191196
self.submission.save()
192197

193198
if self.contest_id:
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 3.2.25 on 2025-07-23 06:04
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('submission', '0001_initial'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='submission',
15+
name='first_failed_tc_idx',
16+
field=models.IntegerField(default=None, null=True),
17+
),
18+
]

backend/submission/models.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ class Submission(models.Model):
4040
# {time_cost: "", memory_cost: "", err_info: "", score: 0}
4141
statistic_info = JSONField(default=dict)
4242
ip = models.TextField(null=True)
43+
# 최초로 실패한 테스트 케이스의 인덱스, 연습 문제에서 틀린 테스트케이스를 보여주기 위해 사용됩니다.
44+
first_failed_tc_idx = models.IntegerField(null=True, default=None)
4345

4446
def check_user_permission(self, user, check_share=True):
4547
if self.user_id == user.id or user.is_super_admin() or user.can_mgmt_all_problem(

0 commit comments

Comments
 (0)