Федеральная информационная адресная система


License
MIT
Install
pip install m3-fias==1.2.5

Documentation

m3-fias

Что это?

Компонент для взаимодействия с сервисом адресной базы ФИАС, расположенной на удаленном сервере. Он позволит вам добавить в окно формы текстовые элементы, варианты заполнения которых можно будет получать по мере ввода текста.

Поле "Нас. пункт" заполняется значениями формального имени адресных объектов (далее - АО), относящихся к уровням 1 ("регион"), 4 ("город"), 6 ("нас. пункт") 90 ("доп. территория").

Поле "Улица" заполняется значениями АО уровня 7 ("улица"), 91 ("улицы на доп. территории").

Установка

pip install m3_fias -i http://pypi.bars-open.ru/simple

Подключение в m3_blank

  1. Добавить m3_fias.demo в INSTALLED_APPS.
  2. Заменить workspace в views.py на fias_workspace.html.
  3. Указать в 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

  1. Установите m3-fias.
  2. Добавьте m3-fias в список зависимостей проекта.
  3. Прописать адрес сервера ФИАС в FIAS_API_URL settings.py. Также поддерживаются параметры FIAS_CACHE_PREFIX (префикс для ключей в кэше, значение по умолчанию "m3-fias") и FIAS_CACHE_TIMEOUT (время кеширования данных, значение по умолчанию - 1 сутки).
  4. Т.к. при работе с сервером ФИАС используется кеширование, необходимо настроить кэш Django. Использование Local-memory caching не рекомендуется в production cреде.
  5. Расширить размер колонок, содержащих коды КЛАДР до 36 символов.
  6. Сконвертируйте коды КЛАДР из этих колонок в GUID коды АО management-командой translate_kladr_codes.
  7. Замените упоминания ExtAddrComponent в файлах форм на ExtFiasAddrComponent.
  8. Подключить файл /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. Поиск соответствий производится только среди объектов с проставленным статусом актуальности, поэтому возможна ситуация, когда некоторые коды остаются несконвертированными.