Migrate GWK phone numbers
This commit is contained in:
@ -212,20 +212,37 @@ def check_iban(iban: str) -> bool:
|
||||
return modulo(s, 97) == 1
|
||||
|
||||
|
||||
def normalize_phone_nr(nr: Optional[str]) -> Optional[str]:
|
||||
def normalize_phone_nr(nr: Optional[str], ort: str = None) -> Optional[str]:
|
||||
if nr is None:
|
||||
return None
|
||||
nr = nr.replace('/', ' ').strip()
|
||||
if nr.count('-') > 1 or len(nr.split('-')[-1]) > 3:
|
||||
nr = nr.replace('-', '')
|
||||
if nr[0] == '0':
|
||||
nr = '+43 ' + nr[1:]
|
||||
elif WG == 'GWK' and ort:
|
||||
ort = ort.upper().strip()
|
||||
if ort in ('PILLICHSDORF', 'OBERSDORF', 'WOLKERSDORF', 'WOLFPASSING', 'PUTZING', 'GROSSENGERSDORF',
|
||||
'EIBESBRUNN'):
|
||||
nr = f'+43 2245 {nr}'
|
||||
elif ort in ('ALBERNDORF', 'HAUGSDORF', 'AUGGENTHAL', 'HAUGSDORF'):
|
||||
nr = f'+43 2944 {nr}'
|
||||
elif ort in ('HADRES'):
|
||||
nr = f'+43 2943 {nr}'
|
||||
else:
|
||||
print(nr, ort)
|
||||
raise RuntimeError()
|
||||
if nr.startswith('+43'):
|
||||
if nr[4] == '6':
|
||||
nr = nr.replace(' ', '')
|
||||
nr = f'{nr[:3]} {nr[3:6]} {nr[6:]}'
|
||||
elif nr[4] == '1':
|
||||
nr = nr.replace(' ', '')
|
||||
nr = f'{nr[:3]} {nr[3]} {nr[3:]}'
|
||||
elif nr[4] == '2':
|
||||
nr = nr.replace(' ', '')
|
||||
nr = f'{nr[:3]} {nr[3:7]} {nr[7:]}'
|
||||
return nr
|
||||
return nr.strip()
|
||||
|
||||
|
||||
def fix_street_name(name: str) -> str:
|
||||
@ -755,6 +772,8 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
|
||||
address = parts[-1]
|
||||
if WG == 'GWK' and ort == 'JETZELDORF':
|
||||
ort = 'JETZELSDORF'
|
||||
if ort:
|
||||
ort = ort.upper().strip()
|
||||
|
||||
if address is not None:
|
||||
address_old = address
|
||||
@ -838,8 +857,72 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
|
||||
if WG == 'GWK':
|
||||
# Telefax (phone_2) not used
|
||||
numbers = {}
|
||||
|
||||
def add_number(nr: str, fax: bool = False, comment: str = None, fax_only: bool = False) -> None:
|
||||
mob = nr[4] == '6'
|
||||
numbers[nr] = {'mobile': mob, 'landline': not mob and not fax_only, 'fax': fax, 'comment': None}
|
||||
|
||||
if phone_1:
|
||||
pass # TODO GWK phone_1
|
||||
phone_1 = phone_1.lower().replace('und', 'u.').replace('auch', 'u.').replace('u.', ' u. ')\
|
||||
.replace('oder', 'od.').replace(';', 'od.').replace('od.', ' od. ')
|
||||
phone_1 = re.sub(r'\s+', ' ', phone_1).strip()
|
||||
fax = False
|
||||
if phone_1.endswith(' u. fax'):
|
||||
fax = True
|
||||
phone_1 = ' '.join(phone_1.split(' ')[:-2])
|
||||
if phone_1.replace(' ', '').replace('/', '').replace('-', '').isdigit() and len(phone_1) <= 20:
|
||||
if phone_1[0] != '0' and '/' in phone_1:
|
||||
for nr in phone_1.split('/'):
|
||||
add_number(normalize_phone_nr(nr, ort), fax)
|
||||
else:
|
||||
add_number(normalize_phone_nr(phone_1, ort), fax)
|
||||
elif re.fullmatch(r'0[0-9/ -]+ od\. 0[0-9/ -]+', phone_1):
|
||||
parts = phone_1.split(' od. ')
|
||||
add_number(normalize_phone_nr(parts[0], ort), False)
|
||||
add_number(normalize_phone_nr(parts[1], ort), fax)
|
||||
elif re.fullmatch(r'0[0-9/ -]+ od\. [1-9][0-9/ -]+', phone_1):
|
||||
parts = phone_1.split(' od. ')
|
||||
add_number(normalize_phone_nr(parts[0], ort), False)
|
||||
if parts[0][1] == '6':
|
||||
add_number(normalize_phone_nr(parts[1], ort), fax)
|
||||
else:
|
||||
add_number(normalize_phone_nr(parts[0][:5] + parts[1], ort), fax)
|
||||
elif re.fullmatch(r'0[0-9/ -]+ fax 0[0-9/ -]+', phone_1):
|
||||
parts = phone_1.split(' fax ')
|
||||
add_number(normalize_phone_nr(parts[0], ort), False)
|
||||
add_number(normalize_phone_nr(parts[1], ort), True, fax_only=True)
|
||||
elif re.fullmatch(r'0[0-9/ -]+ fax [1-9][0-9/ -]+', phone_1):
|
||||
parts = phone_1.split(' fax ')
|
||||
add_number(normalize_phone_nr(parts[0], ort), False)
|
||||
add_number(normalize_phone_nr(parts[0][:5] + parts[1], ort), True, fax_only=True)
|
||||
elif '-' in phone_1 and phone_1.endswith('fax'):
|
||||
nr = re.sub(r'-+ ', '-', phone_1)
|
||||
nr = ' '.join(nr.split(' ')[:-1])
|
||||
add_number(normalize_phone_nr(nr.split('-')[0], ort), False)
|
||||
add_number(normalize_phone_nr(nr, ort), True, fax_only=True)
|
||||
elif 'fax -' in phone_1:
|
||||
parts = phone_1.split('fax')
|
||||
add_number(normalize_phone_nr(parts[0], ort), False)
|
||||
add_number(normalize_phone_nr(parts[0].strip() + parts[1].strip(), ort), True, fax_only=True)
|
||||
elif phone_1.endswith('fax'):
|
||||
nr = phone_1[:-3].strip()
|
||||
add_number(normalize_phone_nr(nr), False)
|
||||
add_number(normalize_phone_nr(nr), True, fax_only=True)
|
||||
elif re.fullmatch(r'0[0-9/ -]+ u\. fax (od\. |u\. )?[0-9/ -]+', phone_1):
|
||||
parts = phone_1.split(' ')
|
||||
add_number(normalize_phone_nr(parts[0], ort), True)
|
||||
nr = parts[-1]
|
||||
if nr[0] == '0':
|
||||
add_number(normalize_phone_nr(nr, ort))
|
||||
else:
|
||||
add_number(normalize_phone_nr(parts[0][:5] + nr, ort))
|
||||
else:
|
||||
parts = phone_1.split(' ')
|
||||
if parts[-1].isalpha():
|
||||
add_number(normalize_phone_nr(parts[0], ort), comment=parts[-1])
|
||||
else:
|
||||
for nr in parts:
|
||||
add_number(normalize_phone_nr(nr, ort), fax)
|
||||
if phone_3:
|
||||
for nr in phone_3.split(','):
|
||||
nr = nr.strip()
|
||||
@ -851,9 +934,7 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
|
||||
elif parts[-1].isalpha():
|
||||
nr = nr[:nr.rindex(' ')].strip()
|
||||
comment = parts[-1].strip()
|
||||
nr = normalize_phone_nr(nr)
|
||||
mob = nr[4] == '6'
|
||||
numbers[nr] = {'mobile': mob, 'landline': not mob, 'fax': False, 'comment': comment}
|
||||
add_number(normalize_phone_nr(nr, ort), comment=comment)
|
||||
count = 0
|
||||
for nr, data in numbers.items():
|
||||
if data['mobile']:
|
||||
@ -1060,6 +1141,7 @@ def migrate_area_commitments(in_dir: str, out_dir: str) -> None:
|
||||
gstnrs = []
|
||||
comment, gstnr = None, None
|
||||
if parz is None or parz == '0000':
|
||||
if parz is not None:
|
||||
invalid(mgnr, 'GstNr.', f'{lookup_kg_name(kgnr)} {kgnr or 0:05}-{parz}')
|
||||
gstnrs = []
|
||||
gstnr = '-'
|
||||
|
Reference in New Issue
Block a user