diff --git a/wgmaster/migrate.py b/wgmaster/migrate.py index 6958631..3f856f4 100755 --- a/wgmaster/migrate.py +++ b/wgmaster/migrate.py @@ -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)