Sfoglia il codice sorgente

Modificación de formato de hora a isoformat()

Oscar A Leiva 7 anni fa
parent
commit
ae2b48b2e5
5 ha cambiato i file con 88 aggiunte e 4 eliminazioni
  1. 16 0
      app.py
  2. 26 4
      models.py
  3. 4 0
      static/style.css
  4. 14 0
      templates/home.html
  5. 28 0
      templates/layout.html

+ 16 - 0
app.py

@@ -1,15 +1,31 @@
 #!flask/bin/python
 from flask import Flask
 from flask_restful import Api
+from flask.json import JSONEncoder
+from datetime import date
 
 from models import *
 
+class CustomJSONEncoder(JSONEncoder):
+    def default(self, obj):
+        try:
+            if isinstance(obj, date):
+                return obj.isoformat()
+            iterable = iter(obj)
+        except TypeError:
+            pass
+        else:
+            return list(iterable)
+        return JSONEncoder.default(self,obj)
+
 app = Flask(__name__)
+app.json_encoder = CustomJSONEncoder
 api = Api(app)
 
 api.add_resource(Demandas_Meta, '/api/v1/paises')
 api.add_resource(Demandas, '/api/v1/demandas')
 api.add_resource(Demanda_Max, '/api/v1/demandamax/<string:pais>')
+api.add_resource(Home_Page, '/')
 
 
 if __name__ == '__main__':

+ 26 - 4
models.py

@@ -1,4 +1,4 @@
-from flask import jsonify
+from flask import jsonify, render_template, make_response
 from flask_restful import Resource
 from database import e
 from json import dumps
@@ -36,9 +36,25 @@ class Demanda_Max(Resource):
         #Connect to database
         conn = e.connect()
         #Perform query and return JSON data
-        query = conn.execute("SELECT fecha_hora, pais, demanda FROM generacion_eor_tr WHERE \
-                            demanda = (select max(demanda) from generacion_eor_tr where pais = '{0}') \
-                            and pais = '{0}'".format(pais.upper()))
+        query = conn.execute("""SELECT
+                                FECHA_HORA,
+                                PAIS,
+                                DEMANDA 
+                                FROM
+                                GENERACION_EOR_TR 
+                                WHERE
+                                DEMANDA = 
+                                (
+                                    SELECT
+                                    MAX(DEMANDA) 
+                                    FROM
+                                    GENERACION_EOR_TR 
+                                    WHERE
+                                    PAIS = '{0}' 
+                                    AND FECHA_HORA >= DATEADD(DAY, - 1, GETDATE())
+                                )
+                                AND PAIS = '{0}' 
+                                AND FECHA_HORA >= DATEADD(DAY, - 1, GETDATE())""".format(pais.upper()))
         columns = query.keys()
         data = []
         result = query.cursor.fetchall()
@@ -46,3 +62,9 @@ class Demanda_Max(Resource):
             data.append(dict(zip(columns, row)))
         response = jsonify({'data' : data})
         return response
+
+class Home_Page(Resource):
+    def get(self):
+        headers = {'Content-Type' : 'text/html'}
+        return make_response(render_template('home.html', title = 'API MER Data'),200,headers)
+        

+ 4 - 0
static/style.css

@@ -0,0 +1,4 @@
+.jumbotron { margin-top: 50px;}
+.list-group { display: inline-block;}
+.bold {font-weight: bold;}
+.copyright{padding-top:20px;padding-bottom:20px;text-align:center;}

+ 14 - 0
templates/home.html

@@ -0,0 +1,14 @@
+{% extends "layout.html" %}
+{% block body %}
+<div class="jumbotron">
+    <h1 class='display-2'>API MER Data</h1>
+    <h3>Version 1.0</h3>
+</div>
+
+<p class='lead'>Las siguientes opciones estan disponibles</p>
+<ul class=''>
+    <li class=''><p class="bold">Demandas de energía</p><p>/api/v1/demandas/</p></li><br>
+    <li class=''><p class="bold">Demanda Máxima por país</p><p>/api/v1/demandamax/&lt;pais&gt;</p></li><br>
+    <li class=''><p class="bold">Paises con Información</p><p>/api/v1/paises</p></li><br>
+</ul>
+{% endblock %}

+ 28 - 0
templates/layout.html

@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
+    <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
+    <title>{{ title }}</title>
+</head>
+<body>
+    <div class="container">
+            {% block body %}{% endblock %}
+    </div>
+
+    <!-- copyright section -->
+		<div class="copyright">
+                <div class="container">
+                    <div class="row">
+                        <div class="col-md-12 col-sm-12">
+                            <p>Copyright &copy; <?php echo date("Y"); ?> Mercados Electricos de Centroamérica, S.A. de C.V.</p>
+                        </div>
+                    </div>
+                </div>
+            </div>
+    
+</body>
+</html>