Difference between revisions of "Python: п≈п╟п©я─п╬я│я▀ п╨ п╠п╟п╥п╣ п©п╬п╩я▄п╥п╬п╡п╟я┌п╣п╩п╣п╧"

From EjudgeWiki
(privEditField)
(removed)
(Tag: Replaced)
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Расширение]]/[[Доступ к ejudge из программ на Питоне]]/[[Python: Работа с базой пользователей]]/[[Python: Запросы к базе пользователей]].
+
[[Category:Deleted]]
 
 
=== Получение информации о пользователях ===
 
 
 
==== privListAllUsers ====
 
 
 
Метод privListAllUsers позволяет получить список всех пользователей в базе пользователей.
 
str = clnt.privListAllUsers()
 
При ошибке выбрасывается исключение IOError. При успехе возвращается строка str, содержащая список всех пользователей в формате XML.
 
 
 
==== privListContestUsers ====
 
 
 
Метод privListContestUsers позволяет получить список всех пользователей, зарегистрированных на заданный турнир.
 
str = clnt.privListContestUsers([[Python:contest_id|contest_id]])
 
При ошибке выбрасывается исключение IOError. При успехе возвращается строка str, содержащая список всех пользователей в формате XML.
 
 
 
==== privGetContestUsers ====
 
 
 
Метод privGetContestUsers позволяет получить полную информацию о всех пользователях, зарегистрированных на заданный турнир.
 
str = clnt.privGetContestUsers([[Python:contest_id|contest_id]])
 
При ошибке выбрасывается исключение IOError. При успехе возвращается строка str, содержащая информацию о пользователях в формате XML.
 
 
 
==== getUserInfo ====
 
 
 
Метод getUserInfo позволяет получить информацию о пользователе, авторизованном на данном подключении к серверу. Метод доступен непривилегированным пользователям.
 
str = clnt.getUserInfo([[Python:contest_id|contest_id]])
 
При ошибке выбрасывается исключение IOError. При успехе возвращается строка str, содержащая информацию о пользователях в формате XML.
 
 
 
==== privGetUserInfo ====
 
 
 
Метод privGetUserInfo позволяет получить информацию о произвольном пользователе. Метод доступен только привилегированным пользователям.
 
str = clnt.privGetUserInfo([[Python:user_id|user_id]], [[Python:contest_id|contest_id]])
 
При ошибке выбрасывается исключение IOError. При успехе возвращается строка str, содержащая информацию о пользователях в формате XML.
 
 
 
При получении общей информации (contest_id равен 0) у пользователя, выполняющего запрос, должен быть установлен глобальный бит полномочий GET_USER. При получении информации о турнире (contest_id больше 0) у пользователя, выполняющего запрос, должен быть установлен бит полномочий GET_USER либо глобальный, либо для данного турнира.
 
 
 
=== Создание новых пользователей и удаление пользователей ===
 
 
 
==== privCreateUser ====
 
 
 
Метод privCreateUser позволяет создать нового пользователя в базе пользователей.
 
[[Python:user_id|user_id]] = clnt.privCreateUser([[Python:login|login]])
 
login - это регистрационное има создаваемого пользователя. Логин может быть равен пустой строке или None, в этом случае логин для создаваемого пользователя будет сгенерирован автоматически по шаблону New_login, New_login_2 ...
 
При ошибке выбрасывается исключение IOError. При успехе возвращается идентификатор нового пользователя.
 
 
 
Метод доступен только привилегированным пользователям, для которых установлен глобальный бит полномочий CREATE_USER.
 
 
 
==== privDeleteUser ====
 
 
 
Метод позволяет удалить из базы пользователей указанного пользователя.
 
privDeleteUser([[Python:user_id|user_id]])
 
При ошибке выбрасывается исключение IOError.
 
 
 
Для удаления непривилегированных пользователей необходимо полномочие DELETE_USER. Для удаления привилегированных пользователей необходимо полномочие PRIV_DELETE_USER.
 
 
 
=== Редактирование данных ===
 
 
 
==== privEditField ====
 
 
 
Метод privEditField позволяет изменить поля данных пользователей.
 
clnt.privEditField([[Python:user_id|user_id]], [[Python:contest_id|contest_id]], [[Python:serial|serial]], [[Python:field_str|field_str]], [[Python:value|value]])
 
При ошибке выбрасывается исключение IOError. По результатам выполнения операции может измениться значение флага Incomplete регистрации участника на турнир.
 
 
 
