Files
gkachele-saas/demo/routes/public.py
2026-01-17 11:40:17 +01:00

36 lines
1.1 KiB
Python

from flask import Blueprint, render_template, send_from_directory, sqlite3
import json
import os
from config import MAIN_DB, UPLOADS_DIR
from utils.theme_engine import render_gkachele_template
public_bp = Blueprint('public', __name__)
@public_bp.route('/')
def landing():
"""Landing page"""
return render_template('landing_real.html')
@public_bp.route('/site/<slug>')
def public_site(slug):
"""Sitio público del cliente"""
import sqlite3
conn = sqlite3.connect(MAIN_DB)
c = conn.cursor()
c.execute('SELECT id, theme, content_json, status, user_id FROM sites WHERE slug = ?', (slug,))
site = c.fetchone()
conn.close()
if not site or site[3] != 'published':
return "Sitio no encontrado o no publicado", 404
try:
return render_gkachele_template(site[1], json.loads(site[2]), site[0], site[4])
except Exception as e:
return f"Error renderizando sitio: {e}", 500
@public_bp.route('/uploads/<filename>')
def serve_upload(filename):
"""Servir archivos subidos"""
return send_from_directory(UPLOADS_DIR, filename)