Сид подразделений: полный список РВС — РЦУ РЧС → 6 ОУМЧС → 135 РОЧС/ГОЧС/ГРОЧС
Названия областей в краткой форме РВС (Минское ОУМЧС и т.д.). Старые демо-записи с длинными названиями областей подлежат разовой чистке на стенде.
This commit is contained in:
+156
-25
@@ -1,5 +1,6 @@
|
||||
"""E2-сид: справочник подразделений МЧС (иерархия РЦУ РЧС → ОУМЧС → Г(Р)ОЧС).
|
||||
"""E2-сид: справочник подразделений МЧС — полный список из РВС.
|
||||
|
||||
РЦУ РЧС → 6 ОУМЧС → Г(Р)ОЧС (РОЧС/ГОЧС/ГРОЧС, 135 шт. из podr.json РВС).
|
||||
Идемпотентный: существующие названия не дублируются.
|
||||
Запуск: docker exec vector-backend sh -c 'cd /app && python backend/seed_units.py'
|
||||
"""
|
||||
@@ -13,21 +14,155 @@ sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
|
||||
from backend.database import SessionLocal # noqa: E402
|
||||
from backend.models import MchsUnit # noqa: E402
|
||||
|
||||
OBLASTS = [
|
||||
('Минское областное управление МЧС', 'oblast'),
|
||||
('Брестское областное управление МЧС', 'oblast'),
|
||||
('Витебское областное управление МЧС', 'oblast'),
|
||||
('Гомельское областное управление МЧС', 'oblast'),
|
||||
('Гродненское областное управление МЧС', 'oblast'),
|
||||
('Могилёвское областное управление МЧС', 'oblast'),
|
||||
]
|
||||
|
||||
# Демо-набор Г(Р)ОЧС по одной области (Минская) — реальный справочник наполняется
|
||||
# региональными админами через админку/скрипт при развёртывании.
|
||||
MINSK_RAYONS = [
|
||||
'Борисовский ГРОЧС', 'Жодинский ГРОЧС', 'Слуцкий ГРОЧС',
|
||||
'Молодечненский ГРОЧС', 'Столбцовский ГРОЧС',
|
||||
]
|
||||
UNITS = {
|
||||
'Брестское ОУМЧС': [
|
||||
'Барановичский ГРОЧС',
|
||||
'Березовский РОЧС',
|
||||
'Брестский ГОЧС',
|
||||
'Брестский ПАСО',
|
||||
'Брестский РОЧС',
|
||||
'Ганцевичский РОЧС',
|
||||
'Дрогичинский РОЧС',
|
||||
'Жабинковский РОЧС',
|
||||
'Ивановский РОЧС',
|
||||
'Ивацевичский РОЧС',
|
||||
'Каменецкий РОЧС',
|
||||
'Кобринский РОЧС',
|
||||
'Лунинецкий РОЧС',
|
||||
'Ляховичский РОЧС',
|
||||
'Малоритский РОЧС',
|
||||
'Пинский ГРОЧС',
|
||||
'Пружанский РОЧС',
|
||||
'Столинский РОЧС',
|
||||
],
|
||||
'Витебское ОУМЧС': [
|
||||
'Бешенковичский РОЧС',
|
||||
'Браславский РОЧС',
|
||||
'Верхнедвинский РОЧС',
|
||||
'Витебский ГОЧС',
|
||||
'Витебский ПАСО',
|
||||
'Витебский РОЧС',
|
||||
'Глубокский РОЧС',
|
||||
'Городокский РОЧС',
|
||||
'Докшицкий РОЧС',
|
||||
'Дубровенский РОЧС',
|
||||
'Лепельский РОЧС',
|
||||
'Лиозненский РОЧС',
|
||||
'Миорский РОЧС',
|
||||
'Новополоцкий ГОЧС',
|
||||
'Новополоцкий ПАСО',
|
||||
'Оршанский ГРОЧС',
|
||||
'Полоцкий ГРОЧС',
|
||||
'Поставский РОЧС',
|
||||
'Россонский РОЧС',
|
||||
'Сенненский РОЧС',
|
||||
'Толочинский РОЧС',
|
||||
'Ушачский РОЧС',
|
||||
'Чашникский РОЧС',
|
||||
'Шарковщинский РОЧС',
|
||||
'Шумилинский РОЧС',
|
||||
],
|
||||
'Гомельское ОУМЧС': [
|
||||
'Брагинский РОЧС',
|
||||
'Буда-Кошелевский РОЧС',
|
||||
'Ветковский РОЧС',
|
||||
'Гомельский ГОЧС',
|
||||
'Гомельский ПАСО',
|
||||
'Гомельский РОЧС',
|
||||
'Добрушский РОЧС',
|
||||
'Ельский РОЧС',
|
||||
'Житковичский РОЧС',
|
||||
'Жлобинский РОЧС',
|
||||
'Калинковичский РОЧС',
|
||||
'Кормянский РОЧС',
|
||||
'Лельчицкий РОЧС',
|
||||
'Лоевский РОЧС',
|
||||
'Мозырский ГРОЧС',
|
||||
'Мозырский ПАСО',
|
||||
'Наровлянский РОЧС',
|
||||
'Октябрьский РОЧС',
|
||||
'Петриковский РОЧС',
|
||||
'Речицкий ПАСО',
|
||||
'Речицкий РОЧС',
|
||||
'Рогачевский РОЧС',
|
||||
'Светлогорский РОЧС',
|
||||
'Хойникский РОЧС',
|
||||
'Чечерский РОЧС',
|
||||
],
|
||||
'Гродненское ОУМЧС': [
|
||||
'Берестовицкий РОЧС',
|
||||
'Волковысский РОЧС',
|
||||
'Вороновский РОЧС',
|
||||
'Гродненский ГОЧС',
|
||||
'Гродненский ПАСО',
|
||||
'Гродненский РОЧС',
|
||||
'Дятловский РОЧС',
|
||||
'Зельвенский РОЧС',
|
||||
'Ивьевский РОЧС',
|
||||
'Кореличский РОЧС',
|
||||
'Лидский РОЧС',
|
||||
'Мостовский РОЧС',
|
||||
'Новогрудский РОЧС',
|
||||
'Островецкий РОЧС',
|
||||
'Ошмянский РОЧС',
|
||||
'Свислочский РОЧС',
|
||||
'Слонимский РОЧС',
|
||||
'Сморгонский РОЧС',
|
||||
'Щучинский РОЧС',
|
||||
],
|
||||
'Минское ОУМЧС': [
|
||||
'Березинский РОЧС',
|
||||
'Борисовский ГРОЧС',
|
||||
'Вилейский РОЧС',
|
||||
'Воложинский РОЧС',
|
||||
'Дзержинский РОЧС',
|
||||
'Жодинский ГОЧС',
|
||||
'Клецкий РОЧС',
|
||||
'Копыльский РОЧС',
|
||||
'Крупский РОЧС',
|
||||
'Логойский РОЧС',
|
||||
'Любанский РОЧС',
|
||||
'Минский ПАСО',
|
||||
'Минский РОЧС',
|
||||
'Молодечненский ГРОЧС',
|
||||
'Мядельский РОЧС',
|
||||
'Несвижский РОЧС',
|
||||
'Пуховичский РОЧС',
|
||||
'Слуцкий РОЧС',
|
||||
'Смолевичский РОЧС',
|
||||
'Солигорский ГРОЧС',
|
||||
'Стародорожский РОЧС',
|
||||
'Столбцовский РОЧС',
|
||||
'Узденский РОЧС',
|
||||
'Червенский РОЧС',
|
||||
],
|
||||
'Могилевское ОУМЧС': [
|
||||
'Белыничский РОЧС',
|
||||
'Бобруйский ГРОЧС',
|
||||
'Бобруйский ПАСО',
|
||||
'Быховский РОЧС',
|
||||
'Глусский РОЧС',
|
||||
'Горецкий РОЧС',
|
||||
'Дрибинский РОЧС',
|
||||
'Кировский РОЧС',
|
||||
'Климовичский РОЧС',
|
||||
'Кличевский РОЧС',
|
||||
'Костюковичский РОЧС',
|
||||
'Краснопольский РОЧС',
|
||||
'Кричевский РОЧС',
|
||||
'Круглянский РОЧС',
|
||||
'Могилевский ГОЧС',
|
||||
'Могилевский ПАСО',
|
||||
'Могилевский РОЧС',
|
||||
'Мстиславский РОЧС',
|
||||
'Осиповичский РОЧС',
|
||||
'Славгородский РОЧС',
|
||||
'Хотимский РОЧС',
|
||||
'Чаусский РОЧС',
|
||||
'Чериковский РОЧС',
|
||||
'Шкловский РОЧС',
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
def get_or_create(db, name, kind, parent_id=None):
|
||||
@@ -45,15 +180,11 @@ def main():
|
||||
try:
|
||||
rcu = get_or_create(db, 'РЦУ РЧС', 'rcu')
|
||||
created = 0
|
||||
for name, kind in OBLASTS:
|
||||
before = db.query(MchsUnit).filter_by(name=name).count()
|
||||
oblast = get_or_create(db, name, kind, rcu.id)
|
||||
if not before:
|
||||
created += 1
|
||||
minsk = db.query(MchsUnit).filter_by(name=OBLASTS[0][0]).first()
|
||||
for name in MINSK_RAYONS:
|
||||
before = db.query(MchsUnit).filter_by(name=name).count()
|
||||
get_or_create(db, name, 'gor_rayon', minsk.id)
|
||||
for oblast_name, grochs_list in UNITS.items():
|
||||
oblast = get_or_create(db, oblast_name, 'oblast', rcu.id)
|
||||
for g in grochs_list:
|
||||
before = db.query(MchsUnit).filter_by(name=g).count()
|
||||
get_or_create(db, g, 'gor_rayon', oblast.id)
|
||||
if not before:
|
||||
created += 1
|
||||
db.commit()
|
||||
|
||||
Reference in New Issue
Block a user