mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
core: 修复错误
* 无法下载测试数据的问题 * 无法导出作业成绩单的问题 * cli 模式无法载入的问题 * syzoj 导入跳转错误的问题
This commit is contained in:
1 parent
66639b14de
commit
f0b9bee937
8 files changed
+19
-26
No files matched your search
@@ -71,6 +71,7 @@ async function postInit() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function cacheOpen(domainId: string, pid: string, files: any[]) {
|
async function cacheOpen(domainId: string, pid: string, files: any[]) {
|
||||||
|
console.log(files);
|
||||||
const filePath = path.join(getConfig('cache_dir'), domainId, pid);
|
const filePath = path.join(getConfig('cache_dir'), domainId, pid);
|
||||||
await fs.ensureDir(filePath);
|
await fs.ensureDir(filePath);
|
||||||
if (!files.length) throw new SystemError('Problem data not found.');
|
if (!files.length) throw new SystemError('Problem data not found.');
|
||||||
@@ -82,7 +83,7 @@ async function postInit() {
|
|||||||
for (const file of files) {
|
for (const file of files) {
|
||||||
version[file.name] = file.etag;
|
version[file.name] = file.etag;
|
||||||
if (etags[file.name] !== file.etag) {
|
if (etags[file.name] !== file.etag) {
|
||||||
await storage.get(`${file.prefix}${file.name}`, path.join(filePath, file.name));
|
await storage.get(`problem/${domainId}/${pid}/testdata/${file.name}`, path.join(filePath, file.name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fs.writeFileSync(path.join(filePath, 'etags'), JSON.stringify(version));
|
fs.writeFileSync(path.join(filePath, 'etags'), JSON.stringify(version));
|
||||||
|
|||||||
@@ -538,6 +538,7 @@ problem_create: 创建题目
|
|||||||
problem_detail: 题目详情
|
problem_detail: 题目详情
|
||||||
problem_edit: 编辑题目
|
problem_edit: 编辑题目
|
||||||
problem_files: 题目文件
|
problem_files: 题目文件
|
||||||
|
problem_import_syzoj: 从 SYZOJ 导入题目
|
||||||
problem_import: 导入题目
|
problem_import: 导入题目
|
||||||
problem_main: 题库
|
problem_main: 题库
|
||||||
problem_settings: 题目设置
|
problem_settings: 题目设置
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import {
|
|||||||
import options from '../options';
|
import options from '../options';
|
||||||
import * as bus from '../service/bus';
|
import * as bus from '../service/bus';
|
||||||
import db from '../service/db';
|
import db from '../service/db';
|
||||||
import storage from '../service/storage';
|
|
||||||
|
|
||||||
const COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
|
const COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
|
||||||
const ARR = /=>.*$/mg;
|
const ARR = /=>.*$/mg;
|
||||||
@@ -26,6 +25,9 @@ async function cli() {
|
|||||||
if (!global.Hydro.model[modelName]) {
|
if (!global.Hydro.model[modelName]) {
|
||||||
return console.error(`Model ${modelName} doesn't exist.`);
|
return console.error(`Model ${modelName} doesn't exist.`);
|
||||||
}
|
}
|
||||||
|
if (!func) {
|
||||||
|
return console.log(Object.keys(global.Hydro.model[modelName]));
|
||||||
|
}
|
||||||
if (!global.Hydro.model[modelName][func]) {
|
if (!global.Hydro.model[modelName][func]) {
|
||||||
return console.error(`Function ${func} doesn't exist in model ${modelName}.`);
|
return console.error(`Function ${func} doesn't exist in model ${modelName}.`);
|
||||||
}
|
}
|
||||||
@@ -65,6 +67,7 @@ export async function load() {
|
|||||||
const sopts = {
|
const sopts = {
|
||||||
endPoint, accessKey, secretKey, bucket, region, endPointForUser, endPointForJudge,
|
endPoint, accessKey, secretKey, bucket, region, endPointForUser, endPointForJudge,
|
||||||
};
|
};
|
||||||
|
const storage = require('../service/storage');
|
||||||
await storage.start(sopts);
|
await storage.start(sopts);
|
||||||
for (const i of builtinLib) require(`../lib/${i}`);
|
for (const i of builtinLib) require(`../lib/${i}`);
|
||||||
await lib(pending, fail);
|
await lib(pending, fail);
|
||||||
|
|||||||
@@ -370,7 +370,7 @@ class HomeworkScoreboardDownloadHandler extends HomeworkHandler {
|
|||||||
html: (rows) => this.renderHTML('contest_scoreboard_download_html.html', { rows }),
|
html: (rows) => this.renderHTML('contest_scoreboard_download_html.html', { rows }),
|
||||||
};
|
};
|
||||||
if (!getContent[ext]) throw new ValidationError('ext');
|
if (!getContent[ext]) throw new ValidationError('ext');
|
||||||
const [, rows] = await this.getScoreboard(domainId, tid, true, document.TYPE_CONTEST);
|
const [, rows] = await this.getScoreboard(domainId, tid, true, document.TYPE_HOMEWORK);
|
||||||
this.binary(await getContent[ext](rows), `${this.tdoc.title}.${ext}`);
|
this.binary(await getContent[ext](rows), `${this.tdoc.title}.${ext}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -247,12 +247,12 @@ class ProblemImportSYZOJHandler extends Handler {
|
|||||||
domainId, targetPid, hidden,
|
domainId, targetPid, hidden,
|
||||||
protocol, host, pid, false,
|
protocol, host, pid, false,
|
||||||
);
|
);
|
||||||
this.response.body = { pid: pid || docId };
|
this.response.body = { pid: targetPid || docId };
|
||||||
this.response.redirect = this.url('problem_settings', { pid: pid || docId });
|
this.response.redirect = this.url('problem_settings', { pid: targetPid || docId });
|
||||||
} else {
|
} else {
|
||||||
const docId = await this.v2(domainId, targetPid, hidden, url);
|
const docId = await this.v2(domainId, targetPid, hidden, url);
|
||||||
this.response.body = { pid: pid || docId };
|
this.response.body = { pid: targetPid || docId };
|
||||||
this.response.redirect = this.url('problem_settings', { pid: pid || docId });
|
this.response.redirect = this.url('problem_settings', { pid: targetPid || docId });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -185,9 +185,7 @@ declare module './model/problem' {
|
|||||||
difficultyAdmin?: number,
|
difficultyAdmin?: number,
|
||||||
difficultySetting?: any,
|
difficultySetting?: any,
|
||||||
|
|
||||||
/**
|
/** @deprecated */
|
||||||
* @deprecated
|
|
||||||
*/
|
|
||||||
config: any,
|
config: any,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,9 +18,7 @@ export const PERM = {
|
|||||||
// Problem and Record
|
// Problem and Record
|
||||||
PERM_CREATE_PROBLEM: 1n << 4n,
|
PERM_CREATE_PROBLEM: 1n << 4n,
|
||||||
PERM_EDIT_PROBLEM: 1n << 5n,
|
PERM_EDIT_PROBLEM: 1n << 5n,
|
||||||
/**
|
/** @deprecated */
|
||||||
* @deprecated
|
|
||||||
*/
|
|
||||||
PERM_EDIT_PROBLEM_SELF: 1n << 6n,
|
PERM_EDIT_PROBLEM_SELF: 1n << 6n,
|
||||||
PERM_VIEW_PROBLEM: 1n << 7n,
|
PERM_VIEW_PROBLEM: 1n << 7n,
|
||||||
PERM_VIEW_PROBLEM_HIDDEN: 1n << 8n,
|
PERM_VIEW_PROBLEM_HIDDEN: 1n << 8n,
|
||||||
@@ -237,21 +235,13 @@ export const PRIV = {
|
|||||||
PRIV_DEFAULT: 0,
|
PRIV_DEFAULT: 0,
|
||||||
PRIV_NEVER: 1 << 20,
|
PRIV_NEVER: 1 << 20,
|
||||||
|
|
||||||
/**
|
/** @deprecated */
|
||||||
* @deprecated
|
|
||||||
*/
|
|
||||||
PRIV_CREATE_FILE: 1 << 16,
|
PRIV_CREATE_FILE: 1 << 16,
|
||||||
/**
|
/** @deprecated */
|
||||||
* @deprecated
|
|
||||||
*/
|
|
||||||
PRIV_UNLIMITED_QUOTA: 1 << 17,
|
PRIV_UNLIMITED_QUOTA: 1 << 17,
|
||||||
/**
|
/** @deprecated */
|
||||||
* @deprecated
|
|
||||||
*/
|
|
||||||
PRIV_DELETE_FILE: 1 << 18,
|
PRIV_DELETE_FILE: 1 << 18,
|
||||||
/**
|
/** @deprecated */
|
||||||
* @deprecated
|
|
||||||
*/
|
|
||||||
PRIV_DELETE_FILE_SELF: 1 << 19,
|
PRIV_DELETE_FILE_SELF: 1 << 19,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -304,7 +304,7 @@ export class HandlerCommon {
|
|||||||
try {
|
try {
|
||||||
const { anchor } = args;
|
const { anchor } = args;
|
||||||
if (args.domainId) name += '_with_domainId';
|
if (args.domainId) name += '_with_domainId';
|
||||||
else if (this.domain.host !== this.request.host && this.domainId !== 'system') {
|
else if (this.domain?.host !== this.request.host && this.domainId !== 'system') {
|
||||||
name += '_with_domainId';
|
name += '_with_domainId';
|
||||||
args.domainId = this.domainId;
|
args.domainId = this.domainId;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user