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:
|
||||
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:
|
||||
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:
|
||||
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:
|
||||
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:
|
||||
@ -149,6 +159,8 @@ def check_iban(iban: str) -> bool:
|
||||
|
||||
|
||||
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}'
|
||||
s = iban_checksum(iban)
|
||||
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]:
|
||||
branches = {}
|
||||
for b in parse_csv(f'{in_dir}/TZweigstellen.csv'):
|
||||
branches[b['ZNR']] = b
|
||||
return branches
|
||||
return {b['ZNR']: b for b in parse_csv(f'{in_dir}/TZweigstellen.csv')}
|
||||
|
||||
|
||||
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(', ', ',')
|
||||
|
||||
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'):
|
||||
parts = family_name.split(' ')
|
||||
family_name = parts[0].title()
|
||||
billing_name = f'{family_name} KG'
|
||||
|
||||
print(f' -> {prefix or ""} / {given_name or ""} / {middle_names or ""} / {family_name or ""} / {suffix or ""}')
|
||||
if billing_name:
|
||||
print(f' -> {billing_name}')
|
||||
print('')
|
||||
convert_name(mgnr, (m['Nachname'], m['Vorname']), (prefix, given_name, middle_names, family_name, suffix), billing_name)
|
||||
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():
|
||||
parts = given_name.split(' ')
|
||||
family_name = family_name.title()
|
||||
@ -249,12 +249,7 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
|
||||
if prefix[-1] != '.':
|
||||
prefix += '.'
|
||||
|
||||
if prefix:
|
||||
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('')
|
||||
convert_name(mgnr, (m['Nachname'], m['Vorname']), (prefix, given_name, middle_names, family_name, suffix), billing_name)
|
||||
else:
|
||||
family_name = family_name.title()
|
||||
given_name = given_name.title()
|
||||
@ -268,9 +263,9 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
|
||||
bnr = '0' + bnr
|
||||
if not check_lfbis_nr(bnr):
|
||||
if bnr == '1234567':
|
||||
warning(mgnr, 'Betriebsnr.', bnr)
|
||||
warning(mgnr, 'BetriebsNr.', bnr)
|
||||
else:
|
||||
invalid(mgnr, 'Betriebsnr.', bnr)
|
||||
invalid(mgnr, 'BetriebsNr.', bnr)
|
||||
bnr = None
|
||||
|
||||
|
||||
@ -322,20 +317,20 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
|
||||
address: Optional[str] = m['Straße']
|
||||
if address is not None:
|
||||
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')\
|
||||
.replace('Strasse', 'Straße').replace('Str.', 'Straße')\
|
||||
.replace('str.', 'straße').replace('ster.', 'straße').replace('g. ', 'gasse ')\
|
||||
.replace('Gross', 'Groß').replace('Bockfliess', 'Bockfließ').replace('Weiss', 'Weiß')\
|
||||
.replace('Preussen', 'Preußen').replace('Schloss', 'Schloß').replace('luss', 'luß')\
|
||||
.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():
|
||||
address = ort.title() + ' ' + address.split(' ')[-1]
|
||||
elif address.startswith('Ob. '):
|
||||
address = address.replace('Ob. ', 'Obere ', 1)
|
||||
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:
|
||||
convert(mgnr, 'Adresse', address_old, address)
|
||||
|
||||
@ -391,6 +386,7 @@ if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('in_dir')
|
||||
parser.add_argument('out_dir')
|
||||
parser.add_argument('-q', '--quiet', action='store_true', default=False)
|
||||
args = parser.parse_args()
|
||||
|
||||
os.makedirs(args.out_dir, exist_ok=True)
|
||||
|
Reference in New Issue
Block a user