Select Git revision
init-regions
-
Martin Mareš authored
Od nynějška je vždy inicializováno mo.now a je nastavené české locale.
Martin Mareš authoredOd nynějška je vždy inicializováno mo.now a je nastavené české locale.
init-regions 1.26 KiB
#!/usr/bin/env python3
# Initialize administrative regions in the DB
from typing import List
import sys
import mo.db as db
import mo.util
mo.util.init_standalone()
session = db.get_session()
session.query(db.Place).delete()
nuts_by_name = {}
with open('db/cz-nuts') as nuts_list:
for line in nuts_list:
if line.startswith("#"):
pass
else:
fields = line.rstrip().split('\t')
if fields[-1] not in nuts_by_name:
nuts_by_name[fields[-1]] = fields[0]
with open('db/regions') as reg_list:
stack: List[db.Place] = []
for line in reg_list:
line = line.rstrip()
cols = line.split('\t')
level = 0
while cols[level] == "":
level += 1
code, name = cols[level:]
while len(stack) > level:
stack.pop()
parent = None
if stack:
parent = stack[-1].place_id
nuts = nuts_by_name.get(name, None)
if nuts is None:
print(f"WARNING: No NUTS code for {name}", file=sys.stderr)
place = db.Place(level=level, name=name, code=code, type=db.PlaceType.region, nuts=nuts, parent=parent, note="")
session.add(place)
session.flush()
stack.append(place)
session.commit()