from flask import Flask, render_template, url_for, jsonify, send_file, send_from_directory from flask_wtf import FlaskForm from wtforms import StringField, PasswordField from wtforms.validators import DataRequired, InputRequired # from flask_cors import CORS import requests import json import os from db_conf import * app = Flask(__name__) app.config['SECRET_KEY'] = 'SiCt2021CsIcDIX' class LoginForm(FlaskForm): username = StringField('username', validators=[InputRequired( 'EL código GID es requerido'), DataRequired()]) password = PasswordField('password', validators=[InputRequired( 'La contraseña es requerida'), DataRequired('campo requerido')]) @app.route('/', methods=['GET', 'POST']) def home(): form = LoginForm() mensaje = "" if form.validate_on_submit(): user = form.username.data pswd = form.password.data sitios = DataBaseServer().get_data('SELECT * FROM sitios;')[0][1] dirSubdirsEdos = DataBaseServer().get_data( 'SELECT * FROM dir_csict;')[0][1] # print(dirSubdirsEdos) for sitio in sitios: gid = sitio['CodigoGid'] password = sitio['PasswordGid'] if pswd == password and user == gid: centroSICT = next( (x for x in dirSubdirsEdos if int(x['idEdo']) == int(sitio['idEdo'])), None) if centroSICT is not None: objeto = { 'codigoGid': gid, 'sitio': sitio['nombreTipologia'].title(), 'ai': sitio['NombreUnidad'].title(), 'edo': sitio['Estado'].title(), 'mun': sitio['Municipio'].title(), 'loc': sitio['Localidad'].title(), 'nIndicadores': len(sitio['indicadores']), 'responsableSitio': sitio['ResponsableSitio'].title(), 'PuestoResponsable': sitio['PuestoResponsable'].title(), 'indicadores': sitio['indicadores'], 'lat': sitio['ubicacion']['latitud'], 'lon': sitio['ubicacion']['longitud'], 'centroSICT': centroSICT } return render_template('layout_reportes.html', objeto=objeto, mensaje=mensaje) # Si el bucle for se completa sin encontrar coincidencias, muestra el mensaje de error mensaje = 'El código gid y/o contraseña son incorrectas, verifique sus credenciales.' return render_template('index.html', form=form, mensaje=mensaje) return render_template('index.html', form=form) @app.route('/mapa') def mapa(): return render_template('mapa.html') @app.route("/mapa/sitios_info") def sample(): dataRequest = DataBaseServer().get_data('SELECT * FROM sitios;')[0][1] # with open("./database/sitios.json", mode="r", encoding="utf-8") as file: # dataRequest = json.load(file) lstSitios = [] for s in dataRequest: if 'ubicacion' in s.keys(): tempObj = { 'CodigoGid': s['CodigoGid'], 'NombreUnidad': s['NombreUnidad'].title(), 'Denominacion': s['Denominacion'].title(), 'Estado': s['Estado'].title(), 'Municipio': s['Municipio'].title(), 'Localidad': s['Localidad'].title(), 'ubicacion': s['ubicacion'], 'lenguasIndigenas': s['lenguasIndigenas'].title(), 'fechaInstalacion': s['fechaInstalacion'], 'infografiaSitio': s['infografiaSitio'] } lstSitios.append(tempObj) return jsonify(lstSitios) @app.route('/mapa/coordenadas') def coordenadas(): c = DataBaseServer().get_coordenadas()[0][1] return jsonify(c) @app.route('/mapa/img_ai') def img_ai(): return send_file('./static/imgs/icon_ai2.png') @app.errorhandler(404) def error_page(e): return render_template('error_page.html') if __name__ == '__main__': app.run(port=8080, debug=True, host="0.0.0.0")