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