Пользовательские вкладки, поля и фильтры в карточке
См.также
Для создания пользовательских полей в базе данных векторов признаков см. Пользовательские метаданные в Tarantool.
Для добавления пользовательских вкладок и полей в карточки людей и транспортных средств выполните следующие действия:
Подготовьте список пользовательских вкладок и полей для добавления в карточки.
Откройте файл конфигурации
/opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py
.sudo vi /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py
Настройте карточки людей. Для этого раскомментируйте секцию
FFSECURITY
→CUSTOM_FIELDS
→human_card
и измените ее примерное содержимое с учетом следующих правил:'items'
: список полей в карточке. Опишите каждое поле следующими параметрами:'name'
: внутреннее имя поля, string.default
: значение по умолчанию. Если значение по умолчанию больше1e14 – 1
, то его следует записывать в виде строки, т. е.“123123..”
вместо123123..
.'label'
: название поля в веб-интерфейсе (в карточке), string.'tab'
: вкладка, на которой располагается поле. Преднастраивается отдельно.'display'
: формат отображения (form
илиlist
). Может содержать в себе string или array:list
- отображать в списке карточек (строчный вид).form
- отображать в форме редактирования.
'description'
: описание поля, string.'editable'
: редактируемость поля, boolean.'type'
: тип данных поля, string. Возможные значения:list
: принимаетitemsData
, ожидая список значений или список словарей со значениями. Пример:['value1', 'value2', 'value3']
или[{id:'1', label: 'value1'}, {'id': '2', 'label': 'value2'}]
.datetime
: примитивный тип данных, отображаемый как список datetime.date
: примитивный тип данных, отображаемый как выбор даты.boolean
: примитивный тип данных, отображаемый как флажок.string
: примитивный тип данныхstring
.multiple
: возможность выбора нескольких элементов в списке, boolean.
'filters'
: список фильтров для поиска по пользовательским полям. Параметры:'name'
: внутреннее имя фильтра,'label'
: название фильтра в веб-интерфейсе,'field'
: связанное поле в формате[имя поля]
.
'tabs'
: список полей в карточке.
Общий пример со всеми вариантами метаполей:
# -- Custom model fields -- # Edit CUSTOM_FIELDS -> `human_card` section to customize human card fields. # Edit CUSTOM_FIELDS -> `car_card` section to customize car card fields. ... # Below is an example with every field type possible. 'CUSTOM_FIELDS': { 'human_card': { 'tabs': [{'name': 'new_tab_1', 'label': 'NewTab_1'}], 'options': { 'list': { 'name': True } }, 'items': [ { 'name': 'string_ed', 'default': '', 'label': 'String_Editable', 'display': ['list', 'form'], 'description': 'String_editable', 'editable': True }, { 'name': 'string_display_form', 'default': 'Only_Form', 'label': 'String_Display_Only_form', 'display': 'form', 'description': 'String_display_form', 'editable': False }, { 'name': 'string_another_tab', 'default': '', 'label': 'String_Another_Tab', 'display': ['list', 'form'], 'tab': 'new_tab_1', 'description': 'String_editable_another_tab' }, { 'name': 'string_ned', 'default': '2.3', 'label': 'String_Not_Editable', 'display': ['list', 'form'], 'description': 'String_not_editable', 'editable': False }, { 'name': 'date', 'default': '', 'label': 'Date', 'display': 'form', 'description': 'Date_field', 'type': 'date', 'editable': True }, { 'name': 'datetime', 'default': '', 'label': 'Datetime', 'display': 'form', 'description': 'Datetime_field', 'type': 'datetime', 'editable': True }, { 'name': 'list_dict', 'default': '', 'label': 'List_Dict_display', 'display': ['form', 'list'], 'description': 'list_dict', 'type': 'list', 'multiple': False, 'itemsData': [ {'id': 'id1_text', 'label': 'label1_text'}, {'id': 'id2_text', 'label': 'label2_text'} ] }, { 'name': 'list', 'default': '', 'label': 'List_Values', 'display': 'form', 'description': 'List_Values', 'type': 'list', 'multiple': False, 'itemsData': ['value1', 'value2', 'value3'] }, { 'name': 'list_mult', 'default': '', 'label': 'list_Multiple', 'display': 'form', 'description': 'List_Multiple', 'type': 'valuelist', 'multiple': True, 'itemsData': ['value1', 'value2', 'value3'] }, { 'name': 'checkbox', 'default': '', 'label': 'Checkbox', 'display': 'form', 'description': 'Checkbox', 'type': 'boolean' } ], 'filters': [ { 'name': 'filter_contains', 'label': 'Filter_Icontains', 'field': 'string_ed__icontains' }, { 'name': 'filter_exact_match', 'label': 'Filter_Exact_match', 'field': 'string_ed' }, { 'name': 'filter_values', 'label': 'ValuesList_filter', 'field': 'list', 'type': 'valuelist', 'itemsData': ['value1', 'value2', 'value3'] }, { 'name': 'filter_values_multiple', 'label': 'ValuesList_filter_Multiple', 'field': 'list_mult', 'type': 'valuelist', 'multiple': True, 'itemsData': ['value1', 'value2', 'value3'] } ] }, 'car_card': {} # same fields are available }, 'camera_meta': { 'items': [ { 'name': 'camera_id', 'default': None, 'label': 'Camera id', 'display': ['list', 'form'], 'description': 'Camera id in custom system' } ], 'filters': [ { 'name': 'camera_id_filter', 'label': 'Camera id filter', 'field': 'camera_id' } ] }, 'face_object': { 'items': [ { 'field_name': 'tag_name_1', 'type': 'string', 'default': 'change_me' }, { 'field_name': 'tag_name_2', 'type': 'uint', 'default': 123 }, { 'field_name': 'tag_name_3', 'type': 'bool', 'default': True } ] }
Важно
Редактируемость пользовательского поля также зависит от прав доступа роли пользователя. Прежде чем сделать пользовательское поле редактируемым, указав
'editable': True
в файле конфигурации/opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py
, убедитесь, что у роли пользователя включены следующие права доступа:humancard
(илиcarcard
) →Просмотр
,Изменить
связанный список наблюдения →
Изменить
При отключении данных прав все поля карточек, стандартные и пользовательские, останутся недоступными для редактирования. Подробнее читайте в разделе Управление ролями и пользователями.
Пример: Настройка вкладок (
tabs
).'CUSTOM_FIELDS': { 'human_card': { 'options': { 'list': { 'name': True } 'tabs': [ {'name': 'new_tab_1', label: 'NewTab_1' } }, 'items': [......]
Пример: Добавить пользовательское поле
gender
с предопределенным списком значений (male
иfemale
) и включить фильтрацию по нему.FFSECURITY = { 'CUSTOM_FIELDS': { 'human_card': { 'items': [ { # Select only one of the suggested options from the drop-down menu. You cannot add new options using the user int> 'type': 'valuelist', 'name': 'gender', 'label': 'gender', # for ui 'default': '', 'display': ['list', 'form'], 'multiple': False, 'itemsData': ['male', 'female'], } ], 'filters': [ { 'name': 'gender-filter', 'label': 'Card gender filter', # for ui 'field': 'gender', 'type': 'valuelist', 'itemsData': ['male', 'female'] } ] }, 'car_card': {} # same fields structure } }
Настройте карточки транспортных средств. Для этого продублируйте содержимое секции
human_card
в секциюcar_card
и измените его по аналогии.Выполните перезапуск контейнеров FindFace Multi.
cd /opt/findface-multi/ sudo docker-compose restart
Вы увидите, что в карточках появилось новое содержимое.