from .models import ProgrammedReport from django.utils import timezone # Task que determina que reportes deben ser enviados: def send_programmed_reports_task(): timenow = timezone.now() for preport in ProgrammedReport.objects.all(): # Calculamos la fecha en la que debe ser enviado # TODO! Y si se guarda el duedate en el modelo? Puede ser recalculado en cada save() duedate = (preport.last_report_date + preport.frequency) if preport.last_report_date is not None else preport.start_report_date if timenow > duedate: # Si hay que enviarlo calculamos el rango de envío. (Ver TODO! en el metodo send_report) start_date = preport.last_report_date if preport.last_report_date is not None else preport.start_report_date end_date = start_date + preport.frequency # Se envía el reporte preport.send_report(start_date, end_date)