Add grosslagen, attributes and cultivations to migrate.py

This commit is contained in:
2023-03-13 22:20:25 +01:00
parent ceaeef71b5
commit 1f7da52053

View File

@ -17,11 +17,11 @@ BIC_RE = re.compile(r'[A-Z0-9]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?')
IBAN_RE = re.compile(r'[A-Z]{2}[0-9]{2}[A-Z0-9]{8,30}')
EMAIL_RE = re.compile(r'[^@\s]+@([a-z0-9_äöüß-]+\.)+[a-z]{2,}')
CULTIVATION_MAP: Optional[Dict[int, str]] = {1: 'N', 2: 'KIP', 3: 'BIO'}
CULTIVATION_MAP: Optional[Dict[int, str]] = None
BRANCH_MAP: Optional[Dict[int, str]] = None
GEM_MAP: Optional[Dict[int, List[Tuple[int, int]]]] = None
REED_MAP: Optional[Dict[int, Tuple[int, int]]] = None
GROSSLAGE_MAP: Optional[Dict[int, int]] = None
STREET_NAMES: Dict[str, str] = {
'Hans-Wagnerstraße': 'Hans-Wagner-Straße',
@ -232,12 +232,30 @@ def migrate_branches(in_dir: str, out_dir: str) -> None:
f.write(csv.format_row(b['Kennbst'], b['Name'], 'AT', postal_dest, address, b['Telefon']))
def migrate_grosslagen(in_dir: str, out_dir: str) -> None:
global GROSSLAGE_MAP
GROSSLAGE_MAP = {}
glnr = 0
with open(f'{out_dir}/wb_gl.csv', 'w+') as f:
f.write('glnr;name\n')
for gl in csv.parse(f'{in_dir}/TGrosslagen.csv'):
glnr += 1
GROSSLAGE_MAP[gl['GLNR']] = glnr
f.write(csv.format_row(glnr, gl['Bezeichnung']))
def migrate_gemeinden(in_dir: str, out_dir: str) -> None:
global GEM_MAP
GEM_MAP = {}
for g in csv.parse(f'{in_dir}/TGemeinden.csv'):
GEM_MAP[g['GNR']] = lookup_gem_name(g['Bezeichnung'])
with open(f'{out_dir}/wb_kg.csv', 'w+') as f:
f.write('kgnr;glnr\n')
for g in csv.parse(f'{in_dir}/TGemeinden.csv'):
gems = lookup_gem_name(g['Bezeichnung'])
GEM_MAP[g['GNR']] = gems
for kgnr, gkz in gems:
f.write(csv.format_row(kgnr, GROSSLAGE_MAP[g['GLNR']]))
def migrate_reeds(in_dir: str, out_dir: str) -> None:
@ -261,6 +279,30 @@ def migrate_reeds(in_dir: str, out_dir: str) -> None:
f.write(csv.format_row(kgnr, rdnr, name))
def migrate_attributes(in_dir: str, out_dir: str) -> None:
with open(f'{out_dir}/wine_attribute.csv', 'w+') as f:
f.write('attrid;name;kg_per_ha\n')
for a in csv.parse(f'{in_dir}/TSortenAttribute.csv'):
f.write(csv.format_row(a['SANR'], a['Attribut'], int(a['KgProHa'])))
def migrate_cultivations(in_dir: str, out_dir: str) -> None:
global CULTIVATION_MAP
CULTIVATION_MAP = {}
with open(f'{out_dir}/wine_cultivation.csv', 'w+') as f:
f.write('cultid;name\n')
for c in csv.parse(f'{in_dir}/TBewirtschaftungsarten.csv'):
name: str = c['Bezeichnung']
cultid = name[0].upper()
if name.isupper():
cultid = name
elif 'biolog' in name.lower():
cultid = 'BIO'
CULTIVATION_MAP[c['BANR']] = cultid
f.write(csv.format_row(cultid, name))
def migrate_members(in_dir: str, out_dir: str) -> None:
members = csv.parse(f'{in_dir}/TMitglieder.csv')
fbs = parse_flaechenbindungen(in_dir)
@ -582,8 +624,11 @@ if __name__ == '__main__':
DB_CNX = sqlite3.connect(args.database)
migrate_branches(args.in_dir, args.out_dir)
migrate_grosslagen(args.in_dir, args.out_dir)
migrate_gemeinden(args.in_dir, args.out_dir)
migrate_reeds(args.in_dir, args.out_dir)
migrate_attributes(args.in_dir, args.out_dir)
migrate_cultivations(args.in_dir, args.out_dir)
migrate_members(args.in_dir, args.out_dir)
migrate_contracts(args.in_dir, args.out_dir)