Для выполнения операции соединение должно быть авторизовано с уровнем привилегий не ниже JUDGE. Для измененмя поля "NN_PASSWD" необходимо полномочие EDIT_PASSWD для обычных и PRIV_EDIT_PASSWD для привилегированных пользователей уровня доступа к базе пользователей. Для изменения остальных полей "NN_*" необходимо полномочие EDIT_USER для обычных и PRIV_EDIT_USER для привилегированных пользователей уровня доступа к базе пользователей. Для изменения поля "NC_TEAM_PASSWD" необходимо полномочие EDIT_PASSWD для обычных и PRIV_EDIT_PASSWD для привилегированных пользователей уровня доступа к базе пользователей или указанному турниру. Для измененмя остальных полей "NC_*" и "NM_*" необходимо полномочие EDIT_USER для обычных и PRIV_EDIT_USER для привилегированных пользователей уровня доступа к базе пользователей или указанному турниру.
 
 
 
Если параметр user_id равен 0, операция выполняется над текущим пользователем. При выполнении операции для текущего пользователя никаких полномочий не требуется.
 
 
 
==== privDeleteField ====
 
 
 
Метод privDeleteField позволяет очистить значение указанного поля.
 
clnt.privDeleteField([[Python:user_id|user_id]], [[Python:contest_id|contest_id]], [[Python:serial|serial]], [[Python:field_str|field_str]])
 
При ошибке выбрасывается исключение IOError. По результатам выполнения операции может измениться значение флага Incomplete регистрации участника на турнир.
 
 
 
Для выполнения операции соединение должно быть авторизовано с уровнем привилегий не ниже JUDGE.
 
Для очистки поля "NN_PASSWD" необходимо полномочие EDIT_PASSWD для обычных и PRIV_EDIT_PASSWD для привилегированных пользователей уровня доступа к базе пользователей. Для очистки остальных полей "NN_*" необходимо полномочие EDIT_USER для обычных и PRIV_EDIT_USER для привилегированных пользователей уровня доступа к базе пользователей. Для очистки поля "NC_TEAM_PASSWD" необходимо полномочие EDIT_PASSWD для обычных и PRIV_EDIT_PASSWD для привилегированных пользователей уровня доступа к базе пользователей или указанному турниру. Для очистки остальных полей "NC_*" и "NM_*" необходимо полномочие EDIT_USER для обычных и PRIV_EDIT_USER для привилегированных пользователей уровня доступа к базе пользователей или указанному турниру.
 
 
 
Если параметр user_id равен 0, операция выполняется над текущим пользователем. При выполнении операции для текущего пользователя никаких полномочий не требуется.
 
 
 
==== privCopyUserInfo ====
 
 
 
Метод privCopyUserInfo позволяет скопировать регистрационные данные пользователя из одного турнира в другой.
 
clnt.privCopyUserInfo([[Python:user_id|user_id]], [[Python:contest_id|contest_id_from]], [[Python:contest_id|contest_id_to]])
 
При ошибке выбрасывается исключение IOError.
 
 
 
==== privCreateMember ====
 
 
 
Метод privCreateMember позволяет создать члена команды.
 
[[Python:serial|serial]] = clnt.privCreateMember([[Python:user_id|user_id]], [[Python:contest_id|contest_id]], [[Python:role|role]])
 
При ошибке выбрасывается исключение IOError.
 
При успешном завершении возвращается идентификатор нового члена команды.
 
 
 
==== privDeleteMember ====
 
 
 
Метод privDeleteMember позволяет удалить члена команды.
 
clnt.privDeleteMember([[Python:user_id|user_id]], [[Python:contest_id|contest_id]], [[Python:serial|serial]])
 
При ошибке выбрасывается исключение IOError. По результатам выполнения операции может измениться значение флага Incomplete регистрации участника на турнир.
 
 
 
Для выполнения операции соединение должно быть авторизовано с уровнем привилегий не ниже JUDGE. Для выполнения операции над непривилегированным пользователем необходимо полномочие EDIT_USER для данного турнира. Для выполнения операции над привилегированными пользователями необходимо полномочие PRIV_EDIT_USER для данного турнира.
 
 
 
Если user_id равен 0, операция выполняется для текущего пользователя. Если номер турнира не равен 0, то для выполнения операции над текущим пользователем не требуется никаких полномочий.
 
 
 
==== privMoveMember ====
 
 
 
Метод privMoveMember позволяет изменить роль у указанного члена команды.
 
