core: check contest info when rejudge

pull/347/head
undefined 3 years ago
parent 0b77ed6b76
commit 5335763f57

@ -413,11 +413,11 @@ export class ProblemDetailHandler extends ProblemHandler {
this.checkPerm(PERM.PERM_REJUDGE_PROBLEM);
// TODO maybe async?
const rdocs = await record.getMulti(domainId, { pid, contest: { $ne: new ObjectID('0'.repeat(24)) } })
.project({ _id: 1 }).toArray();
.project({ _id: 1, contest: 1 }).toArray();
const priority = await record.submissionPriority(this.user._id, -rdocs.length * 5 - 50);
await Promise.all(rdocs.map(
(doc) => record.reset(domainId, doc._id, true)
.then(() => record.judge(domainId, doc._id, priority)),
.then(() => record.judge(domainId, doc._id, priority, doc.contest ? { detail: false } : {})),
));
this.back();
}

@ -162,8 +162,9 @@ class RecordDetailHandler extends Handler {
const priority = await record.submissionPriority(this.user._id, -20);
const rdoc = await record.get(domainId, rid);
if (rdoc) {
const isContest = rdoc.contest && rdoc.contest.toHexString() !== '000000000000000000000000';
await record.reset(domainId, rid, true);
await record.judge(domainId, rid, priority);
await record.judge(domainId, rid, priority, isContest ? { detail: false } : {});
}
this.back();
}

Loading…
Cancel
Save