From 3e517aa840691f850888599d179c5b1d1b765b7e Mon Sep 17 00:00:00 2001 From: undefined Date: Tue, 28 Sep 2021 23:56:57 +0800 Subject: [PATCH] core: use problem.md for export --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/handler/import.ts | 11 +++-------- packages/hydrooj/src/logger.ts | 2 +- packages/ui-default/components/zipDownloader/index.js | 10 +++++----- packages/ui-default/package.json | 2 +- packages/vjudge/src/providers/codeforces.ts | 2 +- 6 files changed, 12 insertions(+), 17 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index f075c1763..db25f087a 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.39.7", + "version": "2.39.8", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", diff --git a/packages/hydrooj/src/handler/import.ts b/packages/hydrooj/src/handler/import.ts index 01cb66ffc..01b073d36 100644 --- a/packages/hydrooj/src/handler/import.ts +++ b/packages/hydrooj/src/handler/import.ts @@ -114,13 +114,6 @@ TaskModel.Worker.addHandler('import.syzoj', syzojSync); class ProblemImportSYZOJHandler extends Handler { async get() { this.response.template = 'problem_import_syzoj.html'; - this.response.body = { - path: [ - ['Hydro', 'homepage'], - ['problem_main', 'problem_main'], - ['problem_import_syzoj', null], - ], - }; } async v2(domainId: string, target: string, hidden = false, url: string) { @@ -359,8 +352,10 @@ class ProblemImportHydroHandler extends Handler { const pdoc: ProblemDoc = yaml.load(content) as any; const current = await problem.get(domainId, pdoc.pid); const pid = current ? undefined : pdoc.pid; + const overrideContent = fs.existsSync(path.join(tmpdir, i, 'problem.md')) + ? fs.readFileSync(path.join(tmpdir, i, 'problem.md'), 'utf8') : ''; const docId = await problem.add( - domainId, pid, pdoc.title, pdoc.content, + domainId, pid, pdoc.title, overrideContent || pdoc.content, keepUser ? pdoc.owner : this.user._id, pdoc.tag, pdoc.hidden, ); if (files.includes('testdata')) { diff --git a/packages/hydrooj/src/logger.ts b/packages/hydrooj/src/logger.ts index 3a7d12479..34ade084d 100644 --- a/packages/hydrooj/src/logger.ts +++ b/packages/hydrooj/src/logger.ts @@ -19,7 +19,7 @@ export class Logger { static readonly INFO = 2; static readonly WARN = 2; static readonly DEBUG = 3; - static baseLevel = process.env.DEV ? 3 : 2; + static baseLevel = process.env.DEV ? 4 : 2; static levels: Record = {}; private code: number; private displayName: string; diff --git a/packages/ui-default/components/zipDownloader/index.js b/packages/ui-default/components/zipDownloader/index.js index c1c524b32..6fc457152 100644 --- a/packages/ui-default/components/zipDownloader/index.js +++ b/packages/ui-default/components/zipDownloader/index.js @@ -5,7 +5,6 @@ import pipeStream from 'vj/utils/pipeStream'; import i18n from 'vj/utils/i18n'; import request from 'vj/utils/request'; import Notification from 'vj/components/notification'; -import { pick } from 'lodash'; let isBeforeUnloadTriggeredByLibrary = !window.isSecureContext; function onBeforeUnload(e) { @@ -47,7 +46,7 @@ export default async function download(name, targets) { }); } } catch (e) { - // eslint-disable-next-line no-use-before-define + // eslint-disable-next-line @typescript-eslint/no-use-before-define stopDownload(); Notification.error(i18n('Download Error', [targets[i].filename, e.toString()])); } @@ -73,17 +72,18 @@ export async function downloadProblemSet(pids, name = 'Export') { filename: `${pid}/problem.yaml`, content: dump({ pid: pdoc.pid, - content: pdoc.content, owner: pdoc.owner, title: pdoc.title, tag: pdoc.tag, nSubmit: pdoc.nSubmit, nAccept: pdoc.nAccept, - data: (pdoc.data || []).map((i) => pick(i, ['name'])), - additional_file: (pdoc.additional_file || []).map((i) => pick(i, ['name'])), difficulty: pdoc.difficulty, }), }); + targets.push({ + filename: `${pid}/problem.md`, + content: pdoc.content, + }); let { links } = await request.post( `/d/${UiContext.domainId}/p/${pid}/files`, { operation: 'get_links', files: (pdoc.data || []).map((i) => i.name), type: 'testdata' }, diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index 728f5e743..303fc912e 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.22.8", + "version": "4.22.9", "author": "undefined ", "license": "AGPL-3.0", "main": "hydro.js", diff --git a/packages/vjudge/src/providers/codeforces.ts b/packages/vjudge/src/providers/codeforces.ts index 04a2d3527..51d3f74eb 100644 --- a/packages/vjudge/src/providers/codeforces.ts +++ b/packages/vjudge/src/providers/codeforces.ts @@ -73,7 +73,7 @@ export default class CodeforcesProvider implements IBasicProvider { this.cookie = header['set-cookie']; } const $dom = new JSDOM(html); - if ($dom.window.document.body.children.length < 2 && html.length < 1000) { + if ($dom.window.document.body.children.length < 2 && html.length < 512) { throw new Error($dom.window.document.body.textContent); } return $dom.window.document.querySelector('meta[name="X-Csrf-Token"]').getAttribute('content');