clnt.privMoveMember([[Python:user_id|user_id]], [[Python:contest_id|contest_id]], [[Python:serial|serial]], [[Python:role|new_role]])
 
При ошибке выбрасывается исключение IOError. По результатам выполнения операции может измениться значение флага Incomplete регистрации пользователя на турнир.
 
 
 
Для выполнения операции соединение должно быть авторизовано с уровнем привилегий не ниже JUDGE.
 
Для выполнения операции над непривилегированным пользователем необходимо полномочие EDIT_USER для данного турнира.
 
Для выполнения операции над привилегированными пользователями необходимо полномочие PRIV_EDIT_USER для данного турнира.
 
 
 
Если user_id равен 0, операция выполняется для текущего пользователя. Если номер турнира не равен 0, то для выполнения операции над текущим пользователем не требуется никаких полномочий.
 
 
 
=== Регистрация на турниры ===
 
 
 
==== privRegisterContest ====
 
 
 
Метод позволяет зарегистрировать указанного пользователя на указанный турнир.
 
clnt.privRegisterContest([[Python:user_id|user_id]], [[Python:contest_id|contest_id]], [[Python:ip_str|ip_str]], [[Python:ssl_flag|ssl_flag]])
 
При выполнении запроса проверются ограничения на IP-адрес и сроки
 
регистрации.
 
При ошибке выбрасывается исключение IOError.
 
 
 
Для выполнения операции соединение должно быть авторизовано с уровнем привилегий не ниже JUDGE.
 
Для регистрации непривилегированных пользователей необходимо полномочие CREATE_REG для данного турнира.
 
Для регистрации привилегированных пользователей необходимо полномочие PRIV_CREATE_REG для данного турнира.
 
 
 
Если user_id равен 0, операция выполняется для текущего пользователя. В этом случае он должен обладать полномочием PRIV_EDIT_REG.
 
 
 
==== privForcedRegisterContest ====
 
 
 
Метод позволяет зарегистрировать указанного пользователя на указанный турнир.
 
clnt.privForcedRegisterContest([[Python:user_id|user_id]], [[Python:contest_id|contest_id]])
 
При выполнении запроса не проверются ограничения на IP-адрес и сроки
 
регистрации.
 
При ошибке выбрасывается исключение IOError.
 
 
 
Для выполнения операции соединение должно быть авторизовано с уровнем привилегий не ниже JUDGE.
 
Для регистрации непривилегированных пользователей необходимо полномочие CREATE_REG для данного турнира.
 
Для регистрации привилегированных пользователей необходимо полномочие PRIV_CREATE_REG для данного турнира.
 
 
 
Если user_id равен 0, операция выполняется для текущего пользователя. В этом случае он должен обладать полномочием PRIV_EDIT_REG.
 
 
 
==== privChangeContestReg ====
 
 
 
Метод позволяет изменить флаги регистрации на турнир для указанного
 
пользователя.
 
clnt.privChangeContestReg([[Python:user_id|user_id]], [[Python:contest_id|contest_id]], [[Python:status_str|status_str]], [[Python:cmd_str|cmd_str]], [[Python:regflags|regflags]])
 
Если status_str равен None, то статус регистрации не изменяется.
 
Если cmd_str равен None, то флаги регистрации не изменяются.
 
При ошибке выбрасывается исключение IOError.
 
 
 
Для выполнения операции соединение должно быть авторизовано с уровнем привилегий не ниже JUDGE.
 
Для удаления регистрации (параметр status_str равен "REMOVE") необходимо полномочие DELETE_REG в данном турнире для обычного пользователя и PRIV_DELETE_REG для привилегированного пользователя.
 
Для выполнения прочих операций необходимо полномочие EDIT_REG для указанного турнира.
 
Если user_id - привилегированный пользователь, необходимо полномочие PRIV_EDIT_REG.
 
 
 
Если user_id равен 0, операция выполняется для текущего пользователя. В этом случае он должен обладать полномочием PRIV_EDIT_REG.
 
 
 
=== Проверка пользователей ===
 
 
 
==== privLookupUser ====
 
 
 
Метод privLookupUser позволяет определить существование заданного пользователя.
 
res = clnt.privLookupUser([[Python:login|login]], [[Python:contest_id|contest_id]])
 
При ошибке выбрасывается исключение IOError.
 
Если пользователь с указанным регистрационным именем не существует,
 
возвращается значение None.
 
Если пользователь существует, возвращается словарь:
 
{'user_id':[[Python:user_id|user_id]], 'name':[[Python:name|name]]}
 
 
 
