From b1e0fb23dc2f8ec85af1b2d44b405430d066b8b8 Mon Sep 17 00:00:00 2001 From: Israel Figueroa Date: Sat, 16 Jul 2022 15:41:13 -0400 Subject: [PATCH] Cleanup Routine --- mayordomo/__init__.py | 23 ++++++++++++++++++++++- sender.py | 6 ++++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/mayordomo/__init__.py b/mayordomo/__init__.py index 9e684cb..170939a 100644 --- a/mayordomo/__init__.py +++ b/mayordomo/__init__.py @@ -174,7 +174,7 @@ async def enviaCorreos(): try: rdestino = await db.execute(select(Destinatario).join(Direccion).join(FQDN).where(Destinatario.enviado==0).distinct(FQDN.id)) - tareas = [] + for destinatario in rdestino.scalars(): result = await db.execute(select(Direccion).where(Direccion.id==destinatario.direccionid)) dbemail = result.scalar_one_or_none() @@ -183,6 +183,27 @@ async def enviaCorreos(): except: await log.error('Traceback {}'.format(traceback.format_exc())) +async def cleanupSent(): + from datetime import datetime, timedelta + returnvalue = True + oneMonth = datetime.now() - timedelta(days = 60) + + try: + dest = await db.execute(select(Destinatario).where(Destinatario.timestamp0).limit(1)) + + for destinatario in dest.scalars(): + cartaid = destinatario.cartaid + await db.execute(delete(Destinatario).where(Destinatario.id==destinatario.id)) + result = await db.execute(select(Destinatario).where(Destinatario.cartaid==cartaid)) + more = result.scalar_one_or_none() + if more is None: + await db.execute(delete(Carta).where(Carta.id==cartaid)) + returnvalue = False + + except: + await log.error('Traceback {}'.format(traceback.format_exc())) + return returnvalue + def create_async_smtp_server(): handler = ilabHandler() diff --git a/sender.py b/sender.py index 4eecf11..da994fc 100644 --- a/sender.py +++ b/sender.py @@ -1,4 +1,4 @@ -from mayordomo import log, pre_process, enviaCorreos +from mayordomo import log, pre_process, enviaCorreos, cleanupSent import os import daemon import time @@ -19,7 +19,9 @@ def main(): while shouldIrun: if await pre_process(): await enviaCorreos() - await asyncio.sleep(10) + elif await cleanupSent(): + await asyncio.sleep(10) + i = int(time.time()) if i >= doki: doki = i + hb