Разделение пользователей контеста между проверяющими

Обсуждение вопросов, связанных с системой проведения турниров ejudge.
Post Reply
rgusarev
Posts:16
Joined:15 January 2016, 10:10
Разделение пользователей контеста между проверяющими

Post by rgusarev » 29 September 2016, 16:21

Есть группа учеников и два учителя с полными правами на контест. За каждым закреплена своя подгруппа.
Можно ли сделать один контест и распределить учеников между учителями так, чтобы каждый видел посылки только своих учеников?
Спасибо.

IlyaCk
Posts:21
Joined:04 January 2013, 19:02

Re: Разделение пользователей контеста между проверяющими

Post by IlyaCk » 02 October 2016, 08:15

Во-первых, верно_ли, что учителя друг другу доверяют, и надо сделать возможность включать/выключать фильтр "только свои ученики" (а_то, что учитель может его и не_включать -- не_важно)?

Если да, то можно посмотреть в сторону фильтров описанных в https://ejudge.ru/ejudge/filter_expr.html (этот документ МОЖНО прочитать, но обычно для этого приходится насильно ставить в браузере KOI8). Например: обеспечить, чтоб в конце имени каждого ученика было написано буква-в-букву 10-А-1, или 10-А-2, или 10-Б-1, или 10-Б-2, после чего можно в поле "Filter expression:" (интерфейса judge-а или master-а, сверху над списком последних посылок) вводить что-то наподобие name~=".*10-А-1" и будет фильтровать только этих учеников. Если вдруг гарантировано, что ученики каждой подгруппы имеют подряд идущие uid, может оказаться удобнее выбирать по фильтру ...<=uid && uid<=... (так нет рисков что неправильно написали эти самые 10-А-1 и т.д.). Возможно, удобнее ставить ученикам разных классов/подгрупп разные group, но в этом я не_уверен, никогда так не_делал. Некоторые элементы этих же фильтров можно использовать для фильтрации таблицы результатов (только из-под judge или master, не из-под ученика).

rgusarev
Posts:16
Joined:15 January 2016, 10:10

Re: Разделение пользователей контеста между проверяющими

Post by rgusarev » 13 October 2016, 20:51

Да, учителя полностью друг другу доверяют.
Попробую с регулярным языком разобраться.

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Разделение пользователей контеста между проверяющими

Post by cher » 20 October 2016, 16:03

Можно у учеников проставить поле cypher базы данных и фильтровать по нему. Например,

Code: Select all

cypher == "1"

rgusarev
Posts:16
Joined:15 January 2016, 10:10

Re: Разделение пользователей контеста между проверяющими

Post by rgusarev » 22 October 2016, 22:53

Я не смог найти место где увидеть/изменить этот параметр. Смотрел в веб-интерфейсе для редактирования пользователей и в консольном ejudge-edit-users. Я что-то пропустил?

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Разделение пользователей контеста между проверяющими

Post by cher » 23 October 2016, 01:44

Поле называется "Examination cypher" или "Exam cypher"

rgusarev
Posts:16
Joined:15 January 2016, 10:10

Re: Разделение пользователей контеста между проверяющими

Post by rgusarev » 10 November 2016, 10:39

Странно. Я установил в ejudge-edit-users поле Exam cypher = 1
В админке сдал за этого ученика задачу, посылку вижу. Теперь хочу, чтобы она также показалась, если буду фильтровать по cypher == "1". Такой фильтр ничего не показывает.

Кроме того, ещё пытался управлять разделением при помощи вставки [1] или [2] в начало имени пользователя. В serve-control это поле User name, в ejudge-edit-users это поле Name.

При этом оба фильтра: name ~= "[2]*" и name ~= "[1]*" показывают посылку пользователя, поле name которого начинается с [1].

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Разделение пользователей контеста между проверяющими

Post by cher » 10 November 2016, 14:17

в ~= используются регулярные выражения POSIX. Посмотрите их синтаксис, например, здесь:
http://phpclub.ru/detail/article/simple_regular

rgusarev
Posts:16
Joined:15 January 2016, 10:10

Re: Разделение пользователей контеста между проверяющими

Post by rgusarev » 17 January 2017, 00:21

Спасибо, всё работает

Post Reply