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