Есть группа учеников и два учителя с полными правами на контест. За каждым закреплена своя подгруппа.
Можно ли сделать один контест и распределить учеников между учителями так, чтобы каждый видел посылки только своих учеников?
Спасибо.
Разделение пользователей контеста между проверяющими
Re: Разделение пользователей контеста между проверяющими
Во-первых, верно_ли, что учителя друг другу доверяют, и надо сделать возможность включать/выключать фильтр "только свои ученики" (а_то, что учитель может его и не_включать -- не_важно)?
Если да, то можно посмотреть в сторону фильтров описанных в 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, не из-под ученика).
Если да, то можно посмотреть в сторону фильтров описанных в 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, не из-под ученика).
Re: Разделение пользователей контеста между проверяющими
Да, учителя полностью друг другу доверяют.
Попробую с регулярным языком разобраться.
Попробую с регулярным языком разобраться.
Re: Разделение пользователей контеста между проверяющими
Можно у учеников проставить поле cypher базы данных и фильтровать по нему. Например,
Code: Select all
cypher == "1"
Re: Разделение пользователей контеста между проверяющими
Я не смог найти место где увидеть/изменить этот параметр. Смотрел в веб-интерфейсе для редактирования пользователей и в консольном ejudge-edit-users. Я что-то пропустил?
Re: Разделение пользователей контеста между проверяющими
Поле называется "Examination cypher" или "Exam cypher"
Re: Разделение пользователей контеста между проверяющими
Странно. Я установил в ejudge-edit-users поле Exam cypher = 1
В админке сдал за этого ученика задачу, посылку вижу. Теперь хочу, чтобы она также показалась, если буду фильтровать по cypher == "1". Такой фильтр ничего не показывает.
Кроме того, ещё пытался управлять разделением при помощи вставки [1] или [2] в начало имени пользователя. В serve-control это поле User name, в ejudge-edit-users это поле Name.
При этом оба фильтра: name ~= "[2]*" и name ~= "[1]*" показывают посылку пользователя, поле name которого начинается с [1].
В админке сдал за этого ученика задачу, посылку вижу. Теперь хочу, чтобы она также показалась, если буду фильтровать по cypher == "1". Такой фильтр ничего не показывает.
Кроме того, ещё пытался управлять разделением при помощи вставки [1] или [2] в начало имени пользователя. В serve-control это поле User name, в ejudge-edit-users это поле Name.
При этом оба фильтра: name ~= "[2]*" и name ~= "[1]*" показывают посылку пользователя, поле name которого начинается с [1].
Re: Разделение пользователей контеста между проверяющими
в ~= используются регулярные выражения POSIX. Посмотрите их синтаксис, например, здесь:
http://phpclub.ru/detail/article/simple_regular
http://phpclub.ru/detail/article/simple_regular
Re: Разделение пользователей контеста между проверяющими
Спасибо, всё работает