Name | m3-gar JSON |
Version |
1.1.0
JSON |
| download |
home_page | None |
Summary | GAR Django integration for m3 |
upload_time | 2024-04-12 07:23:04 |
maintainer | None |
docs_url | None |
author | BARS Group |
requires_python | None |
license | MIT license |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
Приложение для работы с базой данных ГАР в Django
Основные возможности
====================
* Импорт базы ГАР из:
* архива XML
* каталога с XML
* напрямую с сайта http://fias.nalog.ru в формате XML
* Импорт всех существующих справочников и классификаторов ГАР (с возможностью выборочного импорта)
* Возможность хранить данные в отдельной БД
Совместимость
=============
* Гарантируется работа на Django 3.2 и Python 3.9
Описание ключей командной строки (./manage.py gar_load_data)
============================================================
--src <path|filename|url|auto>
Путь до архива с БД ГАР, каталога, в который предварительно был распакован архив или URL-адрес, с которого требуется скачать импортируемый архив
Значение `auto` означает автоматическое получение данных с сайта http://fias.nalog.ru
--truncate
Указывает полностью удалять все данные из таблицы перед импортом в неё
--no-truncate
Разрешает загрузку данных в непустую БД
--no-transaction
Производит импорт без транзакции
--update
Обновляет БД ГАР до актуальной версии (после импорта)
--limit
Устанавливает размер пачки записей, единовременно загружаемой в БД
Чем больше размер, тем быстрее импорт (в теории), но дольше обработка ошибок, если таковые возникнут
По-умолчанию: 10000
--tables
Задаёт список таблиц для импорта через запятую
--update-version-info, --no-update-version-info
Указывает, обновлять ли список версий БД ГАР
По-умолчанию: True
--tempdir TEMPDIR
Путь к каталогу, где будут размещены временные файлы в процессе импорта
Каталог должен существовать и быть доступен для записи
Установка
=========
1. Установите `m3-gar`::
pip install m3-gar
2. Добавьте `m3_gar` в `INSTALLED_APPS`.
5. Если вы желаете использовать отдельную БД под данные ГАР, выполните следующее
* Создайте БД и подключите её в `DATABASES`
* Добавьте параметр::
GAR_DATABASE_ALIAS = 'gar'
где `gar` - алиас БД в `DATABASES`
* Добавьте в список `DATABASE_ROUTERS`::
m3_gar.routers.GARRouter
* Выполните::
python manage.py migrate --database=gar
где `gar` - алиас БД в `DATABASES`
5. Выполните::
python manage.py migrate
Импорт данных
=============
Расшифровка сокращений
----------------------
* T: Table (Таблица) - импортируемая в данный момент таблица
* L: Loaded (Загружено) - количество уже загруженных в таблицу строк
* U: Updated (Обновлено) - количество обновлённых записей
* FN: Filename (Имя файла) - имя файла импортируемой таблицы
Первоначальная загрузка данных
------------------------------
Существует несколько способов импортировать данные в БД ГАР
Полностью автоматический импорт с сайта ФИАС::
python manage.py gar_load_data --src auto
Такой способ не всегда целесообразен по разным причинам, поэтому лучше самостоятельно скачать полный архив и импортировать уже его::
# Архив с XML-файлами
python manage.py gar_load_data --src /path/to/gar_xml.zip
# Каталог с распакованным содержимым архива
python manage.py gar_load_data --src /path/to/gar_data/
**Но!**
В случае, если в БД уже есть какие-то данные, скрипт выдаст соответствующее сообщение и прекратит работу.
Такое поведение связано с тем, что при импорте из файла, если версия файла не совпадает с версией данных в какой-то таблице в БД ГАР,
данные в этой таблице могут быть удалены полностью и заменены новыми, при этом
ORM Django при наличии связанных таблиц удалит данные так же и оттуда.
Поэтому, если по этой или какой-то иной причине нужно импортировать всю БД ГАР заново, добавьте флаг *--truncate*::
python manage.py gar_load_data --src /path/to/gar_xml.zip --truncate
Если скачанный файл не актуален, можно добавить к указанной выше команде флаг *--update* - скрипт сразу после импорта обновит БД до актуальной версии.::
python manage.py gar_load_data --src /path/to/gar_xml.zip --update
Использование отложенной согласованности БД
--------------------------------------------
Для первоначальной загрузки данных может быть выгодно временно отключить ограничения и индексы БД и выполнять загрузку без транзакции.
Для отключения ограничений предусмотрена команда manage_constraints, генерирующая SQL-код для удаления или восстановления ограничений и индексов полей.
Аргументы:
state
"enable" или "disable" для включения/отключения ограничений соответственно
Опции:
--fk
изменение состояния внешних ключей
--unique
изменение состояния ограничений уникальности
--index
изменение состояния индексов базы данных
--logged
изменение состояния журналируемости таблиц БД
--truncate
очистка данных из базы (см. "Удаление данных из БД" ниже)
--commit
запись изменений в БД, в противном случае происходит только генерация SQL-кода
Полный порядок действий:
1. Отключить ограничения:::
python manage.py manage_constraints disable --fk --unique --index --logged --commit
2. Произвести загрузку общих справочников::
python manage.py gar_load_data --no-truncate --no-transaction /path/to/gar_data/
В директории /path/to/gar_data/ должны лежать файлы AS_*.xml из корня архива, т.е.::
/path/to/gar_data/AS_ADDHOUSE_TYPES_20211004_91e6dc75-0e20-4af0-8bd4-81701eeb8961.XML
...
/path/to/gar_data/AS_ROOM_TYPES_20211004_5b63b804-601c-4fc2-b083-49a616a30723.XML
3. Произвести частичную загрузку одного или нескольких регионов::
python manage.py gar_load_data --no-truncate --no-transaction /path/to/gar_data/
В директории /path/to/gar_data/ должны лежать директории с данными по регионам, т.е. для загрузки регионов 01 и 02 должна быть структура вида::
/path/to/gar_data/01/AS_ADDR_OBJ_20211004_3d78254b-65da-4864-8495-fedad8adcbbf.XML
...
/path/to/gar_data/01/AS_STEADS_PARAMS_20211004_edc5fddf-5a2b-4f47-915b-2300f436fca1.XML
/path/to/gar_data/02/AS_ADDR_OBJ_20211004_46290f85-8a71-41de-9a8d-b6c01e3f6d60.XML
...
/path/to/gar_data/02/AS_STEADS_PARAMS_20211004_738598d9-38b0-441d-9276-c7ac7e41d606.XML
4. Повторить п.3 для других регионов
5. После успешной загрузки всех данных включить ограничения обратно:::
python manage.py manage_constraints enable --fk --unique --index --logged --commit
Удаление данных из БД
----------------------
Используется опция --truncate команды manage_constraints.
Принимает ничего, либо список регионов, разделённых запятой.
Для удаления данных по общим справочникам используется регион с кодом "0"
Выполнение происходит с учётом опции "--commit"
Для удаления всех данных::
python manage.py manage_constraints disable --truncate --commit
Для удаления данных общих справочников::
python manage.py manage_constraints disable --truncate=0 --commit
Для удаления данных общих справочников и некоторых регионов::
python manage.py manage_constraints disable --truncate=0,1,2,3 --commit
Для удаления данных некоторых регионов::
python manage.py manage_constraints disable --truncate=1,2,3 --commit
Обновление существующей БД
--------------------------
Для обновления БД выполните::
python manage.py gar_load_data --update
Обновление выполняется только с сайта ФИАС. Обновить базу из файла нельзя.
Обновление схемы данных
=======================
Для обновления схемы данных ГАР предоставлена команда `gar_update_schema`
--url
URL-адрес, с которого требуется скачать архив со схемами в формате XSD
--path
Путь до уже скачанного архива
--testmode
Указывает полностью удалять все данные из таблицы перед импортом в неё
Настройка settings.py
=====================
`GAR_DATABASE_ALIAS` - алиас БД в `DATABASES` для данных ГАР
Заполнение полей name_with_parents в модели иерархий и полей name_with_typename в модели AddrOdj
================================================================================================
В БД были добавлены дополнительные поля name_with_parents (в модели иерархий) и name_with_typename (в модели AddrOdj).
Для заполнения данных полей данными предоставлена команда `fill_custom_fields`
Для нее доступны следующие параметры:
--parents
Заполняем поля name_with_parents в модели иерархий, по умолчанию в муниципальной иерархии, можно указать ключи:
--adm - поля заполняются для административной иерархии
--guids - можно через запятую указать guid-ы объектов, для которых нужно заполнить поле
--levels - можно через запятую указать уровни объектов, для которых нужно заполнить поле
--typenames
Заполняем поля name_with_typename в модели AddrOdj для уровней 7 и 8 (улицы, микрорайоны, территории и т.д.)
--guids_typenames - можно через запятую указать guid-ы объектов, для которых нужно заполнить поле
Примеры выполнения команды:
- Обновление всех полей name_with_parents в модели муниципальной иерархии:
python manage.py fill_custom_fields --parents
- Обновление полей name_with_parents в модели муниципальной иерархии для уровней 1 и 2:
python manage.py fill_custom_fields --parents --levels=1,2
- Обновление всех полей name_with_typename в модели AddrObj:
python manage.py fill_custom_fields --typenames
- Обновление поля name_with_typename в модели AddrObj для объекта по guid:
python manage.py fill_custom_fields --typenames --guids_typenames=6b87470a-ac30-418b-991b-3c0d42515192
Raw data
{
"_id": null,
"home_page": null,
"name": "m3-gar",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": null,
"author": "BARS Group",
"author_email": "bars@bars.group",
"download_url": "https://files.pythonhosted.org/packages/a5/2f/7d2706b3a426e8f2296e9f1e0e605286867a6c97317a0df2153853f4c051/m3-gar-1.1.0.tar.gz",
"platform": null,
"description": "\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u0413\u0410\u0420 \u0432 Django\n\n\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438\n====================\n\n* \u0418\u043c\u043f\u043e\u0440\u0442 \u0431\u0430\u0437\u044b \u0413\u0410\u0420 \u0438\u0437:\n * \u0430\u0440\u0445\u0438\u0432\u0430 XML\n * \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0441 XML\n * \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441 \u0441\u0430\u0439\u0442\u0430 http://fias.nalog.ru \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 XML\n* \u0418\u043c\u043f\u043e\u0440\u0442 \u0432\u0441\u0435\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u0413\u0410\u0420 (\u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u044b\u0431\u043e\u0440\u043e\u0447\u043d\u043e\u0433\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0430)\n* \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0411\u0414\n\n\u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c\n=============\n\n* \u0413\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043d\u0430 Django 3.2 \u0438 Python 3.9\n\n\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 (./manage.py gar_load_data)\n============================================================\n\n\n--src <path|filename|url|auto>\n \u041f\u0443\u0442\u044c \u0434\u043e \u0430\u0440\u0445\u0438\u0432\u0430 \u0441 \u0411\u0414 \u0413\u0410\u0420, \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u044b\u043b \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043d \u0430\u0440\u0445\u0438\u0432 \u0438\u043b\u0438 URL-\u0430\u0434\u0440\u0435\u0441, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0430\u0440\u0445\u0438\u0432\n \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 `auto` \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0441\u0430\u0439\u0442\u0430 http://fias.nalog.ru\n\n--truncate\n \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u0435\u0440\u0435\u0434 \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u043c \u0432 \u043d\u0435\u0451\n\n--no-truncate\n \u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043d\u0435\u043f\u0443\u0441\u0442\u0443\u044e \u0411\u0414\n\n--no-transaction\n \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u0438\u043c\u043f\u043e\u0440\u0442 \u0431\u0435\u0437 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438\n\n--update\n \u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0411\u0414 \u0413\u0410\u0420 \u0434\u043e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 (\u043f\u043e\u0441\u043b\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0430)\n\n--limit\n \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u0447\u043a\u0438 \u0437\u0430\u043f\u0438\u0441\u0435\u0439, \u0435\u0434\u0438\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0439 \u0432 \u0411\u0414\n \u0427\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0440\u0430\u0437\u043c\u0435\u0440, \u0442\u0435\u043c \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0438\u043c\u043f\u043e\u0440\u0442 (\u0432 \u0442\u0435\u043e\u0440\u0438\u0438), \u043d\u043e \u0434\u043e\u043b\u044c\u0448\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\n \u041f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: 10000\n\n--tables\n \u0417\u0430\u0434\u0430\u0451\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u0430\u0431\u043b\u0438\u0446 \u0434\u043b\u044f \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u0443\u044e\n\n--update-version-info, --no-update-version-info\n \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043b\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0435\u0440\u0441\u0438\u0439 \u0411\u0414 \u0413\u0410\u0420\n \u041f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: True\n\n--tempdir TEMPDIR\n \u041f\u0443\u0442\u044c \u043a \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443, \u0433\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u044b \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0430\n \u041a\u0430\u0442\u0430\u043b\u043e\u0433 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438\n\n\n\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\n=========\n\n1. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 `m3-gar`::\n\n pip install m3-gar\n\n2. \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 `m3_gar` \u0432 `INSTALLED_APPS`.\n\n5. \u0415\u0441\u043b\u0438 \u0432\u044b \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0411\u0414 \u043f\u043e\u0434 \u0434\u0430\u043d\u043d\u044b\u0435 \u0413\u0410\u0420, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435\n\n* \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0411\u0414 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0435\u0451 \u0432 `DATABASES`\n* \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440::\n\n GAR_DATABASE_ALIAS = 'gar'\n\n\u0433\u0434\u0435 `gar` - \u0430\u043b\u0438\u0430\u0441 \u0411\u0414 \u0432 `DATABASES`\n\n* \u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a `DATABASE_ROUTERS`::\n\n m3_gar.routers.GARRouter\n\n* \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435::\n\n\n python manage.py migrate --database=gar\n\n\u0433\u0434\u0435 `gar` - \u0430\u043b\u0438\u0430\u0441 \u0411\u0414 \u0432 `DATABASES`\n\n5. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435::\n\n python manage.py migrate\n\n\n\u0418\u043c\u043f\u043e\u0440\u0442 \u0434\u0430\u043d\u043d\u044b\u0445\n=============\n\n\u0420\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0439\n----------------------\n* T: Table (\u0422\u0430\u0431\u043b\u0438\u0446\u0430) - \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\n* L: Loaded (\u0417\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043e) - \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u0436\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441\u0442\u0440\u043e\u043a\n* U: Updated (\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043e) - \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439\n* FN: Filename (\u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430) - \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b\n\n\u041f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445\n------------------------------\n\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0411\u0414 \u0413\u0410\u0420\n\n\u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043c\u043f\u043e\u0440\u0442 \u0441 \u0441\u0430\u0439\u0442\u0430 \u0424\u0418\u0410\u0421::\n\n python manage.py gar_load_data --src auto\n\n\u0422\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u0435\u043d \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u0443\u0447\u0448\u0435 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0432 \u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0443\u0436\u0435 \u0435\u0433\u043e::\n\n # \u0410\u0440\u0445\u0438\u0432 \u0441 XML-\u0444\u0430\u0439\u043b\u0430\u043c\u0438\n python manage.py gar_load_data --src /path/to/gar_xml.zip\n # \u041a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c \u0430\u0440\u0445\u0438\u0432\u0430\n python manage.py gar_load_data --src /path/to/gar_data/\n\n**\u041d\u043e!**\n\u0412 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0432 \u0411\u0414 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u043a\u0440\u0438\u043f\u0442 \u0432\u044b\u0434\u0430\u0441\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u0442 \u0440\u0430\u0431\u043e\u0442\u0443.\n\u0422\u0430\u043a\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0435 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430, \u0435\u0441\u043b\u0438 \u0432\u0435\u0440\u0441\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0432 \u0411\u0414 \u0413\u0410\u0420,\n\u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u044b \u043d\u043e\u0432\u044b\u043c\u0438, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c\nORM Django \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u0443\u0434\u0430\u043b\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0430\u043a \u0436\u0435 \u0438 \u043e\u0442\u0442\u0443\u0434\u0430.\n\u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u043f\u043e \u044d\u0442\u043e\u0439 \u0438\u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0438\u043d\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u044e \u0411\u0414 \u0413\u0410\u0420 \u0437\u0430\u043d\u043e\u0432\u043e, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0444\u043b\u0430\u0433 *--truncate*::\n\n python manage.py gar_load_data --src /path/to/gar_xml.zip --truncate\n\n\u0415\u0441\u043b\u0438 \u0441\u043a\u0430\u0447\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043d\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u0435\u043d, \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0444\u043b\u0430\u0433 *--update* - \u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u043e\u0431\u043d\u043e\u0432\u0438\u0442 \u0411\u0414 \u0434\u043e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438.::\n\n python manage.py gar_load_data --src /path/to/gar_xml.zip --update\n\n\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0411\u0414\n--------------------------------------------\n\n\u0414\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u0433\u043e\u0434\u043d\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0411\u0414 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0431\u0435\u0437 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438.\n\n\u0414\u043b\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 manage_constraints, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0449\u0430\u044f SQL-\u043a\u043e\u0434 \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u043f\u043e\u043b\u0435\u0439.\n\n\u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b:\n\nstate\n \"enable\" \u0438\u043b\u0438 \"disable\" \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f/\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\n\n\u041e\u043f\u0446\u0438\u0438:\n\n--fk\n \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043a\u043b\u044e\u0447\u0435\u0439\n\n--unique\n \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438\n\n--index\n \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\n\n--logged\n \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0436\u0443\u0440\u043d\u0430\u043b\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u0438 \u0442\u0430\u0431\u043b\u0438\u0446 \u0411\u0414\n\n--truncate\n \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0431\u0430\u0437\u044b (\u0441\u043c. \"\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0411\u0414\" \u043d\u0438\u0436\u0435)\n\n--commit\n \u0437\u0430\u043f\u0438\u0441\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0411\u0414, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f SQL-\u043a\u043e\u0434\u0430\n\n\u041f\u043e\u043b\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439:\n\n1. \u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f:::\n\n python manage.py manage_constraints disable --fk --unique --index --logged --commit\n\n2. \u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043e\u0431\u0449\u0438\u0445 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u043e\u0432::\n\n python manage.py gar_load_data --no-truncate --no-transaction /path/to/gar_data/\n\n\u0412 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 /path/to/gar_data/ \u0434\u043e\u043b\u0436\u043d\u044b \u043b\u0435\u0436\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b AS_*.xml \u0438\u0437 \u043a\u043e\u0440\u043d\u044f \u0430\u0440\u0445\u0438\u0432\u0430, \u0442.\u0435.::\n\n /path/to/gar_data/AS_ADDHOUSE_TYPES_20211004_91e6dc75-0e20-4af0-8bd4-81701eeb8961.XML\n ...\n /path/to/gar_data/AS_ROOM_TYPES_20211004_5b63b804-601c-4fc2-b083-49a616a30723.XML\n\n3. \u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u0443\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0440\u0435\u0433\u0438\u043e\u043d\u043e\u0432::\n\n python manage.py gar_load_data --no-truncate --no-transaction /path/to/gar_data/\n\n\u0412 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 /path/to/gar_data/ \u0434\u043e\u043b\u0436\u043d\u044b \u043b\u0435\u0436\u0430\u0442\u044c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u043e \u0440\u0435\u0433\u0438\u043e\u043d\u0430\u043c, \u0442.\u0435. \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0440\u0435\u0433\u0438\u043e\u043d\u043e\u0432 01 \u0438 02 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0432\u0438\u0434\u0430::\n\n /path/to/gar_data/01/AS_ADDR_OBJ_20211004_3d78254b-65da-4864-8495-fedad8adcbbf.XML\n ...\n /path/to/gar_data/01/AS_STEADS_PARAMS_20211004_edc5fddf-5a2b-4f47-915b-2300f436fca1.XML\n /path/to/gar_data/02/AS_ADDR_OBJ_20211004_46290f85-8a71-41de-9a8d-b6c01e3f6d60.XML\n ...\n /path/to/gar_data/02/AS_STEADS_PARAMS_20211004_738598d9-38b0-441d-9276-c7ac7e41d606.XML\n\n4. \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043f.3 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0440\u0435\u0433\u0438\u043e\u043d\u043e\u0432\n\n5. \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u0441\u0435\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e:::\n\n python manage.py manage_constraints enable --fk --unique --index --logged --commit\n\n\n\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0411\u0414\n----------------------\n\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u043f\u0446\u0438\u044f --truncate \u043a\u043e\u043c\u0430\u043d\u0434\u044b manage_constraints.\n\u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e, \u043b\u0438\u0431\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0435\u0433\u0438\u043e\u043d\u043e\u0432, \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u044f\u0442\u043e\u0439.\n\u0414\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u043e\u0431\u0449\u0438\u043c \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0440\u0435\u0433\u0438\u043e\u043d \u0441 \u043a\u043e\u0434\u043e\u043c \"0\"\n\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043e\u043f\u0446\u0438\u0438 \"--commit\"\n\n\u0414\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0434\u0430\u043d\u043d\u044b\u0445::\n\n python manage.py manage_constraints disable --truncate --commit\n\n\n\u0414\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u0449\u0438\u0445 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u043e\u0432::\n\n python manage.py manage_constraints disable --truncate=0 --commit\n\n\n\u0414\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u0449\u0438\u0445 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0435\u0433\u0438\u043e\u043d\u043e\u0432::\n\n python manage.py manage_constraints disable --truncate=0,1,2,3 --commit\n\n\n\u0414\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0435\u0433\u0438\u043e\u043d\u043e\u0432::\n\n python manage.py manage_constraints disable --truncate=1,2,3 --commit\n\n\n\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0411\u0414\n--------------------------\n\u0414\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0411\u0414 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435::\n\n python manage.py gar_load_data --update\n\n\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0441\u0430\u0439\u0442\u0430 \u0424\u0418\u0410\u0421. \u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0431\u0430\u0437\u0443 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u043d\u0435\u043b\u044c\u0437\u044f.\n\n\n\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0445\u0435\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445\n=======================\n\n\u0414\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0445\u0435\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0413\u0410\u0420 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 `gar_update_schema`\n\n--url\n URL-\u0430\u0434\u0440\u0435\u0441, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0430\u0440\u0445\u0438\u0432 \u0441\u043e \u0441\u0445\u0435\u043c\u0430\u043c\u0438 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 XSD\n\n--path\n \u041f\u0443\u0442\u044c \u0434\u043e \u0443\u0436\u0435 \u0441\u043a\u0430\u0447\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u0440\u0445\u0438\u0432\u0430\n\n--testmode\n \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u0435\u0440\u0435\u0434 \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u043c \u0432 \u043d\u0435\u0451\n\n\n\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 settings.py\n=====================\n`GAR_DATABASE_ALIAS` - \u0430\u043b\u0438\u0430\u0441 \u0411\u0414 \u0432 `DATABASES` \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0413\u0410\u0420\n\n\n\u0417\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0435\u0439 name_with_parents \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0439 \u0438 \u043f\u043e\u043b\u0435\u0439 name_with_typename \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 AddrOdj\n================================================================================================\n\n\u0412 \u0411\u0414 \u0431\u044b\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u044f name_with_parents (\u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0439) \u0438 name_with_typename (\u0432 \u043c\u043e\u0434\u0435\u043b\u0438 AddrOdj).\n\u0414\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 `fill_custom_fields`\n\u0414\u043b\u044f \u043d\u0435\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:\n\n--parents\n \u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u043e\u043b\u044f name_with_parents \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0439, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438, \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u043b\u044e\u0447\u0438:\n --adm - \u043f\u043e\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438\n --guids - \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u0443\u044e \u0443\u043a\u0430\u0437\u0430\u0442\u044c guid-\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u043b\u0435\n --levels - \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u0443\u044e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0443\u0440\u043e\u0432\u043d\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u043b\u0435\n\n--typenames\n \u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u043e\u043b\u044f name_with_typename \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 AddrOdj \u0434\u043b\u044f \u0443\u0440\u043e\u0432\u043d\u0435\u0439 7 \u0438 8 (\u0443\u043b\u0438\u0446\u044b, \u043c\u0438\u043a\u0440\u043e\u0440\u0430\u0439\u043e\u043d\u044b, \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0438 \u0438 \u0442.\u0434.)\n --guids_typenames - \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u0443\u044e \u0443\u043a\u0430\u0437\u0430\u0442\u044c guid-\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u043b\u0435\n\n\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b:\n\n - \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u0435\u0439 name_with_parents \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438:\n\n python manage.py fill_custom_fields --parents\n\n - \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0435\u0439 name_with_parents \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0434\u043b\u044f \u0443\u0440\u043e\u0432\u043d\u0435\u0439 1 \u0438 2:\n\n python manage.py fill_custom_fields --parents --levels=1,2\n\n - \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u0435\u0439 name_with_typename \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 AddrObj:\n\n python manage.py fill_custom_fields --typenames\n\n - \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f name_with_typename \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 AddrObj \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043f\u043e guid:\n\n python manage.py fill_custom_fields --typenames --guids_typenames=6b87470a-ac30-418b-991b-3c0d42515192\n",
"bugtrack_url": null,
"license": "MIT license",
"summary": "GAR Django integration for m3",
"version": "1.1.0",
"project_urls": null,
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "57b4de8f570abf253cbf511b1a4743a629cab31043dff8fdf4c4720a852082bb",
"md5": "1e1cfcb0169a5f2272aff939af0a99f2",
"sha256": "f548b91a28794a1d2aea3ab4c19ece6994f8f26bc424ca114824510a9f7b35f1"
},
"downloads": -1,
"filename": "m3_gar-1.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "1e1cfcb0169a5f2272aff939af0a99f2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 79175,
"upload_time": "2024-04-12T07:23:02",
"upload_time_iso_8601": "2024-04-12T07:23:02.114015Z",
"url": "https://files.pythonhosted.org/packages/57/b4/de8f570abf253cbf511b1a4743a629cab31043dff8fdf4c4720a852082bb/m3_gar-1.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a52f7d2706b3a426e8f2296e9f1e0e605286867a6c97317a0df2153853f4c051",
"md5": "8318783b73e24d6136395b5390faa6a9",
"sha256": "4e3bd8b30ecec064aaa568b3618392d9f1e8cee46dad0eef0bfc3d25fa6c1f29"
},
"downloads": -1,
"filename": "m3-gar-1.1.0.tar.gz",
"has_sig": false,
"md5_digest": "8318783b73e24d6136395b5390faa6a9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 56263,
"upload_time": "2024-04-12T07:23:04",
"upload_time_iso_8601": "2024-04-12T07:23:04.509840Z",
"url": "https://files.pythonhosted.org/packages/a5/2f/7d2706b3a426e8f2296e9f1e0e605286867a6c97317a0df2153853f4c051/m3-gar-1.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-12 07:23:04",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "m3-gar"
}