| @ -0,0 +1,24 @@ | |||||
| from flask import Flask, request,url_for,render_template,abort | |||||
| from lxml import etree | |||||
| import os | |||||
| app = Flask(__name__) | |||||
| @app.route('/',methods=["GET","POST"]) | |||||
| def inicio(): | |||||
| doc=etree.parse("sevilla.xml") | |||||
| municipios=doc.findall("municipio") | |||||
| return render_template("inicio.html",municipios=municipios) | |||||
| @app.route('/<code>') | |||||
| def temperatura(code): | |||||
| try: | |||||
| doc=etree.parse("http://www.aemet.es/xml/municipios/localidad_"+code+".xml") | |||||
| except: | |||||
| abort(404) | |||||
| name=doc.find("nombre").text | |||||
| max=doc.find("prediccion/dia/temperatura").find("maxima").text | |||||
| min=doc.find("prediccion/dia/temperatura").find("minima").text | |||||
| return render_template("temperaturas.html",name=name,max=max,min=min) | |||||
| if __name__ == '__main__': | |||||
| app.run() | |||||
| @ -0,0 +1,7 @@ | |||||
| click==6.7 | |||||
| Flask==0.12.2 | |||||
| itsdangerous==0.24 | |||||
| Jinja2==2.9.6 | |||||
| lxml==4.0.0 | |||||
| MarkupSafe==1.0 | |||||
| Werkzeug==0.12.2 | |||||
| @ -0,0 +1,106 @@ | |||||
| <provincia id="Sevilla"> | |||||
| <municipio value="alanis-id41002">Alanís</municipio> | |||||
| <municipio value="albaida-del-aljarafe-id41003">Albaida del Aljarafe</municipio> | |||||
| <municipio value="alcala-de-guadaira-id41004">Alcalá de Guadaíra</municipio> | |||||
| <municipio value="alcala-del-rio-id41005">Alcalá del Río</municipio> | |||||
| <municipio value="alcolea-del-rio-id41006">Alcolea del Río</municipio> | |||||
| <municipio value="algaba-la-id41007">Algaba, La</municipio> | |||||
| <municipio value="algamitas-id41008">Algámitas</municipio> | |||||
| <municipio value="almaden-de-la-plata-id41009">Almadén de la Plata</municipio> | |||||
| <municipio value="almensilla-id41010">Almensilla</municipio> | |||||
| <municipio value="arahal-id41011">Arahal</municipio> | |||||
| <municipio value="aznalcazar-id41012">Aznalcázar</municipio> | |||||
| <municipio value="aznalcollar-id41013">Aznalcóllar</municipio> | |||||
| <municipio value="badolatosa-id41014">Badolatosa</municipio> | |||||
| <municipio value="benacazon-id41015">Benacazón</municipio> | |||||
| <municipio value="bollullos-de-la-mitacion-id41016">Bollullos de la Mitación</municipio> | |||||
| <municipio value="bormujos-id41017">Bormujos</municipio> | |||||
| <municipio value="brenes-id41018">Brenes</municipio> | |||||
| <municipio value="burguillos-id41019">Burguillos</municipio> | |||||
| <municipio value="cabezas-de-san-juan-las-id41020">Cabezas de San Juan, Las</municipio> | |||||
| <municipio value="camas-id41021">Camas</municipio> | |||||
| <municipio value="campana-la-id41022">Campana, La</municipio> | |||||
| <municipio value="cantillana-id41023">Cantillana</municipio> | |||||
| <municipio value="canada-rosal-id41901">Cañada Rosal</municipio> | |||||
| <municipio value="carmona-id41024">Carmona</municipio> | |||||
| <municipio value="carrion-de-los-cespedes-id41025">Carrión de los Céspedes</municipio> | |||||
| <municipio value="casariche-id41026">Casariche</municipio> | |||||
| <municipio value="castilblanco-de-los-arroyos-id41027">Castilblanco de los Arroyos</municipio> | |||||
| <municipio value="castilleja-de-guzman-id41028">Castilleja de Guzmán</municipio> | |||||
| <municipio value="castilleja-de-la-cuesta-id41029">Castilleja de la Cuesta</municipio> | |||||
| <municipio value="castilleja-del-campo-id41030">Castilleja del Campo</municipio> | |||||
| <municipio value="castillo-de-las-guardas-el-id41031">Castillo de las Guardas, El</municipio> | |||||
| <municipio value="cazalla-de-la-sierra-id41032">Cazalla de la Sierra</municipio> | |||||
| <municipio value="constantina-id41033">Constantina</municipio> | |||||
| <municipio value="coria-del-rio-id41034">Coria del Río</municipio> | |||||
| <municipio value="coripe-id41035">Coripe</municipio> | |||||
| <municipio value="coronil-el-id41036">Coronil, El</municipio> | |||||
| <municipio value="corrales-los-id41037">Corrales, Los</municipio> | |||||
| <municipio value="cuervo-de-sevilla-el-cuervo-el-id41903">Cuervo de Sevilla, El</municipio> | |||||
| <municipio value="dos-hermanas-id41038">Dos Hermanas</municipio> | |||||
| <municipio value="ecija-id41039">Écija</municipio> | |||||
| <municipio value="espartinas-id41040">Espartinas</municipio> | |||||
| <municipio value="estepa-id41041">Estepa</municipio> | |||||
| <municipio value="fuentes-de-andalucia-id41042">Fuentes de Andalucía</municipio> | |||||
| <municipio value="garrobo-el-id41043">Garrobo, El</municipio> | |||||
| <municipio value="gelves-id41044">Gelves</municipio> | |||||
| <municipio value="gerena-id41045">Gerena</municipio> | |||||
| <municipio value="gilena-id41046">Gilena</municipio> | |||||
| <municipio value="gines-id41047">Gines</municipio> | |||||
| <municipio value="guadalcanal-id41048">Guadalcanal</municipio> | |||||
| <municipio value="guillena-id41049">Guillena</municipio> | |||||
| <municipio value="herrera-id41050">Herrera</municipio> | |||||
| <municipio value="huevar-del-aljarafe-id41051">Huévar del Aljarafe</municipio> | |||||
| <municipio value="isla-mayor-id41902">Isla Mayor</municipio> | |||||
| <municipio value="lantejuela-la-id41052">Lantejuela, La</municipio> | |||||
| <municipio value="lebrija-id41053">Lebrija</municipio> | |||||
| <municipio value="lora-de-estepa-id41054">Lora de Estepa</municipio> | |||||
| <municipio value="lora-del-rio-id41055">Lora del Río</municipio> | |||||
| <municipio value="luisiana-la-id41056">Luisiana, La</municipio> | |||||
| <municipio value="madrono-el-id41057">Madroño, El</municipio> | |||||
| <municipio value="mairena-del-alcor-id41058">Mairena del Alcor</municipio> | |||||
| <municipio value="mairena-del-aljarafe-id41059">Mairena del Aljarafe</municipio> | |||||
| <municipio value="marchena-id41060">Marchena</municipio> | |||||
| <municipio value="marinaleda-id41061">Marinaleda</municipio> | |||||
| <municipio value="martin-de-la-jara-id41062">Martín de la Jara</municipio> | |||||
| <municipio value="molares-los-id41063">Molares, Los</municipio> | |||||
| <municipio value="montellano-id41064">Montellano</municipio> | |||||
| <municipio value="moron-de-la-frontera-id41065">Morón de la Frontera</municipio> | |||||
| <municipio value="navas-de-la-concepcion-las-id41066">Navas de la Concepción, Las</municipio> | |||||
| <municipio value="olivares-id41067">Olivares</municipio> | |||||
| <municipio value="osuna-id41068">Osuna</municipio> | |||||
| <municipio value="palacios-y-villafranca-los-id41069">Palacios y Villafranca, Los</municipio> | |||||
| <municipio value="palomares-del-rio-id41070">Palomares del Río</municipio> | |||||
| <municipio value="paradas-id41071">Paradas</municipio> | |||||
| <municipio value="pedrera-id41072">Pedrera</municipio> | |||||
| <municipio value="pedroso-el-id41073">Pedroso, El</municipio> | |||||
| <municipio value="penaflor-id41074">Peñaflor</municipio> | |||||
| <municipio value="pilas-id41075">Pilas</municipio> | |||||
| <municipio value="pruna-id41076">Pruna</municipio> | |||||
| <municipio value="puebla-de-cazalla-la-id41077">Puebla de Cazalla, La</municipio> | |||||
| <municipio value="puebla-de-los-infantes-la-id41078">Puebla de los Infantes, La</municipio> | |||||
| <municipio value="puebla-del-rio-la-id41079">Puebla del Río, La</municipio> | |||||
| <municipio value="real-de-la-jara-el-id41080">Real de la Jara, El</municipio> | |||||
| <municipio value="rinconada-la-id41081">Rinconada, La</municipio> | |||||
| <municipio value="roda-de-andalucia-la-id41082">Roda de Andalucía, La</municipio> | |||||
| <municipio value="ronquillo-el-id41083">Ronquillo, El</municipio> | |||||
| <municipio value="rubio-el-id41084">Rubio, El</municipio> | |||||
| <municipio value="salteras-id41085">Salteras</municipio> | |||||
| <municipio value="san-juan-de-aznalfarache-id41086">San Juan de Aznalfarache</municipio> | |||||
| <municipio value="sanlucar-la-mayor-id41087">Sanlúcar la Mayor</municipio> | |||||
| <municipio value="san-nicolas-del-puerto-id41088">San Nicolás del Puerto</municipio> | |||||
| <municipio value="santiponce-id41089">Santiponce</municipio> | |||||
| <municipio value="saucejo-el-id41090">Saucejo, El</municipio> | |||||
| <municipio value="sevilla-id41091">Sevilla</municipio> | |||||
| <municipio value="tocina-id41092">Tocina</municipio> | |||||
| <municipio value="tomares-id41093">Tomares</municipio> | |||||
| <municipio value="umbrete-id41094">Umbrete</municipio> | |||||
| <municipio value="utrera-id41095">Utrera</municipio> | |||||
| <municipio value="valencina-de-la-concepcion-id41096">Valencina de la Concepción</municipio> | |||||
| <municipio value="villamanrique-de-la-condesa-id41097">Villamanrique de la Condesa</municipio> | |||||
| <municipio value="villanueva-del-ariscal-id41098">Villanueva del Ariscal</municipio> | |||||
| <municipio value="villanueva-del-rio-y-minas-id41099">Villanueva del Río y Minas</municipio> | |||||
| <municipio value="villanueva-de-san-juan-id41100">Villanueva de San Juan</municipio> | |||||
| <municipio value="villaverde-del-rio-id41101">Villaverde del Río</municipio> | |||||
| <municipio value="viso-del-alcor-el-id41102">Viso del Alcor, El</municipio> | |||||
| </provincia> | |||||
| @ -0,0 +1,277 @@ | |||||
| * | |||||
| { margin: 0; | |||||
| padding: 0;} | |||||
| body | |||||
| { font-family: 'trebuchet ms', arial, sans-serif; | |||||
| padding: 0px; | |||||
| margin: 0px; | |||||
| font-size: .80em; | |||||
| background: #E9E4C7 url(pattern.png); | |||||
| color: #555;} | |||||
| p | |||||
| { margin: 0px; | |||||
| padding: 0px 0px 16px 0px; | |||||
| line-height: 1.7em;} | |||||
| h1, h2, h3, h4, h5, h6 | |||||
| { color: #362C20; | |||||
| padding: 0 0 5px 0;} | |||||
| h1, h4 | |||||
| { font: normal 175% "century gothic", arial; | |||||
| margin: 0 0 15px 0; | |||||
| padding: 15px 20px 5px 0; | |||||
| color: #444;} | |||||
| h2, h5 | |||||
| { padding: 0 0 5px 0; | |||||
| font: normal 110% arial; | |||||
| text-transform: uppercase; | |||||
| letter-spacing: 0;} | |||||
| h3, h6 | |||||
| { color: #888; | |||||
| font: normal 95% arial; | |||||
| letter-spacing: 0; | |||||
| padding: 0 0 15px 0;} | |||||
| h4 | |||||
| { color: #362C20;} | |||||
| h5, h6 | |||||
| { color: #129991;} | |||||
| img | |||||
| { border: 0px; | |||||
| margin: 0px; | |||||
| padding: 0px;} | |||||
| .left | |||||
| { float: left; | |||||
| border-right: 20px solid #FFF;} | |||||
| .right | |||||
| { float: right; | |||||
| border-left: 20px solid #FFF;} | |||||
| .center | |||||
| { display: block; | |||||
| text-align: center; | |||||
| margin: 0 auto;} | |||||
| blockquote | |||||
| { margin: 20px 0px 20px 0px; | |||||
| padding: 10px 20px 0px 20px; | |||||
| border: 1px solid #E5E5DB; | |||||
| background: #F5F5F1;} | |||||
| ul | |||||
| { margin: 2px 0px 18px 16px; | |||||
| padding: 0px;} | |||||
| ul li | |||||
| { list-style-type: square; | |||||
| margin: 0px 0px 6px 0px; | |||||
| padding: 0px;} | |||||
| ol | |||||
| { margin: 8px 0px 0px 24px; | |||||
| padding: 0px;} | |||||
| ol li | |||||
| { margin: 0px 0px 11px 0px; | |||||
| padding: 0px;} | |||||
| a, a:hover | |||||
| { outline: none; | |||||
| border-bottom: 1px dotted; | |||||
| text-decoration: none; | |||||
| color: #444;} | |||||
| a:hover | |||||
| { border-bottom: 1px solid;} | |||||
| #logo, #menubar, #panel, #site_content, #footer | |||||
| { margin-left: auto; | |||||
| margin-right: auto;} | |||||
| #header | |||||
| { background: url(back.png) repeat-x;} | |||||
| #logo | |||||
| { width: 870px; | |||||
| position: relative; | |||||
| height: 107px;} | |||||
| #logo #logo_text | |||||
| { position: absolute; | |||||
| top: 15px; | |||||
| left: 0;} | |||||
| #logo h1 | |||||
| { font: normal 300% "century gothic", arial, sans-serif; | |||||
| border-bottom: 0; | |||||
| text-transform: none; | |||||
| padding: 12px 0 0 26px; | |||||
| color: #FFF; | |||||
| margin: 0;} | |||||
| #menubar | |||||
| { width: 879px; | |||||
| height: 45px; | |||||
| padding-left: 5px;} | |||||
| ul#menu{float: right;margin: 0px;} | |||||
| ul#menu li | |||||
| { float: left; | |||||
| margin: 7px 0 0 0; | |||||
| padding: 0 0 0 6px; | |||||
| list-style: none;} | |||||
| ul#menu li a | |||||
| { font-size: 110%; | |||||
| display: block; | |||||
| float: left; | |||||
| height: 25px; | |||||
| border-bottom: 0; | |||||
| text-decoration: none; | |||||
| padding: 8px 32px 5px 26px; | |||||
| text-align: center; | |||||
| color: #FFF; | |||||
| text-transform: uppercase;} | |||||
| ul#menu li.tab_selected a | |||||
| { height: 25px; | |||||
| padding: 8px 32px 5px 26px;} | |||||
| ul#menu li.tab_selected | |||||
| { margin: 7px 0 0 0; | |||||
| background: transparent url(tabs.png) no-repeat 0 0px;} | |||||
| ul#menu li.tab_selected a, ul#menu li.tab_selected a:hover | |||||
| { background: url(tabs.png) no-repeat 100% 0px; | |||||
| color: #000;} | |||||
| ul#menu li a:hover | |||||
| { color: #27C0FF;} | |||||
| #panel | |||||
| { width: 792px; | |||||
| height: 154px; | |||||
| border: 15px solid #F3F2EF;} | |||||
| #site_content | |||||
| { width: 875px; | |||||
| background: #FFF; | |||||
| overflow: hidden; padding-top: 20px;} | |||||
| .sidebar | |||||
| { float: right; | |||||
| width: 178px; | |||||
| padding: 20px 25px 15px 15px;} | |||||
| .sidebar ul | |||||
| { width: 178px; | |||||
| padding-top: 4px; | |||||
| margin: 4px 0px 30px 0px;} | |||||
| .sidebar li | |||||
| { list-style: none; | |||||
| padding: 0px 0px 4px 0px;} | |||||
| .sidebar li a, .sidebar li a:hover | |||||
| { text-decoration: none; | |||||
| padding: 0px 0px 0px 18px; | |||||
| display: block; | |||||
| background: transparent url(arrow.png) no-repeat left center; | |||||
| color: #555; | |||||
| border: none;} | |||||
| .sidebar li a.selected, .sidebar li a:hover, .sidebar li a.selected:hover | |||||
| { background: transparent url(arrow_select.png) no-repeat left center;} | |||||
| #content | |||||
| { text-align: left; | |||||
| width: 597px; | |||||
| padding: 20px 10px 15px 26px;} | |||||
| #footer | |||||
| { width: 780px; | |||||
| height: 33px; | |||||
| padding: 20px 20px 4px 20px; | |||||
| margin-bottom: 20px; | |||||
| text-align: center; | |||||
| background: transparent; | |||||
| color: #444; | |||||
| text-transform: uppercase;} | |||||
| .alternate_colour | |||||
| { color: #27C0FF;} | |||||
| .form_settings | |||||
| { margin: 15px 0 0 0;} | |||||
| .form_settings p | |||||
| { padding: 0 0 4px 0;} | |||||
| .form_settings span | |||||
| { float: left; | |||||
| width: 200px; | |||||
| text-align: left;} | |||||
| .form_settings input, .form_settings textarea | |||||
| { padding: 4px; | |||||
| width: 299px; | |||||
| font: 100% arial; | |||||
| border: 1px solid #E5E5DB; | |||||
| background: #FFF; | |||||
| color: #47433F;} | |||||
| .form_settings .submit | |||||
| { font: 100% arial; | |||||
| border: 1px solid; | |||||
| width: 99px; | |||||
| margin: 0 0 0 210px; | |||||
| height: 36px; | |||||
| padding: 2px 0 3px 0; | |||||
| cursor: pointer; | |||||
| background: #3B3B3B; | |||||
| color: #FFF;} | |||||
| .form_settings textarea, .form_settings select | |||||
| { font: 100% arial; | |||||
| width: 299px;} | |||||
| .form_settings select | |||||
| { width: 304px;} | |||||
| .form_settings .checkbox | |||||
| { margin: 4px 0; | |||||
| padding: 0; | |||||
| width: 14px; | |||||
| border: 0; | |||||
| background: none;} | |||||
| .separator | |||||
| { width: 100%; | |||||
| height: 0; | |||||
| border-top: 1px solid #D9D5CF; | |||||
| border-bottom: 1px solid #FFF; | |||||
| margin: 0 0 20px 0;} | |||||
| table | |||||
| { margin: 10px 0 30px 0;} | |||||
| table tr th, table tr td | |||||
| { text-align: left; | |||||
| background: #3B3B3B; | |||||
| color: #FFF; | |||||
| padding: 7px 4px;} | |||||
| table tr td | |||||
| { background: #CCCCCC; | |||||
| color: #47433F; | |||||
| border-top: 1px solid #FFF;} | |||||
| @ -0,0 +1,45 @@ | |||||
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> | |||||
| <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> | |||||
| <head> | |||||
| <title>{% block title %}{% endblock %}</title> | |||||
| <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> | |||||
| <link rel="stylesheet" type="text/css" href="{{url_for("static", filename='css/style.css')}}"> | |||||
| </head> | |||||
| <body> | |||||
| <div id="main"> | |||||
| <div id="header"> | |||||
| <div id="logo"> | |||||
| <h1>Curso de <span class="alternate_colour">Flask</span></h1> | |||||
| </div> | |||||
| <div id="menubar"> | |||||
| <ul id="menu"> | |||||
| <!-- put class="tab_selected" in the li tag for the selected page - to highlight which page you're on --> | |||||
| <li class="tab_selected"><a href="/">Home</a></li> | |||||
| <li><a href="#">Flask</a></li> | |||||
| <li><a href="#">OpenWebeninars</a></li> | |||||
| </ul> | |||||
| </div> | |||||
| </div> | |||||
| <div id="site_content"> | |||||
| <div id="panel"><img src="{{url_for("static", filename='css/panel.png')}}" alt="tree tops" /></div> | |||||
| <div class="sidebar"> | |||||
| <!-- insert your sidebar items here --> | |||||
| <h1>Blogroll</h1> | |||||
| <ul> | |||||
| <li><a href="#">Flask</a></li> | |||||
| <li><a href="#">Python3</a></li> | |||||
| <li><a href="#">OpenWeninars</a></li> | |||||
| </ul> | |||||
| </div> | |||||
| <div id="content"> | |||||
| {% block content %}{% endblock %} | |||||
| </div> | |||||
| </div> | |||||
| <div id="footer">Copyright © Company Name. All Rights Reserved. | <a href="http://validator.w3.org/check?uri=referer">XHTML</a> | <a href="http://jigsaw.w3.org/css-validator/check/referer">CSS</a> | <a href="http://www.dcarter.co.uk">design by dcarter</a></div> | |||||
| </div> | |||||
| <div style="text-align: center; font-size: 0.75em;">Diseño descargado desde <a href="http://www.misplantillas.com/">plantillas web gratis</a>.</div></body> | |||||
| </html> | |||||
| @ -0,0 +1,9 @@ | |||||
| {% extends "base.html" %} | |||||
| {% block title %}Temperaturas{% endblock %} | |||||
| {% block content %} | |||||
| <ul> | |||||
| {% for m in municipios:%} | |||||
| <li><a href="/{{m.attrib["value"][-5:]}}">{{m.text}}</a></li> | |||||
| {% endfor%} | |||||
| </ul> | |||||
| {% endblock %} | |||||
| @ -0,0 +1,5 @@ | |||||
| {% extends "base.html" %} | |||||
| {% block title %}{{titulo}}{% endblock %} | |||||
| {% block content %} | |||||
| <h1>{{resultado}}<h1> | |||||
| {% endblock %} | |||||
| @ -0,0 +1,8 @@ | |||||
| {% extends "base.html" %} | |||||
| {% block title %}Temperaturas{% endblock %} | |||||
| {% block content %} | |||||
| <h1>Temperaturas en {{name}}</h1> | |||||
| <p>Temperatura máxima:<strong>{{max}}ºC</strong></p> | |||||
| <p>temperatura mínima:<strong>{{min}}ºC</strong></p> | |||||
| <a href="..">Volver</a> | |||||
| {% endblock %} | |||||