Для выполнения операции соединение должно быть авторизовано с уровнем привилегий не ниже JUDGE. Необходимо полномочие LIST_USERS для базы пользователей или указанного турнира. Если contest_id равен 0, требуется полномочие только для базы пользователей.
 
 
 
==== privLookupUserId ====
 
 
 
Метод privLookupUserId позволяет определить существование заданного пользователя.
 
res = clnt.privLookupUserId([[Python:user_id|user_id]], [[Python:contest_id|contest_id]])
 
При ошибке выбрасывается исключение IOError.
 
Если пользователь с указанным идентификатором не существует,
 
возвращается значение None.
 
Если пользователь существует, возвращается словарь:
 
{'login':[[Python:login|login]], 'name':[[Python:name|name]]}
 
 
 
Для выполнения операции соединение должно быть авторизовано с уровнем привилегий не ниже JUDGE. Необходимо полномочие LIST_USERS для базы пользователей или указанного турнира. Если contest_id равен 0, требуется полномочие только для базы пользователей.
 
 
 
Если параметр user_id равен 0, операция выполняется над текущим пользователем. При выполнении операции для текущего пользователя никаких полномочий не требуется.
 
 
 
=== Операции с паролями ===
 
 
 
==== privSetPassword ====
 
 
 
Метод позволяет установить новый регистрационный пароль для пользователя.
 
clnt.privSetPassword([[Python:user_id|user_id]], [[Python:password|oldpwd]], [[Python:password|newpwd]])
 
Для изменения пароля необходимо указание старого пароля. В базе пользователей пароль будет хранится в виде хеша SHA1. При ошибке выбрасывается исключение IOError.
 
 
 
Для выполнения операции соединение должно быть авторизовано с уровнем привилегий ADMIN.
 
Необходимо полномочие EDIT_PASSWD для базы пользователей, если пользователь user_id непривилегированный, и полномочие PRIV_EDIT_PASSWD для базы пользователей, если пользователь user_id привилегированный.
 
 
 
Если параметр user_id равен 0, операция выполняется над текущим пользователем. При выполнении операции для текущего пользователя никаких полномочий не требуется.
 
 
 
==== privSetContestPassword ====
 
 
 
Метод позволяет установить новый турнирный пароль для пользователя.
 
clnt.privSetContestPassword([[Python:user_id|user_id]], [[Python:contest_id|contest_id]], [[Python:password|oldpwd]], [[Python:password|newpwd]])
 
Для изменения пароля необходимо указание старого пароля. В базе пользователей пароль будет хранится в виде хеша SHA1. При ошибке выбрасывается исключение IOError.
 
 
 
Для выполнения операции соединение должно быть авторизовано с уровнем привилегий ADMIN.
 
Если пользователь user_id непривилегированный, необходимо полномочие EDIT_PASSWD для базы пользователей или для указанного турнира. Если пользователь user_id привилегированный, необходимо полномочие PRIV_EDIT_PASSWD для базы пользователей или для указаноного турнира. Если параметр contest_id равен 0, требуется только полномочие для базы пользователей.
 
 
 
Если параметр user_id равен 0, операция выполняется для текущего пользователя. При выполнении операции для текущего пользователя никаких полномочий не требуется.
 
 
 
==== privGenerateRandomPassword ====
 
 
 
Метод позволяет сгенерировать новый случайный регистрационный пароль.
 
Длина случайного пароля - 8 символов.
 
clnt.privGenerateRandomPassword([[Python:user_id|user_id]])
 
При ошибке выбрасывается исключение IOError.
 
 
 
Для выполнения операции соединение должно быть авторизовано с уровнем привилегий ADMIN.
 
Необходимо полномочие EDIT_PASSWD для базы пользователей, если пользователь user_id непривилегированный, и полномочие PRIV_EDIT_PASSWD для базы пользователей, если пользователь user_id привилегированный.
 
 
 
Если параметр user_id равен 0, операция выполняется над текущим пользователем. При выполнении операции для текущего пользователя никаких полномочий не требуется.
 
 
 
==== privGenerateRandomContestPassword ====
 
 
 
Метод позволяет сгенерировать новый случайный турнирный пароль.
 
Длина случайного пароля - 8 символов.
 
clnt.privGenerateRandomContestPassword([[Python:user_id|user_id]], [[Python:contest_id|contest_id]])
 
При ошибке выбрасывается исключение IOError.
 
 
 
Для выполнения операции соединение должно быть авторизовано с уровнем привилегий ADMIN.
 
