diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 32b543a7e..91bcf24ee 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.28.10", + "version": "2.28.11", "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 98fb5c7df..dda0378b2 100644 --- a/packages/hydrooj/src/handler/contest.ts +++ b/packages/hydrooj/src/handler/contest.ts @@ -220,7 +220,7 @@ export class ContestEditHandler extends Handler { ) { const pids = _pids.replace(/,/g, ',').split(',').map((i) => { if ((+i).toString() === i) return +i; - return i; + return i.trim(); }).filter((i) => i); const beginAtMoment = moment.tz(`${beginAtDate} ${beginAtTime}`, this.user.timeZone); if (!beginAtMoment.isValid()) throw new ValidationError('beginAtDate', 'beginAtTime'); diff --git a/packages/hydrooj/src/handler/homework.ts b/packages/hydrooj/src/handler/homework.ts index d0f760ade..d98eb25ee 100644 --- a/packages/hydrooj/src/handler/homework.ts +++ b/packages/hydrooj/src/handler/homework.ts @@ -5,7 +5,7 @@ import AdmZip from 'adm-zip'; import { Time } from '@hydrooj/utils/lib/utils'; import { ValidationError, HomeworkNotLiveError, ProblemNotFoundError, - HomeworkNotAttendedError, BadRequestError, ContestNotFoundError, + HomeworkNotAttendedError, BadRequestError, } from '../error'; import { PenaltyRules, Tdoc, ProblemDoc, User, @@ -250,8 +250,7 @@ class HomeworkEditHandler extends Handler { const tdoc = tid ? await contest.get(domainId, tid, document.TYPE_HOMEWORK) : null; - if (tid && !tdoc) throw new ContestNotFoundError(domainId, tid); - else if (!tid) this.checkPerm(PERM.PERM_CREATE_HOMEWORK); + if (!tid) this.checkPerm(PERM.PERM_CREATE_HOMEWORK); else if (!this.user.own(tdoc)) this.checkPerm(PERM.PERM_EDIT_HOMEWORK); else this.checkPerm(PERM.PERM_EDIT_HOMEWORK_SELF); const extensionDays = tid @@ -308,10 +307,13 @@ class HomeworkEditHandler extends Handler { ) { const pids = _pids.replace(/,/g, ',').split(',').map((i) => { if ((+i).toString() === i) return +i; - return i; + return i.trim(); }).filter((i) => i); - const tdoc = await contest.get(domainId, tid, document.TYPE_HOMEWORK); - if (!this.user.own(tdoc)) this.checkPerm(PERM.PERM_EDIT_HOMEWORK); + const tdoc = tid + ? await contest.get(domainId, tid, document.TYPE_HOMEWORK) + : null; + if (!tid) this.checkPerm(PERM.PERM_CREATE_HOMEWORK); + else if (!this.user.own(tdoc)) this.checkPerm(PERM.PERM_EDIT_HOMEWORK); else this.checkPerm(PERM.PERM_EDIT_HOMEWORK_SELF); const beginAt = moment.tz(`${beginAtDate} ${beginAtTime}`, this.user.timeZone); if (!beginAt.isValid()) throw new ValidationError('beginAtDate', 'beginAtTime'); diff --git a/packages/hydrooj/src/service/bus.ts b/packages/hydrooj/src/service/bus.ts index 74e0bc157..6bd75e840 100644 --- a/packages/hydrooj/src/service/bus.ts +++ b/packages/hydrooj/src/service/bus.ts @@ -147,9 +147,9 @@ export function off(name: K, listener: EventMap[K]) { export async function parallel(name: K, ...args: Parameters): Promise { const tasks: Promise[] = []; - if (argv.options.showBus) logger.debug('parallel: %s %o', name, args); + if (argv.options.showBus && name !== 'message/log') logger.debug('parallel: %s %o', name, args); for (const callback of _hooks[name] || []) { - if (argv.options.busDetail) logger.debug(callback.toString()); + if (argv.options.busDetail && name !== 'message/log') logger.debug(callback.toString()); tasks.push(callback.apply(this, args)); } await Promise.all(tasks); @@ -160,7 +160,7 @@ export function emit(name: K, ...args: Parameters(name: K, ...args: Parameters): Promise { - if (argv.options.showBus) logger.debug('serial: %s %o', name, args); + if (argv.options.showBus && name !== 'message/log') logger.debug('serial: %s %o', name, args); const hooks = Array.from(_hooks[name] || []); for (const callback of hooks) { if (argv.options.busDetail) logger.debug(callback.toString()); @@ -169,7 +169,7 @@ export async function serial(name: K, ...args: Paramet } export function bail(name: K, ...args: Parameters): ReturnType { - if (argv.options.showBus) logger.debug('bail: %s %o', name, args); + if (argv.options.showBus && name !== 'message/log') logger.debug('bail: %s %o', name, args); const hooks = Array.from(_hooks[name] || []); for (const callback of hooks) { const result = callback.apply(this, args); diff --git a/packages/hydrooj/src/service/monitor.ts b/packages/hydrooj/src/service/monitor.ts index 43612bd52..84521c5d8 100644 --- a/packages/hydrooj/src/service/monitor.ts +++ b/packages/hydrooj/src/service/monitor.ts @@ -84,13 +84,12 @@ export async function updateJudge(args) { if (cluster.isMaster) { bus.on('app/started', async () => { - const info = await sysinfo.get(); - await coll.updateOne( + sysinfo.get().then((info) => coll.updateOne( { mid: info.mid, type: 'server' }, { $set: { ...info, updateAt: new Date(), type: 'server' } }, { upsert: true }, - ); - await feedback(); + )); + feedback(); setInterval(update, 60 * 1000); }); } diff --git a/packages/ui-default/locales/en.yaml b/packages/ui-default/locales/en.yaml index f4067b77f..743d6d1ce 100644 --- a/packages/ui-default/locales/en.yaml +++ b/packages/ui-default/locales/en.yaml @@ -21,7 +21,6 @@ problem_create: Problem Create problem_edit: Problem Edit problem_import: Import Problem problem_main: Problem Set -problem_settings: Problem Settings problem_solution: Problem Solution problem_statistics: Problem Statistics problem_submit: Problem Submit diff --git a/packages/ui-default/locales/zh.yaml b/packages/ui-default/locales/zh.yaml index 2b50d46b3..7aa202af0 100644 --- a/packages/ui-default/locales/zh.yaml +++ b/packages/ui-default/locales/zh.yaml @@ -551,7 +551,6 @@ problem_create: 创建题目 problem_edit: 编辑题目 problem_import: 导入题目 problem_main: 题库 -problem_settings: 题目设置 problem_solution: 题解 problem_statistics: 题目统计 problem_submit: 递交代码 diff --git a/packages/ui-default/locales/zh_TW.yaml b/packages/ui-default/locales/zh_TW.yaml index 4940a629d..47ad7639c 100644 --- a/packages/ui-default/locales/zh_TW.yaml +++ b/packages/ui-default/locales/zh_TW.yaml @@ -341,7 +341,6 @@ Problem Tags Visibility: 題目標籤可見性 problem_create: 創建題目 problem_edit: 編輯題目 problem_main: 題庫 -problem_settings: 題目設定 problem_solution: 題解 problem_submit: 遞交程式碼 Problem: 題目 diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index b44f301ee..f710619f2 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.11.4", + "version": "4.11.5", "author": "undefined ", "license": "AGPL-3.0", "main": "hydro.js", diff --git a/packages/ui-default/pages/problem_main.page.styl b/packages/ui-default/pages/problem_main.page.styl index 172dc6ebd..817885488 100644 --- a/packages/ui-default/pages/problem_main.page.styl +++ b/packages/ui-default/pages/problem_main.page.styl @@ -1,6 +1,5 @@ .page--problem_main .page--problem_category -.page--problem_settings .col--checkbox width: rem(60px) diff --git a/packages/ui-default/templates/components/problem.html b/packages/ui-default/templates/components/problem.html index 49b1c09fc..8a1bdb902 100644 --- a/packages/ui-default/templates/components/problem.html +++ b/packages/ui-default/templates/components/problem.html @@ -2,9 +2,9 @@ {%- if not invalid %} {{ _('Submit') }} {% elif model.contest.isDone(tdoc) %} - {% endif %} {% if handler.user.own(pdoc, perm.PERM_EDIT_PROBLEM_SELF) or handler.user.hasPerm(perm.PERM_EDIT_PROBLEM) %} - - {% endif %} diff --git a/packages/ui-default/templates/partials/problem_sidebar_homework.html b/packages/ui-default/templates/partials/problem_sidebar_homework.html index 00e63dc03..390d699ec 100644 --- a/packages/ui-default/templates/partials/problem_sidebar_homework.html +++ b/packages/ui-default/templates/partials/problem_sidebar_homework.html @@ -24,16 +24,16 @@ {{ _('Submit') }} {% elif model.contest.isDone(tdoc) %} - {% endif %} {% if handler.user.own(pdoc, perm.PERM_EDIT_PROBLEM_SELF) or handler.user.hasPerm(perm.PERM_EDIT_PROBLEM) %} - - {% endif %}