Small changes in migrate.py
This commit is contained in:
@ -98,19 +98,29 @@ def format_row(*args) -> str:
|
|||||||
|
|
||||||
|
|
||||||
def success(mgnr: int, key: str, value: str) -> None:
|
def success(mgnr: int, key: str, value: str) -> None:
|
||||||
print(f'\x1B[1;32m{mgnr:>5}: {key} {value}\x1B[0m', file=sys.stderr)
|
if not args.quiet:
|
||||||
|
print(f'\x1B[1;32m{mgnr:>6}: {key:<12} {value}\x1B[0m', file=sys.stderr)
|
||||||
|
|
||||||
|
|
||||||
def warning(mgnr: int, key: str, value: str) -> None:
|
def warning(mgnr: int, key: str, value: str) -> None:
|
||||||
print(f'\x1B[1;33m{mgnr:>5}: {key} {value}\x1B[0m', file=sys.stderr)
|
print(f'\x1B[1;33m{mgnr:>6}: {key:<12} {value}\x1B[0m', file=sys.stderr)
|
||||||
|
|
||||||
|
|
||||||
def invalid(mgnr: int, key: str, value: str) -> None:
|
def invalid(mgnr: int, key: str, value: str) -> None:
|
||||||
print(f'\x1B[1;31m{mgnr:>5}: {key} {value}\x1B[0m', file=sys.stderr)
|
print(f'\x1B[1;31m{mgnr:>6}: {key:<12} {value}\x1B[0m', file=sys.stderr)
|
||||||
|
|
||||||
|
|
||||||
def convert(mgnr: int, key: str, old_value: str, new_value: str) -> None:
|
def convert(mgnr: int, key: str, old_value: str, new_value: str) -> None:
|
||||||
print(f'\x1B[1m{mgnr:>5}: {key} "{old_value}" -> "{new_value}"\x1B[0m', file=sys.stderr)
|
if not args.quiet:
|
||||||
|
print(f'\x1B[1m{mgnr:>6}: {key:<12} "{old_value}" -> "{new_value}"\x1B[0m', file=sys.stderr)
|
||||||
|
|
||||||
|
|
||||||
|
def convert_name(mgnr: int, old_name: Tuple[str, str], new_name: Tuple[str, str, str, str, str], billing: Optional[str] = None) -> None:
|
||||||
|
if not args.quiet:
|
||||||
|
print(f'\x1B[1m{mgnr:>6}: '
|
||||||
|
f'{" / ".join([e or "" for e in old_name])} -> '
|
||||||
|
f'{" / ".join([e or "" for e in new_name])}'
|
||||||
|
f'{"(" + billing + ")" if billing else ""}\x1B[0m', file=sys.stderr)
|
||||||
|
|
||||||
|
|
||||||
def check_lfbis_nr(nr: str) -> bool:
|
def check_lfbis_nr(nr: str) -> bool:
|
||||||
@ -149,6 +159,8 @@ def check_iban(iban: str) -> bool:
|
|||||||
|
|
||||||
|
|
||||||
def generate_iban_at(blz: int, ktonr: str) -> str:
|
def generate_iban_at(blz: int, ktonr: str) -> str:
|
||||||
|
if blz > 99999 or len(ktonr) > 11:
|
||||||
|
raise RuntimeError()
|
||||||
iban = f'AT00{blz:>05}{ktonr:>011}'
|
iban = f'AT00{blz:>05}{ktonr:>011}'
|
||||||
s = iban_checksum(iban)
|
s = iban_checksum(iban)
|
||||||
return iban.replace('00', f'{s:02}', 1)
|
return iban.replace('00', f'{s:02}', 1)
|
||||||
@ -162,10 +174,7 @@ def normalize_phone_nr(nr: str) -> str:
|
|||||||
|
|
||||||
|
|
||||||
def parse_branches(in_dir: str) -> Dict[str, Any]:
|
def parse_branches(in_dir: str) -> Dict[str, Any]:
|
||||||
branches = {}
|
return {b['ZNR']: b for b in parse_csv(f'{in_dir}/TZweigstellen.csv')}
|
||||||
for b in parse_csv(f'{in_dir}/TZweigstellen.csv'):
|
|
||||||
branches[b['ZNR']] = b
|
|
||||||
return branches
|
|
||||||
|
|
||||||
|
|
||||||
def migrate_members(in_dir: str, out_dir: str) -> None:
|
def migrate_members(in_dir: str, out_dir: str) -> None:
|
||||||
@ -196,22 +205,13 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
|
|||||||
given_name = re.sub('\s+', ' ', given_name).strip().replace(', ', ',')
|
given_name = re.sub('\s+', ' ', given_name).strip().replace(', ', ',')
|
||||||
|
|
||||||
if ' ' in family_name or '.' in family_name or ',' in family_name:
|
if ' ' in family_name or '.' in family_name or ',' in family_name:
|
||||||
print('')
|
|
||||||
print(f'{mgnr}: {family_name} / {given_name}')
|
|
||||||
|
|
||||||
if family_name.endswith(' KG'):
|
if family_name.endswith(' KG'):
|
||||||
parts = family_name.split(' ')
|
parts = family_name.split(' ')
|
||||||
family_name = parts[0].title()
|
family_name = parts[0].title()
|
||||||
billing_name = f'{family_name} KG'
|
billing_name = f'{family_name} KG'
|
||||||
|
|
||||||
print(f' -> {prefix or ""} / {given_name or ""} / {middle_names or ""} / {family_name or ""} / {suffix or ""}')
|
convert_name(mgnr, (m['Nachname'], m['Vorname']), (prefix, given_name, middle_names, family_name, suffix), billing_name)
|
||||||
if billing_name:
|
|
||||||
print(f' -> {billing_name}')
|
|
||||||
print('')
|
|
||||||
elif (' ' in given_name or '.' in given_name or ',' in given_name) and given_name != 'EVA MARIA':
|
elif (' ' in given_name or '.' in given_name or ',' in given_name) and given_name != 'EVA MARIA':
|
||||||
print('')
|
|
||||||
print(f'{mgnr}: {family_name} / {given_name}')
|
|
||||||
|
|
||||||
if ' u. ' in given_name.lower() or ' u ' in given_name.lower() or ' und ' in given_name.lower():
|
if ' u. ' in given_name.lower() or ' u ' in given_name.lower() or ' und ' in given_name.lower():
|
||||||
parts = given_name.split(' ')
|
parts = given_name.split(' ')
|
||||||
family_name = family_name.title()
|
family_name = family_name.title()
|
||||||
@ -249,12 +249,7 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
|
|||||||
if prefix[-1] != '.':
|
if prefix[-1] != '.':
|
||||||
prefix += '.'
|
prefix += '.'
|
||||||
|
|
||||||
if prefix:
|
convert_name(mgnr, (m['Nachname'], m['Vorname']), (prefix, given_name, middle_names, family_name, suffix), billing_name)
|
||||||
prefix = prefix.replace('Dipl.Ing.', 'Dipl.-Ing.')
|
|
||||||
print(f' -> {prefix or ""} / {given_name or ""} / {middle_names or ""} / {family_name or ""} / {suffix or ""}')
|
|
||||||
if billing_name:
|
|
||||||
print(f' -> {billing_name}')
|
|
||||||
print('')
|
|
||||||
else:
|
else:
|
||||||
family_name = family_name.title()
|
family_name = family_name.title()
|
||||||
given_name = given_name.title()
|
given_name = given_name.title()
|
||||||
@ -268,9 +263,9 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
|
|||||||
bnr = '0' + bnr
|
bnr = '0' + bnr
|
||||||
if not check_lfbis_nr(bnr):
|
if not check_lfbis_nr(bnr):
|
||||||
if bnr == '1234567':
|
if bnr == '1234567':
|
||||||
warning(mgnr, 'Betriebsnr.', bnr)
|
warning(mgnr, 'BetriebsNr.', bnr)
|
||||||
else:
|
else:
|
||||||
invalid(mgnr, 'Betriebsnr.', bnr)
|
invalid(mgnr, 'BetriebsNr.', bnr)
|
||||||
bnr = None
|
bnr = None
|
||||||
|
|
||||||
|
|
||||||
@ -322,20 +317,20 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
|
|||||||
address: Optional[str] = m['Straße']
|
address: Optional[str] = m['Straße']
|
||||||
if address is not None:
|
if address is not None:
|
||||||
address_old = address
|
address_old = address
|
||||||
address = re.sub('([0-9])([A-Z])', lambda m: m.group(1) + m.group(2).lower(), re.sub('\s+', ' ', address).strip().title())
|
address = re.sub('([0-9])([A-Z])', lambda a: a.group(1) + a.group(2).lower(), re.sub('\s+', ' ', address).strip().title())
|
||||||
address = address.replace('strasse', 'straße').replace('strassse', 'straße')\
|
address = address.replace('strasse', 'straße').replace('strassse', 'straße')\
|
||||||
.replace('Strasse', 'Straße').replace('Str.', 'Straße')\
|
.replace('Strasse', 'Straße').replace('Str.', 'Straße')\
|
||||||
.replace('str.', 'straße').replace('ster.', 'straße').replace('g. ', 'gasse ')\
|
.replace('str.', 'straße').replace('ster.', 'straße').replace('g. ', 'gasse ')\
|
||||||
.replace('Gross', 'Groß').replace('Bockfliess', 'Bockfließ').replace('Weiss', 'Weiß')\
|
.replace('Gross', 'Groß').replace('Bockfliess', 'Bockfließ').replace('Weiss', 'Weiß')\
|
||||||
.replace('Preussen', 'Preußen').replace('Schloss', 'Schloß').replace('luss', 'luß')\
|
.replace('Preussen', 'Preußen').replace('Schloss', 'Schloß').replace('luss', 'luß')\
|
||||||
.replace('Haupstraße', 'Hauptstraße')
|
.replace('Haupstraße', 'Hauptstraße')
|
||||||
address = re.sub('([a-z])([0-9])', lambda m: m.group(1) + ' ' + m.group(2), address)
|
address = re.sub('([a-z])([0-9])', lambda a: a.group(1) + ' ' + a.group(2), address)
|
||||||
if address.startswith('Nr. ') or address.startswith('Nr ') or address.isdigit():
|
if address.startswith('Nr. ') or address.startswith('Nr ') or address.isdigit():
|
||||||
address = ort.title() + ' ' + address.split(' ')[-1]
|
address = ort.title() + ' ' + address.split(' ')[-1]
|
||||||
elif address.startswith('Ob. '):
|
elif address.startswith('Ob. '):
|
||||||
address = address.replace('Ob. ', 'Obere ', 1)
|
address = address.replace('Ob. ', 'Obere ', 1)
|
||||||
address = address.replace(' Nr. ', ' ')
|
address = address.replace(' Nr. ', ' ')
|
||||||
address = re.sub(r'([^0-9]+?)( [0-9])', lambda m: STREET_NAMES.get(m.group(1), m.group(1)) + m.group(2), address)
|
address = re.sub(r'([^0-9]+?)( [0-9])', lambda a: STREET_NAMES.get(a.group(1), a.group(1)) + a.group(2), address)
|
||||||
if address_old != address:
|
if address_old != address:
|
||||||
convert(mgnr, 'Adresse', address_old, address)
|
convert(mgnr, 'Adresse', address_old, address)
|
||||||
|
|
||||||
@ -391,6 +386,7 @@ if __name__ == '__main__':
|
|||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument('in_dir')
|
parser.add_argument('in_dir')
|
||||||
parser.add_argument('out_dir')
|
parser.add_argument('out_dir')
|
||||||
|
parser.add_argument('-q', '--quiet', action='store_true', default=False)
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
os.makedirs(args.out_dir, exist_ok=True)
|
os.makedirs(args.out_dir, exist_ok=True)
|
||||||
|
Reference in New Issue
Block a user