Если пользователь user_id непривилегированный, необходимо полномочие EDIT_PASSWD для базы пользователей или для указанного турнира. Если пользователь user_id привилегированный, необходимо полномочие PRIV_EDIT_PASSWD для базы пользователей или для указаноного турнира. Если параметр contest_id равен 0, требуется только полномочие для базы пользователей.
 
 
 
Если параметр user_id равен 0, операция выполняется для текущего пользователя. При выполнении операции для текущего пользователя никаких полномочий не требуется.
 
 
 
==== privCopyContestPasswordToPassword ====
 
 
 
Метод позволяет скопировать турнирный пароль в регистрационный пароль.
 
clnt.privCopyContestPasswordToPassword([[Python:user_id|user_id]], [[Python:contest_id|contest_id]])
 
При ошибке выбрасывается исключение IOError.
 
 
 
Для выполнения операции соединение должно быть авторизовано с уровнем привилегий ADMIN.
 
Необходимо полномочие GET_USER для базы пользователей или для указанного турнира.
 
Если пользователь user_id непривилегированный, необходимо полномочие EDIT_PASSWD для базы пользователей. Если пользователь user_id привилегированный, необходимо полномочие PRIV_EDIT_PASSWD для базы пользователей. Если параметр contest_id равен 0, требуются только привилегии для базы пользователей.
 
 
 
Если параметр user_id равен 0, операция выполняется для текущего пользователя. При выполнении операции для текущего пользователя никаких полномочий не требуется.
 
 
 
==== privCopyPasswordToContestPassword ====
 
 
 
Метод позволяет скопировать турнирный пароль в регистрационный пароль.
 
clnt.privCopyPasswordToContestPassword([[Python:user_id|user_id]], [[Python:contest_id|contest_id]])
 
При ошибке выбрасывается исключение IOError.
 
 
 
Для выполнения операции соединение должно быть авторизовано с уровнем привилегий ADMIN.
 
Необходимо полномочие GET_USER для базы пользователей или для указанного турнира.
 
Если пользователь user_id непривилегированный, необходимо полномочие EDIT_PASSWD для базы пользователей или для указанного турнира. Если пользователь user_id привилегированный, необходимо полномочие PRIV_EDIT_PASSWD для базы пользователей или для указанного турнира. Если параметр contest_id равен 0, требуются только полномочия базы пользователей.
 
 
 
Если параметр user_id равен 0, операция выполняется для текущего пользователя. При выполнении операции для текущего пользователя никаких полномочий не требуется.
 
 
 
==== privClearContestPasswords ====
 
 
 
Метод позволяет очистить турнирные пароли в указанном турнире. Сбрасываются только турнирные пароли непривилегированных пользователей у которых не установлены никакие флаги режимов регистрации.
 
clnt.privClearContestPasswords([[Python:contest_id|contest_id]])
 
При ошибке выбрасывается исключение IOError.
 
 
 
Для выполнения операции соединение должно быть авторизовано с уровнем привилегий ADMIN.
 
Необходимо полномочие EDIT_PASSWD для базы пользователей или для указанного турнира и полномочие LIST_USERS для базы пользователей или указанного турнира.
 
 
 
==== privGenerateRandomContestPasswords ====
 
 
 
Метод позволяет сгенерировать случайные турнирные пароли. Генерируются только турнирные пароли непривилегированных пользователей у которых не установлены никакие флаги режимов регистрации.
 
clnt.privGenerateRandomContestPasswords([[Python:contest_id|contest_id]])
 
При ошибке выбрасывается исключение IOError.
 
 
 
Для выполнения операции соединение должно быть авторизовано с уровнем привилегий ADMIN.
 
Необходимо полномочие EDIT_PASSWD для базы пользователей или для указанного турнира и полномочие LIST_USERS для базы пользователей или указанного турнира.
 
 
 
==== privGenerateRandomPasswords ====
 
 
 
Метод позволяет сгенерировать случайные регистрационные пароли. Генерируются только регистрационные пароли непривилегированных пользователей у которых не установлены никакие флаги режимов регистрации.
 
clnt.privGenerateRandomPasswords([[Python:contest_id|contest_id]])
 
При ошибке выбрасывается исключение IOError.
 
 
 
Для выполнения операции соединение должно быть авторизовано с уровнем привилегий ADMIN.
 
Необходимо полномочие EDIT_PASSWD для базы пользователей и полномочие LIST_USERS для базы пользователей или для указанного турнира.
 

Latest revision as of 15:38, 16 December 2021