changed log file name and changed mail content

This commit is contained in:
MaPaLo76 2025-06-07 19:00:36 +02:00
parent 0c670fbefc
commit 7628783dbc

View File

@ -31,7 +31,8 @@ console_handler.setLevel(logging.INFO)
console_handler.setFormatter(log_format) console_handler.setFormatter(log_format)
# Handler für Datei # 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.setLevel(logging.DEBUG)
file_handler.setFormatter(log_format) file_handler.setFormatter(log_format)
@ -73,6 +74,8 @@ EMAIL_BODY_TEMPLATE = """
<p> <p>
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 :).
</p> </p>
<p> <p>
@ -338,17 +341,14 @@ def get_all_employees(models, db, uid, password):
@click.command() @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('--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.') @click.option('--send', is_flag=True, help='Wenn gesetzt, wird sofort eine E-Mail versendet.')
def main(send,years,testmail): @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() secrets = load_odoo_api_credentials()
if not secrets: if not secrets:
return return
url, db, uid, models = test_odoo_api_connection(secrets) url, db, uid, models = test_odoo_api_connection(secrets)
if not uid: if not uid:
return return
@ -367,37 +367,51 @@ def main(send,years,testmail):
partners = get_partner_emails(models, db, uid, secrets['odoo-api']['password'], partner_ids) 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']) employee_partner_ids = get_all_employees(models, db, uid, secrets['odoo-api']['password'])
count = 0 count = 0
count_hero = 0 count_hero = 0
for i, partner in enumerate(partners): for i, partner in enumerate(partners):
is_employee = partner['id'] in employee_partner_ids
if group == 'thekenheld':
name = partner['name'] name = partner['name']
email = partner['email'] email = partner['email']
if testmail: 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' name = 'Matthias Lotz'
email = secrets['mail']['email_receiver'] email = secrets['mail']['email_receiver']
message = EMAIL_BODY_TEMPLATE.format(name=name) 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) send_email(secrets, email, subject=EMAIL_SUBJECT, body=message)
logger.debug(f"📧 E-Mail an {email} gesendet.") logger.info(f"📧 (Testmail) Test-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:
break break
logger.info(f"📋 Es wurden {len(partners)} Partner mit E-Mail gefunden.") else: # debug
logger.info(f"📋 Davon sind {count_hero} Thekenheld(en)") logger.debug(f"Hier solltest du nicht landen. Gruppe: {group}")
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.") logger.info("🏁 Fertig.")