Имеется следующая задача: по скрипту завести пользователя в битриксе, с уже настроенными паролем, группами, и т.д.
Мой код:
import requests
from bs4 import BeautifulSoup
# 1. Авторизация в админ-панели
session = requests.Session()
login_url = f"{PORTAL_URL}/bitrix/admin/"
login_data = {
"AUTH_FORM": "Y",
"TYPE": "AUTH",
"USER_LOGIN": ADMIN_USER,
"USER_PASSWORD": ADMIN_PASS,
"Login": "Войти"
}
# 2. Получение CSRF-токена
admin_page = session.get(f"{PORTAL_URL}/bitrix/admin/user_edit.php")
soup = BeautifulSoup(admin_page.text, 'html.parser')
csrf_token = soup.find('input', {'name': 'sessid'})['value']
# 3. Создание пользователя через внутренний API
user_data = {
"sessid": csrf_token,
"lang": "ru",
"ACTION": "ADD",
# Основные данные
"LOGIN": USER_EMAIL,
"EMAIL": USER_EMAIL,
"NAME": "Тест",
"LAST_NAME": "Пользователь",
"SECOND_NAME": "",
"PERSONAL_GENDER": "M",
# Пароль
"NEW_PASSWORD": USER_PASSWORD,
"NEW_PASSWORD_CONFIRM": USER_PASSWORD,
# Права доступа
"GROUP_ID": [3, 4, 12],
"ACTIVE": "Y",
# Отдел
"UF_DEPARTMENT[]": [1], # ID отдела
"WORK_DEPARTMENT": "test",
"WORK_POSITION": 'test',
"apply": "Y", # Сохранить и остаться на странице
}
# Отправка запроса на создание пользователя
create_response = session.post(
f"{PORTAL_URL}/bitrix/admin/user_edit.php",
data=user_data
)
Все работает кроме одного: группы не применяются (3, 4, 12 - айдишники групп).
Увидел коммент в доке, где на php нужно делать так:
[GROUP_ID] => Array
(
[0] => Array
(
[GROUP_ID] => 10
[DATE_ACTIVE_FROM] => 24.07.2007
[DATE_ACTIVE_TO] => 24.07.2008
)
[1] => Array
(
[GROUP_ID] => 20
[DATE_ACTIVE_FROM] =>
[DATE_ACTIVE_TO] =>
)
)
Переделал под питон:
GROUPS = [
{
"GROUP_ID": 3,
"DATE_ACTIVE_FROM": "",
"DATE_ACTIVE_TO": ""
},
{
"GROUP_ID": 4,
"DATE_ACTIVE_FROM": "",
"DATE_ACTIVE_TO": ""
},
{
"GROUP_ID": 12,
"DATE_ACTIVE_FROM": "",
"DATE_ACTIVE_TO": ""
}
]
. . .
group_fields = {}
for i, group in enumerate(GROUPS):
group_fields[f"GROUP_ID[{i}][GROUP_ID]"] = group["GROUP_ID"]
group_fields[f"GROUP_ID[{i}][DATE_ACTIVE_FROM]"] = group["DATE_ACTIVE_FROM"]
group_fields[f"GROUP_ID[{i}][DATE_ACTIVE_TO]"] = group["DATE_ACTIVE_TO"]
. . .
user_data = {
"sessid": csrf_token,
"lang": "ru",
"ACTION": "ADD",
"apply": "Y",
"LOGIN": USER_EMAIL,
"EMAIL": USER_EMAIL,
"NAME": "Тест",
"LAST_NAME": "Пользователь",
"SECOND_NAME": "",
"PERSONAL_GENDER": "M",
"NEW_PASSWORD": USER_PASSWORD,
"NEW_PASSWORD_CONFIRM": USER_PASSWORD,
"ACTIVE": "Y",
"UF_DEPARTMENT[]": [1],
"WORK_DEPARTMENT": "test",
"WORK_POSITION": 'test',
**group_fields
}
Ничего не получилось.
В чем может быть проблема?