2 Commits 29d85e65d4 ... 9b0a37636a

Auteur SHA1 Message Date
  Tomás Ponce Gessi 9b0a37636a Dates a UTC internamente. il y a 3 ans
  Tomás Ponce Gessi 29d85e65d4 Dates a UTC-3, dado que los reportes se manejan unicamente en esta timezone il y a 3 ans
2 fichiers modifiés avec 13 ajouts et 12 suppressions
  1. 8 8
      app/api/config.py
  2. 5 4
      app/api/models.py

+ 8 - 8
app/api/config.py

@@ -11,28 +11,28 @@ CALENDAR_FREQUENCIES = {
 
 # Espera date en UTC
 def get_next_calendar_date(date: datetime, frequency: str):
-    base_date: datetime = date.replace(hour=23, minute=59, second=59, microsecond=0)
+    base_date: datetime = date.replace(hour=2, minute=59, second=59, microsecond=0) + delta(days=1)
     if frequency == "daily":
         return base_date
     if frequency == "weekly":
         days_ahead = -date.weekday() + 6 # Lunes
         return base_date + delta(days=days_ahead)
     if frequency == "monthly":
-        return (base_date.replace(day=1) + reldelta(months=1)) - delta(days=1)
+        return (base_date.replace(day=1) + reldelta(months=1))
     if frequency == "yearly":
-        return (base_date.replace(day=1, month=1) + reldelta(years=1)) - delta(days=1)
+        return (base_date.replace(day=1, month=1) + reldelta(years=1))
     return None
 
 # Espera date en UTC
 def get_previous_calendar_date(date: datetime, frequency: str):
-    base_date: datetime = date.replace(hour=23, minute=59, second=59, microsecond=0)
+    base_date: datetime = date.replace(hour=2, minute=59, second=59, microsecond=0)
     if frequency == "daily":
-        return base_date - delta(days=1)
+        return base_date
     if frequency == "weekly":
-        days_ahead = date.weekday() + 1
+        days_ahead = date.weekday()
         return base_date - delta(days=days_ahead)
     if frequency == "monthly":
-        return base_date.replace(day=1) - delta(days=1)
+        return base_date.replace(day=1)
     if frequency == "yearly":
-        return base_date.replace(day=1, month=1) - delta(days=1)
+        return base_date.replace(day=1, month=1)
     return None

+ 5 - 4
app/api/models.py

@@ -34,15 +34,16 @@ class ProgrammedReport(models.Model):
 
     # Actualiza la due_date en cada save del modelo:
     def save(self, *args, **kwargs):
-        self.start_report_date = get_previous_calendar_date(self.start_report_date.replace(tzinfo=tz('America/Argentina/Cordoba')), self.frequency) + delta(seconds=1)
+        self.start_report_date = get_previous_calendar_date(self.start_report_date.replace(tzinfo=tz('UTC')), self.frequency) + delta(seconds=1)
         self.due_date = get_next_calendar_date(self.start_report_date, self.frequency)
         super().save(*args, **kwargs)
 
     # Metodo que envía la petición a Clima para enviar el reporte.
     def send_report(self):
         # Calculamos el formato en el que Clima requiere recibir los rangos.
-        start_date = self.start_report_date.strftime("%d/%m/%Y %H:%M")
-        end_date = self.due_date.strftime("%d/%m/%Y %H:%M")
+        start_date = self.start_report_date.astimezone(tz('America/Argentina/Cordoba')).strftime("%d/%m/%Y %H:%M")
+        end_date = self.due_date.astimezone(tz('America/Argentina/Cordoba')).strftime("%d/%m/%Y %H:%M")
+        
         
         # Enviamos la request:
         response = requests.post(settings.CLIMA_URL + "/async_report_handler", {
@@ -70,7 +71,7 @@ class ProgrammedReport(models.Model):
 
     def send_report_now(self):
         # Calculamos el formato en el que Clima requiere recibir los rangos.
-        start_date = self.start_report_date.strftime("%d/%m/%Y %H:%M")
+        start_date = self.start_report_date.astimezone(tz('America/Argentina/Cordoba')).strftime("%d/%m/%Y %H:%M")
         end_date = timezone.datetime.now().strftime("%d/%m/%Y %H:%M")
 
         # Enviamos la request: