-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
65 lines (57 loc) · 2.25 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
from flask import Flask, request, render_template, redirect, url_for
from datetime import datetime, timedelta
app = Flask(__name__)
from bonus import preparar_datos
from recursos import obtener_datos_en_rango_dias, preparar_datos_uf_dolar
import dateutil.parser
import json
@app.route("/")
def index():
hoy = datetime.now()
semana_pasada = hoy - timedelta(days = 7)
error = request.args.get('error')
return render_template(
'index.html',
hoy = hoy.strftime("%Y-%m-%d"),
semana_pasada = semana_pasada.strftime("%Y-%m-%d"),
error = error
)
@app.route("/recurso")
def recurso():
fecha_inicio = request.args.get('fecha_inicio', '')
fecha_fin = request.args.get('fecha_fin', '')
if fecha_fin < fecha_inicio:
error = "Debe seleccionar rango de fecha válido"
return redirect(url_for('.index', error = error))
try:
datetime_inicio = dateutil.parser.parse(fecha_inicio)
datetime_fin = dateutil.parser.parse(fecha_fin)
except:
error = "Debe ingresar fecha en formato YYYY-MM-DD"
return redirect(url_for('.index', error = error))
nombre_recurso = request.args.get('nombre_recurso', '')
rango_dias = (fecha_inicio, fecha_fin)
datos_en_rango_dias = obtener_datos_en_rango_dias(nombre_recurso, datetime_inicio, datetime_fin, rango_dias)
if not datos_en_rango_dias:
error = "No hay datos en el rango seleccionado"
return redirect(url_for('.index', error = error))
if nombre_recurso == 'tmc':
(fechas, datasets, datos_tabla) = preparar_datos(datos_en_rango_dias)
return render_template(
'resultados_tmc.html',
fechas = json.dumps(fechas),
datasets = json.dumps(datasets),
datos_tabla = datos_tabla
)
else:
(valores, fechas, minimo, maximo, promedio, nombre_grafico) = preparar_datos_uf_dolar(nombre_recurso, datos_en_rango_dias)
return render_template(
'resultados.html',
minimo = minimo,
maximo = maximo,
promedio = round(promedio, 3),
datos = datos_en_rango_dias,
nombre_grafico = nombre_grafico,
fechas = fechas,
valores = valores
)