|
@@ -4,6 +4,7 @@ from django.utils import timezone
|
|
|
from api.config import get_next_calendar_date, get_previous_calendar_date
|
|
from api.config import get_next_calendar_date, get_previous_calendar_date
|
|
|
from django.conf import settings
|
|
from django.conf import settings
|
|
|
from django.utils.timezone import timedelta as delta
|
|
from django.utils.timezone import timedelta as delta
|
|
|
|
|
+from pytz import timezone as tz
|
|
|
import requests
|
|
import requests
|
|
|
import logging
|
|
import logging
|
|
|
logger = logging.getLogger('django')
|
|
logger = logging.getLogger('django')
|
|
@@ -32,21 +33,18 @@ class ProgrammedReport(models.Model):
|
|
|
validators=[json_not_empty_string_array, json_email_array])
|
|
validators=[json_not_empty_string_array, json_email_array])
|
|
|
|
|
|
|
|
# Actualiza la due_date en cada save del modelo:
|
|
# Actualiza la due_date en cada save del modelo:
|
|
|
- # TODO! Hay un bug al guardar un reporte via el Admin, donde si lo guardas por ahi la correcion de 3 horas de
|
|
|
|
|
- # self.start_report_date y due_date es innecesaria y simplemente desconfigura los rangos horarios.
|
|
|
|
|
- # Por el momento los reportes deben ser guardados via la interfaz,c reo que tiene que ver con la
|
|
|
|
|
- # timezone que envian cada una de las interfaces en start_report_date
|
|
|
|
|
def save(self, *args, **kwargs):
|
|
def save(self, *args, **kwargs):
|
|
|
- self.start_report_date = get_previous_calendar_date(self.start_report_date, self.frequency) + delta(hours=3, seconds=1) # Convert to UTC
|
|
|
|
|
- self.due_date = get_next_calendar_date(self.start_report_date, self.frequency) + delta(hours=3) # Convert to UTC
|
|
|
|
|
|
|
+ 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)
|
|
super().save(*args, **kwargs)
|
|
|
|
|
|
|
|
# Metodo que envía la petición a Clima para enviar el reporte.
|
|
# Metodo que envía la petición a Clima para enviar el reporte.
|
|
|
def send_report(self):
|
|
def send_report(self):
|
|
|
# Calculamos el formato en el que Clima requiere recibir los rangos.
|
|
# 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:
|
|
# Enviamos la request:
|
|
|
response = requests.post(settings.CLIMA_URL + "/async_report_handler", {
|
|
response = requests.post(settings.CLIMA_URL + "/async_report_handler", {
|
|
|
"id": self.id,
|
|
"id": self.id,
|
|
@@ -73,7 +71,7 @@ class ProgrammedReport(models.Model):
|
|
|
|
|
|
|
|
def send_report_now(self):
|
|
def send_report_now(self):
|
|
|
# Calculamos el formato en el que Clima requiere recibir los rangos.
|
|
# 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")
|
|
end_date = timezone.datetime.now().strftime("%d/%m/%Y %H:%M")
|
|
|
|
|
|
|
|
# Enviamos la request:
|
|
# Enviamos la request:
|