Migrate GWK phone numbers
This commit is contained in:
@ -212,20 +212,37 @@ def check_iban(iban: str) -> bool:
|
|||||||
return modulo(s, 97) == 1
|
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:
|
if nr is None:
|
||||||
return None
|
return None
|
||||||
nr = nr.replace('/', ' ').strip()
|
nr = nr.replace('/', ' ').strip()
|
||||||
|
if nr.count('-') > 1 or len(nr.split('-')[-1]) > 3:
|
||||||
|
nr = nr.replace('-', '')
|
||||||
if nr[0] == '0':
|
if nr[0] == '0':
|
||||||
nr = '+43 ' + nr[1:]
|
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.startswith('+43'):
|
||||||
if nr[4] == '6':
|
if nr[4] == '6':
|
||||||
nr = nr.replace(' ', '')
|
nr = nr.replace(' ', '')
|
||||||
nr = f'{nr[:3]} {nr[3:6]} {nr[6:]}'
|
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':
|
elif nr[4] == '2':
|
||||||
nr = nr.replace(' ', '')
|
nr = nr.replace(' ', '')
|
||||||
nr = f'{nr[:3]} {nr[3:7]} {nr[7:]}'
|
nr = f'{nr[:3]} {nr[3:7]} {nr[7:]}'
|
||||||
return nr
|
return nr.strip()
|
||||||
|
|
||||||
|
|
||||||
def fix_street_name(name: str) -> str:
|
def fix_street_name(name: str) -> str:
|
||||||
@ -755,6 +772,8 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
|
|||||||
address = parts[-1]
|
address = parts[-1]
|
||||||
if WG == 'GWK' and ort == 'JETZELDORF':
|
if WG == 'GWK' and ort == 'JETZELDORF':
|
||||||
ort = 'JETZELSDORF'
|
ort = 'JETZELSDORF'
|
||||||
|
if ort:
|
||||||
|
ort = ort.upper().strip()
|
||||||
|
|
||||||
if address is not None:
|
if address is not None:
|
||||||
address_old = address
|
address_old = address
|
||||||
@ -838,8 +857,72 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
|
|||||||
if WG == 'GWK':
|
if WG == 'GWK':
|
||||||
# Telefax (phone_2) not used
|
# Telefax (phone_2) not used
|
||||||
numbers = {}
|
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:
|
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:
|
if phone_3:
|
||||||
for nr in phone_3.split(','):
|
for nr in phone_3.split(','):
|
||||||
nr = nr.strip()
|
nr = nr.strip()
|
||||||
@ -851,9 +934,7 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
|
|||||||
elif parts[-1].isalpha():
|
elif parts[-1].isalpha():
|
||||||
nr = nr[:nr.rindex(' ')].strip()
|
nr = nr[:nr.rindex(' ')].strip()
|
||||||
comment = parts[-1].strip()
|
comment = parts[-1].strip()
|
||||||
nr = normalize_phone_nr(nr)
|
add_number(normalize_phone_nr(nr, ort), comment=comment)
|
||||||
mob = nr[4] == '6'
|
|
||||||
numbers[nr] = {'mobile': mob, 'landline': not mob, 'fax': False, 'comment': comment}
|
|
||||||
count = 0
|
count = 0
|
||||||
for nr, data in numbers.items():
|
for nr, data in numbers.items():
|
||||||
if data['mobile']:
|
if data['mobile']:
|
||||||
@ -1060,7 +1141,8 @@ def migrate_area_commitments(in_dir: str, out_dir: str) -> None:
|
|||||||
gstnrs = []
|
gstnrs = []
|
||||||
comment, gstnr = None, None
|
comment, gstnr = None, None
|
||||||
if parz is None or parz == '0000':
|
if parz is None or parz == '0000':
|
||||||
invalid(mgnr, 'GstNr.', f'{lookup_kg_name(kgnr)} {kgnr or 0:05}-{parz}')
|
if parz is not None:
|
||||||
|
invalid(mgnr, 'GstNr.', f'{lookup_kg_name(kgnr)} {kgnr or 0:05}-{parz}')
|
||||||
gstnrs = []
|
gstnrs = []
|
||||||
gstnr = '-'
|
gstnr = '-'
|
||||||
if len(gstnrs) == 0:
|
if len(gstnrs) == 0:
|
||||||
|
Reference in New Issue
Block a user