|
@@ -0,0 +1,18 @@
|
|
|
|
|
+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)
|