82 lines
2.2 KiB
Python
82 lines
2.2 KiB
Python
"""
|
|
GKACHELE SaaS PageBuilder - Sistema Modular
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
from flask import Flask, jsonify
|
|
|
|
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
|
PROJECT_ROOT = os.path.dirname(BASE_DIR)
|
|
if PROJECT_ROOT not in sys.path:
|
|
sys.path.insert(0, PROJECT_ROOT)
|
|
|
|
try:
|
|
from .config import SECRET_KEY, PORT
|
|
from .database import init_db
|
|
from .routes.auth import auth_bp
|
|
from .routes.dashboard import dashboard_bp
|
|
from .routes.customizer import customizer_bp
|
|
from .routes.admin import admin_bp
|
|
from .routes.public import public_bp
|
|
except ImportError:
|
|
from config import SECRET_KEY, PORT
|
|
from database import init_db
|
|
from routes.auth import auth_bp
|
|
from routes.dashboard import dashboard_bp
|
|
from routes.customizer import customizer_bp
|
|
from routes.admin import admin_bp
|
|
from routes.public import public_bp
|
|
|
|
try:
|
|
from elementor.routes import elementor_bp
|
|
except ImportError:
|
|
elementor_bp = None
|
|
|
|
app = Flask(__name__, template_folder='templates', static_folder='static')
|
|
app.secret_key = SECRET_KEY
|
|
app.config['SESSION_COOKIE_SAMESITE'] = 'Lax'
|
|
|
|
# Inicializar Base de Datos
|
|
init_db()
|
|
|
|
# Registrar Blueprints
|
|
app.register_blueprint(auth_bp)
|
|
app.register_blueprint(dashboard_bp)
|
|
app.register_blueprint(customizer_bp)
|
|
app.register_blueprint(admin_bp)
|
|
app.register_blueprint(public_bp)
|
|
if elementor_bp is not None and 'elementor' not in app.blueprints:
|
|
app.register_blueprint(elementor_bp)
|
|
|
|
# Manejadores de Errores Globales
|
|
@app.errorhandler(500)
|
|
def handle_500(e):
|
|
response = jsonify({'success': False, 'error': 'Error interno del servidor'})
|
|
response.status_code = 500
|
|
return response
|
|
|
|
|
|
@app.errorhandler(404)
|
|
def handle_404(e):
|
|
return jsonify({'success': False, 'error': 'No encontrado'}), 404
|
|
|
|
|
|
@app.errorhandler(Exception)
|
|
def handle_exception(e):
|
|
print(f"ERROR: EXCEPCION: {e}")
|
|
return jsonify({'success': False, 'error': str(e)}), 500
|
|
|
|
|
|
# Middleware
|
|
@app.after_request
|
|
def add_header(response):
|
|
response.headers.pop('X-Frame-Options', None)
|
|
response.headers['Content-Security-Policy'] = "frame-ancestors *;"
|
|
return response
|
|
|
|
|
|
if __name__ == '__main__':
|
|
print(f"GKACHELE SaaS Modular iniciado en puerto {PORT}")
|
|
app.run(debug=True, host='0.0.0.0', port=PORT)
|