diff --git a/db_conf.py b/db_conf.py deleted file mode 100644 index 8c899e5..0000000 --- a/db_conf.py +++ /dev/null @@ -1,44 +0,0 @@ -import socket -import psycopg2 -import json -import os - -ip_device = os.getenv("ip_device") -db_server = json.loads(os.getenv("dist_servs"))[ip_device] - -class DataBaseServer(): - db_server_ip = db_server - port = 5432 - user = "postgres" - - def get_data(self, query): - conn = psycopg2.connect( - host=DataBaseServer.db_server_ip, - port=DataBaseServer.port, - database="aldeas_inteligentes", - user=DataBaseServer.user, - password="Shala55951254" - ) - cursor = conn.cursor() - # Utiliza el parámetro 'query' que recibiste en el método - cursor.execute(query) - result = cursor.fetchall() - cursor.close() - conn.close() - return result - - def get_coordenadas(self): - conn = psycopg2.connect( - host=DataBaseServer.db_server_ip, - port=DataBaseServer.port, - database="coordenadas_mx", - user="postgres", - password="Shala55951254" - ) - cursor = conn.cursor() - # Utiliza el parámetro 'query' que recibiste en el método - cursor.execute("SELECT* FROM coordenadas_mexico;") - result = cursor.fetchall() - cursor.close() - conn.close() - return result diff --git a/help_files/01_create_database.py b/help_files/01_create_database.py new file mode 100644 index 0000000..bb618ec --- /dev/null +++ b/help_files/01_create_database.py @@ -0,0 +1,86 @@ +import sqlite3 +import os +import json +# from tqdm import tqdm + +db = "sict_csic.db" +gen_path = lambda x : f'json_files/{x}' + +# ################################################################ +# CREAR LA BASE DE DATOS +# ################################################################ + +# Verificar si la base de datos existe y eliminarla +if os.path.exists(db): + os.remove(db) + print("Base de datos existente eliminada.") + +# Conectar a la base de datos (se crea si no existe) +conexion = sqlite3.connect(db) +cursor = conexion.cursor() + + +# ################################################################ +# CREAR TABLA DE COORDENADAS +# ################################################################ + +# Crear una tabla para almacenar JSON +cursor.execute( + ''' + CREATE TABLE IF NOT EXISTS coordenadas_mexico ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + json_data TEXT NOT NULL + ) + ''') + +# Leer el archivo JSON +with open(gen_path('coordenas_unicas.json'), 'r', encoding='utf-8-sig') as f: + json_coordenadas = json.load(f) + +# Insertar el JSON en la tabla +q_coordenadas = "INSERT INTO coordenadas_mexico (json_data) VALUES (?)" +cursor.execute(q_coordenadas, (json.dumps(json_coordenadas),)) + +# ################################################################ +# CREAR TABLA DE DIR_CSIC +# ################################################################ + +cursor.execute(''' + CREATE TABLE IF NOT EXISTS dir_csict ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + json_data TEXT NOT NULL + ) +''') + +# Leer el archivo JSON +with open(gen_path('DirectorioCSICT.json'), 'r', encoding='utf-8-sig') as f: + json_dir_csic = json.load(f) + +q_dir_csic = "INSERT INTO dir_csict (json_data) VALUES (?)" +cursor.execute(q_dir_csic, (json.dumps(json_dir_csic),)) + + +# ################################################################ +# CREAR TABLA DE SITIOS +# ################################################################ + +cursor.execute( +''' +CREATE TABLE sitios ( +id INTEGER PRIMARY KEY AUTOINCREMENT, +json_data TEXT NOT NULL +); +''') + +# Leer el archivo JSON +with open(gen_path('sitios.json'), 'r', encoding='utf-8-sig') as f: + json_sitios = json.load(f) + +q_sitios = "INSERT INTO sitios (json_data) VALUES (?)" +cursor.execute(q_sitios, (json.dumps(json_sitios),)) + +# Guardar cambios y cerrar conexión +conexion.commit() +conexion.close() +print("base de datos creada exitosamente") + diff --git a/help_files/db_cls.py b/help_files/db_cls.py new file mode 100644 index 0000000..cc0277c --- /dev/null +++ b/help_files/db_cls.py @@ -0,0 +1,21 @@ +import sqlite3 + +class DBSQLite(): + def __init__(self, db_name): + self.db_name = db_name + + def get_data(self, query, params=None): + # Conectar a la base de datos y ejecutar una consulta + if params is None: + params = [] + + with sqlite3.connect(self.db_name) as conexion: + cursor = conexion.cursor() + cursor.execute(query, params) # Usa parámetros para evitar inyección SQL + result = cursor.fetchall() + return result + + def get_coordenadas(self): + # Obtener todas las coordenadas + return self.get_data("SELECT * FROM coordenadas_mexico;") + \ No newline at end of file diff --git a/help_files/sict_csic.db b/help_files/sict_csic.db new file mode 100644 index 0000000..e1de274 Binary files /dev/null and b/help_files/sict_csic.db differ diff --git a/help_files/upgrade_coordenadas.py b/help_files/upgrade_coordenadas.py deleted file mode 100644 index 7090d75..0000000 --- a/help_files/upgrade_coordenadas.py +++ /dev/null @@ -1,48 +0,0 @@ -import psycopg2 -import json -import os - -ip_device = os.getenv("ip_device") -db_server = json.loads(os.getenv("dist_servs"))[ip_device] - -f_path = os.path.join(os.getcwd(), "json_files/coordenas_unicas.json") - -# cargar coordenadas a la memoria de la computadora -# json_file_path = ".\json_files\coordenas_unicas.json" -with open(f_path, 'r', encoding='utf-8-sig') as f: - json_content = json.load(f) - -# crear la conexión a la base de datos -conn = psycopg2.connect( - host=db_server, - port=5432, - database="coordenadas_mx", - user="postgres", - password="Shala55951254" - ) - -cursor = conn.cursor() - -cursor.execute("DROP TABLE IF EXISTS coordenadas_mexico;") - -# crear la tabla en la base e datos -create_table_query = """ -CREATE TABLE coordenadas_mexico ( -id SERIAL PRIMARY KEY, -json_data JSONB -);""" - -cursor.execute(create_table_query) - -# Insertar el contenido JSON en la tabla -insert_query = "INSERT INTO coordenadas_mexico (json_data) VALUES (%s);" -cursor.execute(insert_query, (json.dumps(json_content),)) - -# guardar cambios -conn.commit() - -# Cerrar la conexión -cursor.close() -conn.close() - -print("se han cargado las coordenadas.") diff --git a/help_files/upgrade_directorio_centros_sict.py b/help_files/upgrade_directorio_centros_sict.py deleted file mode 100644 index ed441c0..0000000 --- a/help_files/upgrade_directorio_centros_sict.py +++ /dev/null @@ -1,44 +0,0 @@ -import psycopg2 -import json -import os - -ip_device = os.getenv("ip_device") -db_server = json.loads(os.getenv("dist_servs"))[ip_device] - -# Parámetros de conexión a la base de datos -file_path = os.path.join(os.getcwd(), "json_files/DirectorioCSICT.json") - -# json_file_path = ".\json_files\DirectorioCSICT.json" -with open(file_path, 'r', encoding='utf-8-sig') as f: - json_content = json.load(f) - -conn = psycopg2.connect( - host=db_server, - port=5432, - database="aldeas_inteligentes", - user="postgres", - password="Shala55951254" -) - -cursor = conn.cursor() - -cursor.execute("DROP TABLE IF EXISTS dir_csict;") - -create_table_query = """ -CREATE TABLE dir_csict ( -id SERIAL PRIMARY KEY, -json_data JSONB -);""" - -cursor.execute(create_table_query) - -# Insertar el contenido JSON en la tabla -insert_query = "INSERT INTO dir_csict (json_data) VALUES (%s);" -cursor.execute(insert_query, (json.dumps(json_content),)) - -# guardar cambios -conn.commit() -# Cerrar la conexión -cursor.close() -conn.close() -print(f'Servidor actualizado en directorio centros sict') diff --git a/help_files/upgrade_sitios_ai.py b/help_files/upgrade_sitios_ai.py deleted file mode 100644 index 875dc73..0000000 --- a/help_files/upgrade_sitios_ai.py +++ /dev/null @@ -1,44 +0,0 @@ -import psycopg2 -import json -import os - -ip_device = os.getenv("ip_device") -db_server = json.loads(os.getenv("dist_servs"))[ip_device] - -# Parámetros de conexión a la base de datos -f_path = os.path.join(os.getcwd(), "json_files/sitios.json") - -# json_file_path = ".\json_files\sitios.json" -with open(f_path, 'r', encoding='utf-8-sig') as f: - json_content = json.load(f) - -conn = psycopg2.connect( - host=db_server, - port=5432, - database="aldeas_inteligentes", - user="postgres", - password="Shala55951254" -) - -cursor = conn.cursor() -cursor.execute("DROP TABLE IF EXISTS sitios;") - -create_table_query = """ -CREATE TABLE sitios ( -id SERIAL PRIMARY KEY, -json_data JSONB -);""" - -cursor.execute(create_table_query) - -# Insertar el contenido JSON en la tabla -insert_query = "INSERT INTO sitios (json_data) VALUES (%s);" -cursor.execute(insert_query, (json.dumps(json_content),)) - -# guardar cambios -conn.commit() - -# Cerrar la conexión -cursor.close() -conn.close() -print('Servidor actualizado en sitios') \ No newline at end of file diff --git a/log/access.log b/log/access.log new file mode 100644 index 0000000..e69de29 diff --git a/log/error.log b/log/error.log new file mode 100644 index 0000000..e69de29 diff --git a/main.py b/main.py index 2f7c17a..928d8b4 100644 --- a/main.py +++ b/main.py @@ -2,11 +2,14 @@ from flask import Flask, render_template, url_for, jsonify, send_file, send_from 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 * +from help_files.db_cls import DBSQLite + +db_path = os.path.join(os.getcwd(), "help_files/sict_csic.db") + +DB = DBSQLite(db_path) app = Flask(__name__) app.config['SECRET_KEY'] = 'SiCt2021CsIcDIX' @@ -24,10 +27,14 @@ def home(): 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) + q_sitios = 'SELECT * FROM sitios;' + sitios = DB.get_data(q_sitios)[0][1] + sitios = json.loads(sitios) + + q_dirSubdirsEdos = 'SELECT * FROM dir_csict;' + dirSubdirsEdos = DB.get_data(q_dirSubdirsEdos)[0][1] + dirSubdirsEdos = json.loads(dirSubdirsEdos) + for sitio in sitios: gid = sitio['CodigoGid'] @@ -63,9 +70,6 @@ def home(): return render_template('index.html', form=form) - - - @app.route('/mapa') def mapa(): return render_template('mapa.html') @@ -73,10 +77,10 @@ def mapa(): @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) - + q_dataRequest = 'SELECT * FROM sitios;' + dataRequest = DB.get_data(q_dataRequest)[0][1] + dataRequest = json.loads(dataRequest) + lstSitios = [] for s in dataRequest: @@ -92,7 +96,6 @@ def sample(): 'lenguasIndigenas': s['lenguasIndigenas'].title(), 'fechaInstalacion': s['fechaInstalacion'], 'infografiaSitio': s['infografiaSitio'] - } lstSitios.append(tempObj) @@ -101,7 +104,8 @@ def sample(): @app.route('/mapa/coordenadas') def coordenadas(): - c = DataBaseServer().get_coordenadas()[0][1] + c = DB.get_coordenadas()[0][1] + c = json.loads(c) return jsonify(c) diff --git a/sict-csic.page.conf b/sict-csic.page.conf index af5bbec..88fc000 100644 --- a/sict-csic.page.conf +++ b/sict-csic.page.conf @@ -1,18 +1,48 @@ ServerAdmin davidix1991@gmail.com ServerName sict-csic.page + ServerAlias sict-csic.page DocumentRoot /var/www/sict_csic - WSGIDaemonProcess app user=www-data group=www-data threads=5 python-home=/var/www/sict_csic/.venv + WSGIDaemonProcess app user=www-data group=www-data threads=4 python-home=/var/www/sict_csic/.venv WSGIScriptAlias / /var/www/sict_csic/sictApp.wsgi - ErrorLog /var/www/sict_csic/error_sict-csic.log - CustomLog /var/www/sict_csic/access_sict-csic.log combined + ErrorLog /var/www/sict_csic/log/error.log + CustomLog /var/www/sict_csic/log/access.log combined WSGIProcessGroup app WSGIApplicationGroup %{GLOBAL} - Order deny,allow + # Order deny,allow Require all granted - \ No newline at end of file + + + # Habilitar caché para todas las solicitudes + CacheEnable disk / + + # Configuración de caché + + CacheRoot /var/cache/apache2/mod_cache_disk + CacheDirLevels 2 + CacheDirLength 1 + # [bytes] Tamaño máximo de archivo a almacenar en caché + CacheMaxFileSize 1000000 + # CacheMinFileSize bytes + CacheMinFileSize 1 + CacheIgnoreHeaders Set-Cookie + CacheIgnoreNoLastMod On + + + # Indica si el caché está funcionando + Header set X-Cache "HIT from Apache" + # Expiración por defecto (1 hora) + CacheDefaultExpire 3600 + # Expiración máxima (1 día) + CacheMaxExpire 86400 + CacheLastModifiedFactor 0.5 + + + + +