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

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

Добавляет новый атрибут в измерение (создает колонку в таблице постгресса и кликхауса, отображает ее измерениях и в формах админки): 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, а значения будут браться из колонки первой строки 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“ — Руководитель

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