mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
2.0.0(preview)
This commit is contained in:
1 parent
d5929d78b1
commit
1c8b62a6d9
33 files changed
+307
-241
No files matched your search
@@ -302,24 +302,14 @@ class ContestCreateHandler extends ContestHandler {
|
||||
}
|
||||
|
||||
async function apply() {
|
||||
Route('/c', module.exports.ContestListHandler);
|
||||
Route('/c/:tid', module.exports.ContestDetailHandler);
|
||||
Route('/c/:tid/edit', module.exports.ContestEditHandler);
|
||||
Route('/c/:tid/scoreboard', module.exports.ContestScoreboardHandler);
|
||||
Route('/c/:tid/export/:ext', module.exports.ContestScoreboardDownloadHandler);
|
||||
Route('/c/:tid/p/:pid', module.exports.ContestProblemHandler);
|
||||
Route('/c/:tid/p/:pid/submit', module.exports.ContestProblemSubmitHandler);
|
||||
Route('/contest/create', module.exports.ContestCreateHandler, PERM_CREATE_CONTEST);
|
||||
Route('/c', ContestListHandler);
|
||||
Route('/c/:tid', ContestDetailHandler);
|
||||
Route('/c/:tid/edit', ContestEditHandler);
|
||||
Route('/c/:tid/scoreboard', ContestScoreboardHandler);
|
||||
Route('/c/:tid/export/:ext', ContestScoreboardDownloadHandler);
|
||||
Route('/c/:tid/p/:pid', ContestProblemHandler);
|
||||
Route('/c/:tid/p/:pid/submit', ContestProblemSubmitHandler);
|
||||
Route('/contest/create', ContestCreateHandler, PERM_CREATE_CONTEST);
|
||||
}
|
||||
|
||||
global.Hydro.handler.contest = module.exports = {
|
||||
ContestListHandler,
|
||||
ContestDetailHandler,
|
||||
ContestEditHandler,
|
||||
ContestScoreboardHandler,
|
||||
ContestScoreboardDownloadHandler,
|
||||
ContestProblemHandler,
|
||||
ContestProblemSubmitHandler,
|
||||
ContestCreateHandler,
|
||||
apply,
|
||||
};
|
||||
global.Hydro.handler.contest = module.exports = apply;
|
||||
@@ -283,24 +283,14 @@ class DiscussionEditHandler extends DiscussionHandler {
|
||||
}
|
||||
|
||||
async function apply() {
|
||||
Route('/discuss', module.exports.DiscussionMainHandler);
|
||||
Route('/discuss/:did', module.exports.DiscussionDetailHandler);
|
||||
Route('/discuss/:did/edit', module.exports.DiscussionEditHandler);
|
||||
Route('/discuss/:did/raw', module.exports.DiscussionDetailRawHandler);
|
||||
Route('/discuss/:did/:drid/raw', module.exports.DiscussionReplyRawHandler);
|
||||
Route('/discuss/:did/:drid/:drrid/raw', module.exports.DiscussionTailReplyRawHandler);
|
||||
Route('/discuss/:type/:name', module.exports.DiscussionNodeHandler);
|
||||
Route('/discuss/:type/:name/create', module.exports.DiscussionCreateHandler);
|
||||
Route('/discuss', DiscussionMainHandler);
|
||||
Route('/discuss/:did', DiscussionDetailHandler);
|
||||
Route('/discuss/:did/edit', DiscussionEditHandler);
|
||||
Route('/discuss/:did/raw', DiscussionDetailRawHandler);
|
||||
Route('/discuss/:did/:drid/raw', DiscussionReplyRawHandler);
|
||||
Route('/discuss/:did/:drid/:drrid/raw', DiscussionTailReplyRawHandler);
|
||||
Route('/discuss/:type/:name', DiscussionNodeHandler);
|
||||
Route('/discuss/:type/:name/create', DiscussionCreateHandler);
|
||||
}
|
||||
|
||||
global.Hydro.handler.discussion = module.exports = {
|
||||
DiscussionMainHandler,
|
||||
DiscussionDetailHandler,
|
||||
DiscussionEditHandler,
|
||||
DiscussionDetailRawHandler,
|
||||
DiscussionReplyRawHandler,
|
||||
DiscussionTailReplyRawHandler,
|
||||
DiscussionNodeHandler,
|
||||
DiscussionCreateHandler,
|
||||
apply,
|
||||
};
|
||||
global.Hydro.handler.discussion = module.exports = apply;
|
||||
@@ -192,6 +192,4 @@ async function apply() {
|
||||
Route('/domain/role', DomainRoleHandler);
|
||||
}
|
||||
|
||||
global.Hydro.handler.domain = module.exports = {
|
||||
apply,
|
||||
};
|
||||
global.Hydro.handler.domain = module.exports = apply;
|
||||
+7
-15
@@ -285,23 +285,15 @@ class HomeMessagesConnectionHandler extends ConnectionHandler {
|
||||
}
|
||||
|
||||
async function apply() {
|
||||
Route('/', module.exports.HomeHandler);
|
||||
Route('/home/security', module.exports.HomeSecurityHandler);
|
||||
Route('/home/changeMail/:code', module.exports.UserChangemailWithCodeHandler);
|
||||
Route('/home/settings/:category', module.exports.HomeSettingsHandler);
|
||||
Route('/home/messages', module.exports.HomeMessagesHandler);
|
||||
Connection('/home/messages-conn', module.exports.HomeMessagesConnectionHandler);
|
||||
Route('/', HomeHandler);
|
||||
Route('/home/security', HomeSecurityHandler);
|
||||
Route('/home/changeMail/:code', UserChangemailWithCodeHandler);
|
||||
Route('/home/settings/:category', HomeSettingsHandler);
|
||||
Route('/home/messages', HomeMessagesHandler);
|
||||
Connection('/home/messages-conn', HomeMessagesConnectionHandler);
|
||||
}
|
||||
|
||||
global.Hydro.handler.home = module.exports = {
|
||||
HomeHandler,
|
||||
HomeSecurityHandler,
|
||||
HomeSettingsHandler,
|
||||
UserChangemailWithCodeHandler,
|
||||
HomeMessagesHandler,
|
||||
HomeMessagesConnectionHandler,
|
||||
apply,
|
||||
};
|
||||
global.Hydro.handler.home = module.exports = apply;
|
||||
|
||||
/*
|
||||
@app.route('/home/file', 'home_file', global_route=True)
|
||||
|
||||
@@ -452,15 +452,7 @@ async function apply() {
|
||||
Route('/homework/:tid/edit', HomeworkEditHandler);
|
||||
}
|
||||
|
||||
global.Hydro.handler.homework = {
|
||||
HomeworkMainHandler,
|
||||
HomeworkCreateHandler,
|
||||
HomeworkDetailHandler,
|
||||
HomeworkDetailProblemHandler,
|
||||
HomeworkDetailProblemSubmitHandler,
|
||||
HomeworkEditHandler,
|
||||
apply,
|
||||
};
|
||||
global.Hydro.handler.homework = module.exports = apply;
|
||||
|
||||
/*
|
||||
|
||||
|
||||
@@ -36,9 +36,7 @@ class ProblemImportHandler extends Handler {
|
||||
}
|
||||
|
||||
async function apply() {
|
||||
Route('/problem/import', module.exports.ProblemImportHandler);
|
||||
Route('/problem/import', ProblemImportHandler);
|
||||
}
|
||||
|
||||
global.Hydro.handler.import = module.exports = {
|
||||
ProblemImportHandler, apply,
|
||||
};
|
||||
global.Hydro.handler.import = module.exports = apply;
|
||||
@@ -133,10 +133,11 @@ class JudgeConnectionHandler extends ConnectionHandler {
|
||||
}
|
||||
|
||||
async function apply() {
|
||||
Route('/judge', module.exports.JudgeHandler);
|
||||
Connection('/judge/conn', module.exports.JudgeConnectionHandler);
|
||||
Route('/judge', JudgeHandler);
|
||||
Connection('/judge/conn', JudgeConnectionHandler);
|
||||
}
|
||||
|
||||
global.Hydro.handler.judge = module.exports = {
|
||||
JudgeHandler, JudgeConnectionHandler, apply, next, end,
|
||||
};
|
||||
apply.next = next;
|
||||
apply.end = end;
|
||||
|
||||
global.Hydro.handler.judge = module.exports = apply;
|
||||
+40
-43
@@ -1,57 +1,45 @@
|
||||
const domain = require('../model/domain');
|
||||
const setting = require('../model/setting');
|
||||
const system = require('../model/system');
|
||||
const { Route, Handler } = require('../service/server');
|
||||
const { PERM_MANAGE } = require('../permission');
|
||||
const hpm = require('../lib/hpm');
|
||||
const loader = require('../loader');
|
||||
const { PermissionError } = require('../error');
|
||||
|
||||
class ManageHandler extends Handler {
|
||||
async prepare({ domainId }) {
|
||||
this.checkPerm(PERM_MANAGE);
|
||||
this.domain = await domain.get(domainId);
|
||||
class SystemHandler extends Handler {
|
||||
async prepare() {
|
||||
if (!this.user.priv) throw new PermissionError('???');
|
||||
this.body = {
|
||||
path: [
|
||||
['Hydro', '/'],
|
||||
['manage_main', '/manage'],
|
||||
],
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
class ManageMainHandler extends ManageHandler {
|
||||
class SystemMainHandler extends SystemHandler {
|
||||
async get() {
|
||||
this.response.redirect = '/manage/dashboard';
|
||||
}
|
||||
}
|
||||
|
||||
class ManageDashboardHandler extends ManageHandler {
|
||||
class SystemDashboardHandler extends SystemHandler {
|
||||
async get() {
|
||||
const path = [
|
||||
['Hydro', '/'],
|
||||
['manage', '/manage'],
|
||||
['manage_dashboard', null],
|
||||
];
|
||||
this.response.template = 'manage_dashboard.html';
|
||||
this.response.body = { domain: this.domain, path };
|
||||
}
|
||||
}
|
||||
|
||||
class SystemHandler extends Handler {
|
||||
async prepare() {
|
||||
if (!this.user.priv) throw new PermissionError('???');
|
||||
this.response.body.path.push(['manage_dashboard', null]);
|
||||
}
|
||||
}
|
||||
|
||||
class SystemModuleHandler extends SystemHandler {
|
||||
async get() {
|
||||
const installed = await hpm.getInstalled();
|
||||
const path = [
|
||||
['Hydro', '/'],
|
||||
['manage', '/manage'],
|
||||
['manage_module', null],
|
||||
];
|
||||
this.response.body = { installed, active: loader.active, path };
|
||||
this.response.body.path.push(['manage_module', null]);
|
||||
this.response.body.installed = await hpm.getInstalled();
|
||||
this.response.active = loader.active;
|
||||
this.response.template = 'manage_module.html';
|
||||
}
|
||||
|
||||
async postInstall({ url, id }) {
|
||||
await hpm.install(url, id);
|
||||
async postInstall({ url }) {
|
||||
await hpm.install(url);
|
||||
this.back();
|
||||
}
|
||||
|
||||
@@ -61,15 +49,29 @@ class SystemModuleHandler extends SystemHandler {
|
||||
}
|
||||
}
|
||||
|
||||
class SystemScriptHandler extends SystemHandler {
|
||||
async get() {
|
||||
this.response.template = 'manage_script.html';
|
||||
this.response.body.scripts = global.Hydro.script;
|
||||
this.response.body.path.push(['manage_script', null]);
|
||||
}
|
||||
|
||||
async post({ id, args }) {
|
||||
// TODO Do not use console.log
|
||||
await global.Hydro.script[id].run(args, console.log);
|
||||
this.back();
|
||||
}
|
||||
}
|
||||
|
||||
class SystemSettingHandler extends SystemHandler {
|
||||
async get() {
|
||||
this.response.template = 'manage_settings.html';
|
||||
const current = {};
|
||||
const settings = setting.SYSTEM_SETTINGS;
|
||||
for (const s of settings) {
|
||||
current[s.key] = await system.get(s.key);
|
||||
this.response.body.path.push(['manage_settings', null]);
|
||||
this.response.body.current = {};
|
||||
this.response.body.settings = setting.SYSTEM_SETTINGS;
|
||||
for (const s of this.response.body.settings) {
|
||||
this.response.body.current[s.key] = await system.get(s.key);
|
||||
}
|
||||
this.response.body = { current, settings };
|
||||
}
|
||||
|
||||
async post(args) {
|
||||
@@ -99,16 +101,11 @@ class SystemSettingHandler extends SystemHandler {
|
||||
}
|
||||
|
||||
async function apply() {
|
||||
Route('/manage', module.exports.ManageMainHandler);
|
||||
Route('/manage/dashboard', module.exports.ManageDashboardHandler);
|
||||
Route('/manage', SystemMainHandler);
|
||||
Route('/manage/dashboard', SystemDashboardHandler);
|
||||
Route('/manage/script', SystemScriptHandler);
|
||||
Route('/manage/module', SystemModuleHandler);
|
||||
Route('/manage/setting', SystemSettingHandler);
|
||||
}
|
||||
|
||||
global.Hydro.handler.manage = module.exports = {
|
||||
ManageMainHandler,
|
||||
ManageDashboardHandler,
|
||||
SystemModuleHandler,
|
||||
SystemSettingHandler,
|
||||
apply,
|
||||
};
|
||||
global.Hydro.handler.manage = module.exports = apply;
|
||||
+20
-7
@@ -24,7 +24,11 @@ class StatusHandler extends Handler {
|
||||
desc = desc || 'Online';
|
||||
stats[i].status = desc;
|
||||
}
|
||||
this.response.body = { stats };
|
||||
console.log(stats);
|
||||
const path = [
|
||||
['Hydro', '/'],
|
||||
];
|
||||
this.response.body = { stats, path };
|
||||
this.response.template = 'status.html';
|
||||
}
|
||||
}
|
||||
@@ -32,7 +36,12 @@ class StatusHandler extends Handler {
|
||||
class StatusUpdateHandler extends Handler {
|
||||
async post(args) {
|
||||
this.checkPerm(PERM_JUDGE);
|
||||
await coll.updateOne({ _id: args._id }, { $set: { ...args, type: 'judger' } }, { upsert: true });
|
||||
args.type = 'judger';
|
||||
return coll.updateOne(
|
||||
{ mid: args.mid, type: 'judger' },
|
||||
{ $set: args },
|
||||
{ upsert: true },
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,9 +59,13 @@ async function apply() {
|
||||
Route('/language/:lang', SwitchLanguageHandler);
|
||||
}
|
||||
|
||||
global.Hydro.handler.misc = module.exports = {
|
||||
FileDownloadHandler,
|
||||
StatusHandler,
|
||||
StatusUpdateHandler,
|
||||
apply,
|
||||
apply.updateStatus = function updateStatus(args) {
|
||||
args.type = 'judger';
|
||||
return coll.updateOne(
|
||||
{ mid: args.mid, type: 'judger' },
|
||||
{ $set: args },
|
||||
{ upsert: true },
|
||||
);
|
||||
};
|
||||
|
||||
global.Hydro.handler.misc = module.exports = apply;
|
||||
@@ -8,12 +8,12 @@ class NotFoundHandler extends Handler {
|
||||
}
|
||||
|
||||
async function apply() {
|
||||
Route('/:param1', module.exports.NotFoundHandler);
|
||||
Route('/:param1/:param2', module.exports.NotFoundHandler);
|
||||
Route('/:param1/:param2/:param3', module.exports.NotFoundHandler);
|
||||
Route('/:param1/:param2/:param3/:param4', module.exports.NotFoundHandler);
|
||||
Route('/:param1', NotFoundHandler);
|
||||
Route('/:param1/:param2', NotFoundHandler);
|
||||
Route('/:param1/:param2/:param3', NotFoundHandler);
|
||||
Route('/:param1/:param2/:param3/:param4', NotFoundHandler);
|
||||
Route('/:param1/:param2/:param3/:param4/:param5', NotFoundHandler);
|
||||
Route('/:param1/:param2/:param3/:param4/:param5/:param6', NotFoundHandler);
|
||||
}
|
||||
|
||||
global.Hydro.handler.notfound = module.exports = {
|
||||
NotFoundHandler, apply,
|
||||
};
|
||||
global.Hydro.handler.notfound = module.exports = apply;
|
||||
+17
-35
@@ -443,40 +443,22 @@ class ProblemCreateHandler extends Handler {
|
||||
}
|
||||
|
||||
async function apply() {
|
||||
Route('/p', module.exports.ProblemHandler);
|
||||
Route('/p/category/:category', module.exports.ProblemCategoryHandler);
|
||||
Route('/problem/random', module.exports.ProblemRandomHandler);
|
||||
Route('/p/:pid', module.exports.ProblemDetailHandler);
|
||||
Route('/p/:pid/submit', module.exports.ProblemSubmitHandler);
|
||||
Route('/p/:pid/pretest', module.exports.ProblemPretestHandler);
|
||||
Route('/p/:pid/settings', module.exports.ProblemSettingsHandler);
|
||||
Route('/p/:pid/statistics', module.exports.ProblemStatisticsHandler);
|
||||
Route('/p/:pid/edit', module.exports.ProblemEditHandler);
|
||||
Route('/p/:pid/upload', module.exports.ProblemDataUploadHandler);
|
||||
Route('/p/:pid/data', module.exports.ProblemDataDownloadHandler);
|
||||
Route('/p/:pid/solution', module.exports.ProblemSolutionHandler);
|
||||
Route('/p/:pid/solution/:psid/raw', module.exports.ProblemSolutionRawHandler);
|
||||
Route('/p/:pid/solution/:psid/:psrid/raw', module.exports.ProblemSolutionReplyRawHandler);
|
||||
Route('/problem/create', module.exports.ProblemCreateHandler);
|
||||
Connection('/p/:pid/pretest-conn', module.exports.ProblemPretestConnectionHandler);
|
||||
Route('/p', ProblemHandler);
|
||||
Route('/p/category/:category', ProblemCategoryHandler);
|
||||
Route('/problem/random', ProblemRandomHandler);
|
||||
Route('/p/:pid', ProblemDetailHandler);
|
||||
Route('/p/:pid/submit', ProblemSubmitHandler);
|
||||
Route('/p/:pid/pretest', ProblemPretestHandler);
|
||||
Route('/p/:pid/settings', ProblemSettingsHandler);
|
||||
Route('/p/:pid/statistics', ProblemStatisticsHandler);
|
||||
Route('/p/:pid/edit', ProblemEditHandler);
|
||||
Route('/p/:pid/upload', ProblemDataUploadHandler);
|
||||
Route('/p/:pid/data', ProblemDataDownloadHandler);
|
||||
Route('/p/:pid/solution', ProblemSolutionHandler);
|
||||
Route('/p/:pid/solution/:psid/raw', ProblemSolutionRawHandler);
|
||||
Route('/p/:pid/solution/:psid/:psrid/raw', ProblemSolutionReplyRawHandler);
|
||||
Route('/problem/create', ProblemCreateHandler);
|
||||
Connection('/p/:pid/pretest-conn', ProblemPretestConnectionHandler);
|
||||
}
|
||||
|
||||
global.Hydro.handler.problem = module.exports = {
|
||||
ProblemHandler,
|
||||
ProblemCategoryHandler,
|
||||
ProblemRandomHandler,
|
||||
ProblemDetailHandler,
|
||||
ProblemSubmitHandler,
|
||||
ProblemPretestHandler,
|
||||
ProblemSettingsHandler,
|
||||
ProblemStatisticsHandler,
|
||||
ProblemEditHandler,
|
||||
ProblemDataUploadHandler,
|
||||
ProblemDataDownloadHandler,
|
||||
ProblemSolutionHandler,
|
||||
ProblemSolutionRawHandler,
|
||||
ProblemSolutionReplyRawHandler,
|
||||
ProblemCreateHandler,
|
||||
ProblemPretestConnectionHandler,
|
||||
apply,
|
||||
};
|
||||
global.Hydro.handler.problem = module.exports = apply;
|
||||
@@ -160,11 +160,4 @@ async function apply() {
|
||||
Connection('/record-detail-conn', RecordDetailConnectionHandler);
|
||||
}
|
||||
|
||||
global.Hydro.handler.record = module.exports = {
|
||||
RecordListHandler,
|
||||
RecordDetailHandler,
|
||||
RecordRejudgeHandler,
|
||||
RecordMainConnectionHandler,
|
||||
RecordDetailConnectionHandler,
|
||||
apply,
|
||||
};
|
||||
global.Hydro.handler.record = module.exports = apply;
|
||||
@@ -78,14 +78,9 @@ class SystemSettingHandler extends SystemHandler {
|
||||
}
|
||||
|
||||
async function apply() {
|
||||
Route('/system', module.exports.SystemDashboardHandler);
|
||||
Route('/system/module', module.exports.SystemModuleHandler);
|
||||
Route('/system/setting', module.exports.SystemSettingHandler);
|
||||
Route('/system', SystemDashboardHandler);
|
||||
Route('/system/module', SystemModuleHandler);
|
||||
Route('/system/setting', SystemSettingHandler);
|
||||
}
|
||||
|
||||
global.Hydro.handler.manage = module.exports = {
|
||||
SystemDashboardHandler,
|
||||
SystemModuleHandler,
|
||||
SystemSettingHandler,
|
||||
apply,
|
||||
};
|
||||
global.Hydro.handler.manage = module.exports = apply;
|
||||
@@ -249,16 +249,10 @@ class TrainingEditHandler extends TrainingHandler {
|
||||
}
|
||||
|
||||
async function apply() {
|
||||
Route('/t', module.exports.TrainingMainHandler);
|
||||
Route('/t/:tid', module.exports.TrainingDetailHandler);
|
||||
Route('/t/:tid/edit', module.exports.TrainingEditHandler);
|
||||
Route('/training/create', module.exports.TrainingCreateHandler);
|
||||
Route('/t', TrainingMainHandler);
|
||||
Route('/t/:tid', TrainingDetailHandler);
|
||||
Route('/t/:tid/edit', TrainingEditHandler);
|
||||
Route('/training/create', TrainingCreateHandler);
|
||||
}
|
||||
|
||||
global.Hydro.handler.training = module.exports = {
|
||||
TrainingMainHandler,
|
||||
TrainingDetailHandler,
|
||||
TrainingEditHandler,
|
||||
TrainingCreateHandler,
|
||||
apply,
|
||||
};
|
||||
global.Hydro.handler.training = module.exports = apply;
|
||||
+9
-19
@@ -168,24 +168,14 @@ class UserSearchHandler extends Handler {
|
||||
}
|
||||
|
||||
async function apply() {
|
||||
Route('/login', module.exports.UserLoginHandler);
|
||||
Route('/register', module.exports.UserRegisterHandler);
|
||||
Route('/register/:code', module.exports.UserRegisterWithCodeHandler);
|
||||
Route('/logout', module.exports.UserLogoutHandler, PERM_LOGGEDIN);
|
||||
Route('/lostpass', module.exports.UserLostPassHandler);
|
||||
Route('/lostpass/:code', module.exports.UserLostPassWithCodeHandler);
|
||||
Route('/user/search', module.exports.UserSearchHandler);
|
||||
Route('/user/:uid', module.exports.UserDetailHandler);
|
||||
Route('/login', UserLoginHandler);
|
||||
Route('/register', UserRegisterHandler);
|
||||
Route('/register/:code', UserRegisterWithCodeHandler);
|
||||
Route('/logout', UserLogoutHandler, PERM_LOGGEDIN);
|
||||
Route('/lostpass', UserLostPassHandler);
|
||||
Route('/lostpass/:code', UserLostPassWithCodeHandler);
|
||||
Route('/user/search', UserSearchHandler);
|
||||
Route('/user/:uid', UserDetailHandler);
|
||||
}
|
||||
|
||||
global.Hydro.handler.user = module.exports = {
|
||||
UserLoginHandler,
|
||||
UserRegisterHandler,
|
||||
UserRegisterWithCodeHandler,
|
||||
UserLogoutHandler,
|
||||
UserLostPassHandler,
|
||||
UserLostPassWithCodeHandler,
|
||||
UserSearchHandler,
|
||||
UserDetailHandler,
|
||||
apply,
|
||||
};
|
||||
global.Hydro.handler.user = module.exports = apply;
|
||||
Reference in new issue
Block a user