Database: Add member_email_address table

This commit is contained in:
2023-09-14 22:31:27 +02:00
parent 99dd825508
commit 93dd3f42f3
3 changed files with 37 additions and 18 deletions

View File

@ -240,6 +240,8 @@ def normalize_phone_nr(nr: Optional[str], ort: str = None) -> Optional[str]:
nr = nr.replace('-', '')
if nr[0] == '0':
nr = '+43 ' + nr[1:]
elif nr.startswith('43'):
nr = '+' + nr
elif CLIENT == WG.WINZERKELLER and ort:
ort = ort.upper().strip()
if ort in ('PILLICHSDORF', 'OBERSDORF', 'WOLKERSDORF', 'WOLFPASSING', 'PUTZING', 'GROSSENGERSDORF',
@ -750,18 +752,19 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
mgnrs = [m['MGNR'] for m in members]
fbs = parse_flaechenbindungen(in_dir)
with utils.csv_open(f'{out_dir}/member.csv') as f_m,\
with utils.csv_open(f'{out_dir}/member.csv') as f_m, \
utils.csv_open(f'{out_dir}/member_billing_address.csv') as f_mba, \
utils.csv_open(f'{out_dir}/member_telephone_number.csv') as f_tel,\
utils.csv_open(f'{out_dir}/member_telephone_number.csv') as f_tel, \
utils.csv_open(f'{out_dir}/member_email_address.csv') as f_email, \
utils.csv_open(f'{out_dir}/wb_kg.csv', 'a') as f_kg:
f_m.header(
'mgnr', 'predecessor_mgnr', 'prefix', 'given_name', 'middle_names', 'family_name', 'suffix',
'birthday', 'entry_date', 'exit_date', 'business_shares', 'accounting_nr', 'zwstid',
'lfbis_nr', 'ustid_nr', 'volllieferant', 'buchführend', 'funktionär', 'active', 'deceased',
'iban', 'bic', 'country', 'postal_dest', 'address',
'email', 'default_kgnr', 'comment')
'iban', 'bic', 'country', 'postal_dest', 'address', 'default_kgnr', 'comment')
f_mba.header('mgnr', 'name', 'country', 'postal_dest', 'address')
f_tel.header('mgnr', 'nr', 'type', 'number', 'comment')
f_email.header('mgnr', 'nr', 'address', 'comment')
for m in members:
mgnr: int = m['MGNR']
@ -896,15 +899,16 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
convert(mgnr, 'Adresse', address_old, address)
email: Optional[str] = m['EMail']
emails = []
if email is not None:
if email.isupper():
email = email.lower()
if not EMAIL_RE.fullmatch(email):
invalid(mgnr, 'E-Mail', m['EMail'], active)
email = None
else:
parts = email.split('@')
email = f'{parts[0]}@{parts[1].lower()}'
for email in email.split(' + '):
if email.isupper():
email = email.lower()
if not EMAIL_RE.fullmatch(email):
invalid(mgnr, 'E-Mail', m['EMail'], active)
else:
parts = email.split('@')
emails.append(f'{parts[0]}@{parts[1].lower()}')
zwstid = m['ZNR'] and BRANCH_MAP[m['ZNR']] or len(BRANCH_MAP) == 1 and list(BRANCH_MAP.values())[0]
if CLIENT == WG.WINZERKELLER and plz == 1228:
@ -942,7 +946,7 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
m['Geburtsjahr'], m['Eintrittsdatum'], m['Austrittsdatum'], m['Geschäftsanteile1'] or 0,
m['BHKontonummer'], zwstid, bnr, ustid_nr,
m['Volllieferant'] or False, m['Buchführend'] or False, funktionaer, active, deceased,
iban, bic, AUSTRIA, postal_dest, address or '-', email, kgnr, m['Anmerkung']
iban, bic, AUSTRIA, postal_dest, address or '-', kgnr, m['Anmerkung']
)
phone_1: Optional[str] = m['Telefon']
@ -1074,6 +1078,9 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
else:
f_tel.row(mgnr, len(numbers), 'landline', phone_3, None)
for i, email in enumerate(emails):
f_email.row(mgnr, i + 1, email, None)
MEMBER_MAP[mgnr] = {
'default_kgnr': kgnr
}