m3-fias
Что это?
Компонент для взаимодействия с сервисом адресной базы ФИАС, расположенной на удаленном сервере. Он позволит вам добавить в окно формы текстовые элементы, варианты заполнения которых можно будет получать по мере ввода текста.
Поле "Нас. пункт" заполняется значениями формального имени адресных объектов (далее - АО), относящихся к уровням 1 ("регион"), 4 ("город"), 6 ("нас. пункт") 90 ("доп. территория").
Поле "Улица" заполняется значениями АО уровня 7 ("улица"), 91 ("улицы на доп. территории").
Установка
pip install m3_fias -i http://pypi.bars-open.ru/simple
Подключение в m3_blank
- Добавить
m3_fias.demo
вINSTALLED_APPS
. - Заменить
workspace
вviews.py
наfias_workspace.html
. - Указать в
settings.py
параметрFIAS_API_URL
с адресом rest-сервиса ФИАС (django-rest-fias,https://bitbucket.org/barsgroup/django-rest-fias
) (на данный момент можно использоватьhttp://fias.bars-open.ru/fias/v1/ao/
.
Переход с m3-kladr
- Установите
m3-fias
. - Добавьте
m3-fias
в список зависимостей проекта. - Прописать адрес сервера ФИАС в FIAS_API_URL
settings.py
. Также поддерживаются параметры FIAS_CACHE_PREFIX (префикс для ключей в кэше, значение по умолчанию "m3-fias") и FIAS_CACHE_TIMEOUT (время кеширования данных, значение по умолчанию - 1 сутки). - Т.к. при работе с сервером ФИАС используется кеширование, необходимо настроить кэш Django. Использование Local-memory caching не рекомендуется в production cреде.
- Расширить размер колонок, содержащих коды КЛАДР до 36 символов.
- Сконвертируйте коды КЛАДР из этих колонок в GUID коды АО management-командой
translate_kladr_codes
. - Замените упоминания
ExtAddrComponent
в файлах форм наExtFiasAddrComponent
. - Подключить файл
/static/m3-fias/ext-fields/ext-fias-addrfield.js
в секциюextra_head
вашегоworkspace
(пример вm3_fias/demo/templates/fias_workspace.html
)
Ссылки на дома
В адресных компонентах добавлено новое скрытое поле house_guid, содержащее в себе GUID-идентификатор записи о доме в БД ФИАС. Это поле заполняется только в случае выбора одного из значений выпадающего поля с вариантами домов.
Впоследствии это значение не используется при отображении формы, и только передается в параметрах запроса к action-у.
Конвертация кодов КЛАДР
Для массовой конвертации кодов КЛАДР в колонках таблиц можно использовать
management-команду translate_kladr_codes
:
python ./manage.py translate_kladr_codes <имя приложения> <имя модели> <поле1> [<поле2>...<полеN>]
К примеру, имеется модель Children приложения declaration, который содержит поля address_place и address_street для хранения кодов КЛАДР. Для конвертации их в GUID'ы ФИАС, нужно запустить команду следующим образом:
python ./manage.py translate_kladr_codes children address_place address_street
Запущенная команда затем сделает выборку всех численных значений из указанных колонок таблицы (полей модели), и будет запрашивать соответствующие им значения GUID с удаленного сервера. После нахождения соответствия, все поля записи содержащих эти коды будут обновлены.
N.B. Поиск соответствий производится только среди объектов с проставленным статусом актуальности, поэтому возможна ситуация, когда некоторые коды остаются несконвертированными.