Загрузка дополнительной информации о сотрудниках в динамические поля

Работа с динамическими полями

Добавляет новый атрибут в измерение (создает колонку в таблице постгресса и кликхауса, отображает ее измерениях и в формах админки): staffcop dynamic add [dimension] [attribute] [Русская метка] [Английская метка]

staffcop dynamic add agent_account physicalDeliveryOfficeName Комната Room

Удаляет атрибут из измерения, дропает колонки: staffcop dynamic delete [dimension] [attribute]

staffcop dynamic delete agent_account physicalDeliveryOfficeName

Отображает динамические атрибуты: staffcop dynamic list

staffcop dynamic list
{
   "agent_account": [
       {
           "name": "physicaldeliveryofficename",
           "label": {
               "ru": "Комната",
               "en": "Room"
           }
       }
   ]
}

Информация о динамических атрибутах хранится в файле /var/lib/staffcop/dynamic.json

Имя атрибута АД должно совпадать с именем динамического атрибута. После синхронизации с AD данные заполняться.

Загрузка данных о сотрудниках через csv

Для загрузки данных используется команда staffcop 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, а значения будут браться из колонки 1 строки 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-* - означает взять значения из всех колонок

Ограничения:

Пока можно обновлять только одну модель (таблицу) - Пользователи (agen_account)

Не все поля можно обновить - для agent_account это:

  • „comment“ - Комментарий

  • „skype“ - Номер / логин скайп

  • „phone“ - Номер телефона

  • „post“ - Должность

  • „full_name“ - Полное Имя

  • „office“ - Отдел/офис

  • „www“ - Веб-страница

  • „company“ - Организация

  • „manager“ - Руководитель

  • „Все динамические поля, которые добавлены командой staffcop 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;Департамент клиентского обслужования;;;;;;;;
;;;;;;;;;;

Загрузку на основе примера выше:

staffcop update_models_from_csv путь_к_csv --search-key mail=1 --map англ_имя_кастомного_поля_ Подразделение1=2 --no-dry-run