Add grosslagen, attributes and cultivations to migrate.py
This commit is contained in:
@ -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}')
|
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,}')
|
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
|
BRANCH_MAP: Optional[Dict[int, str]] = None
|
||||||
GEM_MAP: Optional[Dict[int, List[Tuple[int, int]]]] = None
|
GEM_MAP: Optional[Dict[int, List[Tuple[int, int]]]] = None
|
||||||
REED_MAP: Optional[Dict[int, 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] = {
|
STREET_NAMES: Dict[str, str] = {
|
||||||
'Hans-Wagnerstraße': 'Hans-Wagner-Straße',
|
'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']))
|
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:
|
def migrate_gemeinden(in_dir: str, out_dir: str) -> None:
|
||||||
global GEM_MAP
|
global GEM_MAP
|
||||||
GEM_MAP = {}
|
GEM_MAP = {}
|
||||||
|
|
||||||
for g in csv.parse(f'{in_dir}/TGemeinden.csv'):
|
with open(f'{out_dir}/wb_kg.csv', 'w+') as f:
|
||||||
GEM_MAP[g['GNR']] = lookup_gem_name(g['Bezeichnung'])
|
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:
|
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))
|
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:
|
def migrate_members(in_dir: str, out_dir: str) -> None:
|
||||||
members = csv.parse(f'{in_dir}/TMitglieder.csv')
|
members = csv.parse(f'{in_dir}/TMitglieder.csv')
|
||||||
fbs = parse_flaechenbindungen(in_dir)
|
fbs = parse_flaechenbindungen(in_dir)
|
||||||
@ -582,8 +624,11 @@ if __name__ == '__main__':
|
|||||||
DB_CNX = sqlite3.connect(args.database)
|
DB_CNX = sqlite3.connect(args.database)
|
||||||
|
|
||||||
migrate_branches(args.in_dir, args.out_dir)
|
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_gemeinden(args.in_dir, args.out_dir)
|
||||||
migrate_reeds(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_members(args.in_dir, args.out_dir)
|
||||||
migrate_contracts(args.in_dir, args.out_dir)
|
migrate_contracts(args.in_dir, args.out_dir)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user