From 058bba9ec98bbd49a3e53c944ceead4aeebfc751 Mon Sep 17 00:00:00 2001 From: undefined Date: Wed, 19 May 2021 14:40:34 +0800 Subject: [PATCH] core: fix contest_submit --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/handler/contest.ts | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 13b94aa26..683d456e8 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.26.16", + "version": "2.26.17", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/handler/contest.ts b/packages/hydrooj/src/handler/contest.ts index d4a7103de..7e3ede2dc 100644 --- a/packages/hydrooj/src/handler/contest.ts +++ b/packages/hydrooj/src/handler/contest.ts @@ -8,6 +8,7 @@ import { } from '../error'; import { ProblemDoc, Tdoc, User } from '../interface'; import paginate from '../lib/paginate'; +import { parseConfig } from '../lib/testdataConfig'; import { PERM, PRIV } from '../model/builtin'; import * as contest from '../model/contest'; import * as system from '../model/system'; @@ -265,6 +266,11 @@ class ContestProblemHandler extends Handler { if (!this.tdoc.pids.map((s) => s.toString()).includes(this.pdoc.docId.toString())) { throw new ProblemNotFoundError(domainId, this.tdoc.docId); } + try { + this.pdoc.config = await parseConfig(this.pdoc.config); + } catch (e) { + this.pdoc.config = `Cannot parse: ${e.message}`; + } } // eslint-disable-next-line @@ -344,7 +350,7 @@ class ContestDetailProblemSubmitHandler extends ContestProblemHandler { @param('lang', Types.Name) @param('code', Types.Content) async post(domainId: string, tid: ObjectID, lang: string, code: string) { - if (this.response.body.pdoc.config.langs && !this.response.body.pdoc.config.langs.includes('lang')) { + if (this.pdoc.config.langs && !this.pdoc.config.langs.includes('lang')) { throw new BadRequestError('Language not allowed.'); } await this.limitRate('add_record', 60, 10);