Загрузка дополнительной информации о сотрудниках в динамические поля¶
Работа с динамическими полями¶
Добавляет новый атрибут в измерение (создает колонку в таблице постгресса и кликхауса, отображает ее измерениях и в формах админки): IBatyr dynamic add [dimension] [attribute] [Русская метка] [Английская метка]
ibatyr dynamic add agent_account physicalDeliveryOfficeName Комната Room
Удаляет атрибут из измерения, дропает колонки: ibatyr dynamic delete [dimension] [attribute]
ibatyr dynamic delete agent_account physicalDeliveryOfficeName
Отображает динамические атрибуты: ibatyr dynamic list
ibatyr dynamic list
{
"agent_account": [
{
"name": "physicaldeliveryofficename",
"label": {
"ru": "Комната",
"en": "Room"
}
}
]
}
Информация о динамических атрибутах хранится в файле /var/lib/staffcop/dynamic.json
Имя атрибута АД должно совпадать с именем динамического атрибута. После синхронизации с AD данные заполняются.
Загрузка данных о сотрудниках через csv¶
Для загрузки данных используется команда ibatyr update_models_from_csv.
Позволяет обновить данные в модели, включая динамические поля из файла формата csv.
Естественно, что динамические поля должны быть добавлены к таблице.
Ключи командной строки:
—search-key search_expr* — поле по которому будет произведен поиск записи для обновления и какое значение из строки csv-файла будет использовано для поиска.
—map map_expr* — одна или несколько данных опций указывают какие поля и необходимо обновить и какие значения из строки csv-файла будут использованы для этого.
—no-dry-run* — действительно обновить данные. По умолчанию обновление не происходит - только вывод протокола обновления на экран.
—coding* — кодировка входного csv-файла
—skip-header* — пропустить первую строку csv-файла (она может содержать заголовок). По умолчанию отключена.
-v / —verbosity* — уровень логирования (0 - отключить)
—delimiter* — разделитель колонок в csv-файле. По умолчанию ‘;’
Выражения в командной строке в опциях –search-key и –map
Выражение имеет вид: <имя_поля>=<столбцы в строке csv-файла через запятую>
Например: “—search_expression mail=1” — означает, что для поиска записей для обновления будет использовано поле mail, а значения будут браться из колонки первой строки csv-файла
“—map office=1,2,3” - означает, что если запись найдена, то для нее будет обновлено поле office, которое примет объединенное значение из колонок 1,2,3
Дополнительно можно указывать символ объединения: “—map office=1,2,3:.” — означает, что если запись найдена, то для нее будет обновлено поле office, которое примет объединенное через ‘.’ значение из колонок 1,2,3
Можно не перечислять все номера, а использовать диапазон. Последний номер не включается (как в Python) “—map office=1-4:.” — означает, что если запись найдена, то для нее будет обновлено поле office, которое примет объединенное через ‘.’ значение из колонок 1,2,3
И можно использовать комбинации номеров колонок и диапазонов “—map office=1-4,10:.” — означает, что если запись найдена, то для нее будет обновлено поле office, которое примет объединенное через ‘.’ значение из колонок 1,2,3,10
Пересечение и дублирование номеров колонок в выражениях допускается. В таком случае значение колонки будет просто продублировано, столько раз, сколько некоторый номер колонки встретился в выражении (включая диапазоны).
Вместо номера последней колонки можно использовать символ * - это верно и для диапазонов.
0-* — означает взять значения из всех колонок
Ограничения:
Пока можно обновлять только одну модель (таблицу) — Пользователи (agent_account)
Не все поля можно обновить — для agent_account это:
‘comment’— Комментарий
‘skype’ — Номер / логин скайп
‘phone’ — Номер телефона
‘post’ — Должность
‘full_name’ — Полное Имя
‘office’ — Отдел/офис
‘www’ — Веб-страница
‘company’ — Организация
‘manager’ — Руководитель
‘Все динамические поля, которые добавлены командой IBatyr dynamic add …. ‘
Не по всем полям можно производить поиск (не все поля можно указывать в –search-key) для agent_account это:
mail — email юзера
user_name — имя пользователя
Поиск записей происходит только по текстовым полям. С использованием выражения ‘like’ Это означает, что при поиске может быть найдено сразу несколько подходящих записей для обновления. Обновлены будут все!
Формат файла csv
Пример:
Сотрудник;Корпоративный email;Подразделение1;;;;;;;;
;;;;;;;;;;
Иванов Александр Петрович;a.ivanov@atloc.ru;Хозяйственное управление;;;;;;;;
Петров Антон Александрович;a.petrov@atloc.ru;Департамент страхования;;;;;;;;
Дихтярь Илья Сергеевич;i.dictyar@atloc.ru;Департамент клиентского обслуживания;;;;;;;;
;;;;;;;;;;
Загрузку на основе примера выше:
ibatyr update_models_from_csv путь_к_csv --search-key mail=1 --map англ_имя_кастомного_поля_ Подразделение1=2 --no-dry-run