mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-17 09:36:08 +08:00
core: rank.uidIgnore setting
This commit is contained in:
1 parent
130fbcc2dd
commit
f3d098af85
3 files changed
+20
-4
No files matched your search
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "hydrooj",
|
||||
"version": "2.39.25",
|
||||
"version": "2.39.26",
|
||||
"bin": "bin/hydrooj.js",
|
||||
"main": "src/loader",
|
||||
"module": "src/loader",
|
||||
|
||||
@@ -200,6 +200,7 @@ SystemSetting(
|
||||
Setting('setting_basic', 'default.priv', builtin.PRIV.PRIV_DEFAULT, 'number', 'default.priv', 'Default Privilege', FLAG_PRO),
|
||||
Setting('setting_basic', 'discussion.nodes', builtin.DEFAULT_NODES, 'yaml', 'discussion.nodes', 'Discussion Nodes'),
|
||||
Setting('setting_basic', 'problem.categories', builtin.CATEGORIES, 'yaml', 'problem.categories', 'Problem Categories'),
|
||||
Setting('setting_basic', 'rank.uidIgnore', '', 'text', 'rank.uidIgnore', 'Ignored uids for ranking'),
|
||||
Setting('setting_basic', 'pagination.problem', 100, 'number', 'pagination.problem', 'Problems per page'),
|
||||
Setting('setting_basic', 'pagination.contest', 20, 'number', 'pagination.contest', 'Contests per page'),
|
||||
Setting('setting_basic', 'pagination.discussion', 50, 'number', 'pagination.discussion', 'Discussions per page'),
|
||||
|
||||
@@ -8,6 +8,7 @@ import * as contest from '../model/contest';
|
||||
import domain from '../model/domain';
|
||||
import problem from '../model/problem';
|
||||
import record from '../model/record';
|
||||
import * as system from '../model/system';
|
||||
import UserModel from '../model/user';
|
||||
import db from '../service/db';
|
||||
|
||||
@@ -24,7 +25,17 @@ async function runProblem(...arg: any[]) {
|
||||
const udict: ND = (typeof arg[0] === 'string') ? arg[2] : arg[1];
|
||||
const nPages = Math.floor(
|
||||
(await problem.getMultiStatus(
|
||||
pdoc.domainId, { docId: pdoc.docId, rid: { $ne: null }, uid: { $ne: pdoc.owner } },
|
||||
pdoc.domainId,
|
||||
{
|
||||
docId: pdoc.docId,
|
||||
rid: { $ne: null },
|
||||
uid: {
|
||||
$nin: [
|
||||
pdoc.owner,
|
||||
system.get('rank.uidIgnore').split(',').map((i) => +i).filter((i) => i),
|
||||
],
|
||||
},
|
||||
},
|
||||
).count() + 99) / 100,
|
||||
);
|
||||
const p = (pdoc.difficulty || 5) / (Math.sqrt(Math.sqrt(pdoc.nAccept)) + 1) / 10;
|
||||
@@ -54,8 +65,11 @@ async function runContest(...arg: any[]) {
|
||||
: arg[0];
|
||||
const udict: ND = (typeof arg[0] === 'string') ? arg[2] : arg[1];
|
||||
const report = (typeof arg[0] === 'string') ? arg[3] : arg[2];
|
||||
const cursor = contest.getMultiStatus(tdoc.domainId, { docId: tdoc.docId, journal: { $ne: null } })
|
||||
.sort(contest.RULES[tdoc.rule].statusSort);
|
||||
const cursor = contest.getMultiStatus(tdoc.domainId, {
|
||||
docId: tdoc.docId,
|
||||
journal: { $ne: null },
|
||||
uid: { $nin: system.get('rank.uidIgnore').split(',').map((i) => +i).filter((i) => i) },
|
||||
}).sort(contest.RULES[tdoc.rule].statusSort);
|
||||
if (!await cursor.count()) return;
|
||||
const [rankedTsdocs] = await contest.RULES[tdoc.rule].ranked(tdoc, cursor);
|
||||
const users = [];
|
||||
@@ -79,6 +93,7 @@ async function runContest(...arg: any[]) {
|
||||
export async function calcLevel(domainId: string, report: Function) {
|
||||
const filter = { rp: { $ne: 1500, $exists: true } };
|
||||
const ducnt = await domain.getMultiUserInDomain(domainId, filter).count();
|
||||
await domain.setMultiUserInDomain(domainId, {}, { level: 0, rank: null });
|
||||
if (!ducnt) return;
|
||||
let last = { rp: null };
|
||||
let rank = 0;
|
||||
|
||||
Reference in new issue
Block a user