diff --git a/verteiler.py b/verteiler.py index 0c96957..f1cef78 100644 --- a/verteiler.py +++ b/verteiler.py @@ -31,7 +31,8 @@ console_handler.setLevel(logging.INFO) console_handler.setFormatter(log_format) # Handler für Datei -file_handler = logging.FileHandler('logs/verteiler.log', encoding='utf-8') +log_filename = datetime.now().strftime('logs/%Y-%m-%d-%H-%M-%S_verteiler.log') +file_handler = logging.FileHandler(log_filename, encoding='utf-8') file_handler.setLevel(logging.DEBUG) file_handler.setFormatter(log_format) @@ -72,7 +73,9 @@ EMAIL_BODY_TEMPLATE = """
- Vor der Nutzung werden wir dich fragen, ob du die Videos angesehen hast. Auf dieser Vertrauensbasis wird deine Freigabe im System aktiviert. + Vor der Nutzung werden wir dich fragen, ob du die Videos angesehen hast. Auf dieser Vertrauensbasis wird deine Freigabe im System aktiviert. + Hattest du bereits eine Einweisung für die neuen Maschinen, entfällt diese Abfrage für dich und du musst dir die Videos auch nicht anschauen. + Es schadet aber auch nicht :).
@@ -338,17 +341,14 @@ def get_all_employees(models, db, uid, password): @click.command() -@click.option('--send', is_flag=True, help='Wenn gesetzt, wird sofort eine E-Mail versendet.') @click.option('--years', default=2, help='Anzahl der Jahre für die Nutzungsauswertung (Standard: 2 Jahre).') -@click.option('--testmail', is_flag=True, help='Wenn gesetzt, wird eine Test-E-Mail an die eigene Adresse gesendet.') -def main(send,years,testmail): +@click.option('--send', is_flag=True, help='Wenn gesetzt, wird sofort eine E-Mail versendet.') +@click.option('--group', type=click.Choice(['testmail', 'thekenheld', 'nutzer']), default='testmail', show_default=True, help='Gruppe für E-Mail-Versand: testmail, thekenheld oder nutzer.') +def main(years, send, group): secrets = load_odoo_api_credentials() if not secrets: return - - - url, db, uid, models = test_odoo_api_connection(secrets) if not uid: return @@ -367,37 +367,51 @@ def main(send,years,testmail): partners = get_partner_emails(models, db, uid, secrets['odoo-api']['password'], partner_ids) employee_partner_ids = get_all_employees(models, db, uid, secrets['odoo-api']['password']) - count = 0 count_hero = 0 + for i, partner in enumerate(partners): - name = partner['name'] - email = partner['email'] - if testmail: + + is_employee = partner['id'] in employee_partner_ids + + if group == 'thekenheld': + name = partner['name'] + email = partner['email'] + message = EMAIL_BODY_TEMPLATE.format(name=name) + if is_employee: + count_hero += 1 + if send: + send_email(secrets, email, subject=EMAIL_SUBJECT, body=message) + logger.info(f"📧 (Thekenheld) E-Mail an {email} gesendet.") + else: + logger.info(f"📧 (Thekenheld) E-Mail an {email} würde gesendet werden.") + + elif group == 'nutzer': + name = partner['name'] + email = partner['email'] + message = EMAIL_BODY_TEMPLATE.format(name=name) + if not is_employee: + count += 1 + if send: + send_email(secrets, email, subject=EMAIL_SUBJECT, body=message) + logger.info(f"📧 (Nutzer) E-Mail an {email} gesendet.") + else: + logger.info(f"📧 (Nutzer) E-Mail an {email} würde gesendet werden.") + + elif group == 'testmail': name = 'Matthias Lotz' email = secrets['mail']['email_receiver'] - message = EMAIL_BODY_TEMPLATE.format(name=name) - if partner['id'] not in employee_partner_ids: - if send or testmail: - send_email(secrets, email, subject=EMAIL_SUBJECT, body=message) - logger.debug(f"📧 E-Mail an {email} gesendet.") - # Pausieren nach jedem BATCH_SIZE-Versand - if (i + 1) % BATCH_SIZE == 0: - logger.info(f"⏸️ Batchgrenze erreicht – Warte {BATCH_WAIT_SECONDS // 60} Minuten ...") - time.sleep(BATCH_WAIT_SECONDS) - else: - logger.debug(f"🔍 Testmodus: {email} würde E-Mail erhalten. Name: {name}") - count += 1 - else: - count_hero += 1 - logger.debug(f"👨🔧 {name} ist ein Mitarbeiter und erhält keine E-Mail.") - - if testmail: + message = EMAIL_BODY_TEMPLATE.format(name=name) + send_email(secrets, email, subject=EMAIL_SUBJECT, body=message) + logger.info(f"📧 (Testmail) Test-E-Mail an {email} gesendet.") break + + else: # debug + logger.debug(f"Hier solltest du nicht landen. Gruppe: {group}") - logger.info(f"📋 Es wurden {len(partners)} Partner mit E-Mail gefunden.") - logger.info(f"📋 Davon sind {count_hero} Thekenheld(en)") - logger.info(f"📊 Insgesamt verarbeitet: {count} Partner") + + logger.info(f"📋 Email an Thekenhelden: {count_hero}") + logger.info(f"📊 Email an Nutzer: {count} Partner") logger.info("🏁 Fertig.")