from flask import Blueprint, render_template, session, redirect, url_for, request, jsonify import sqlite3 import secrets import json from config import MAIN_DB from utils.auth_decorators import login_required dashboard_bp = Blueprint('dashboard', __name__) @dashboard_bp.route('/dashboard') @login_required def dashboard_view(): """Panel del cliente""" user_id = session['user_id'] conn = sqlite3.connect(MAIN_DB) c = conn.cursor() c.execute('SELECT email, plan FROM users WHERE id = ?', (user_id,)) user_info = c.fetchone() c.execute('SELECT id, slug, theme, status, created_at FROM sites WHERE user_id = ?', (user_id,)) sites = [{'id': r[0], 'slug': r[1], 'theme': r[2], 'status': r[3], 'created_at': r[4]} for r in c.fetchall()] c.execute('SELECT COUNT(*) FROM media WHERE user_id = ?', (user_id,)) media_count = c.fetchone()[0] conn.close() return render_template('dashboard.html', sites=sites, user_email=user_info[0] if user_info else '', user_plan=user_info[1] if user_info else 'base', media_count=media_count) @dashboard_bp.route('/dashboard/admin') @login_required def client_admin(): """Admin del cliente - gestionar media, config, etc.""" user_id = session['user_id'] conn = sqlite3.connect(MAIN_DB) c = conn.cursor() c.execute('SELECT email, plan FROM users WHERE id = ?', (user_id,)) user_info = c.fetchone() c.execute('SELECT id, slug, theme, status FROM sites WHERE user_id = ?', (user_id,)) sites = [{'id': r[0], 'slug': r[1], 'theme': r[2], 'status': r[3]} for r in c.fetchall()] conn.close() return render_template('client_admin.html', user_email=user_info[0] if user_info else '', user_plan=user_info[1] if user_info else 'base', sites=sites) @dashboard_bp.route('/dashboard/create', methods=['GET', 'POST']) @login_required def create_site(): """Crear nuevo sitio""" if request.method == 'POST': data = request.get_json() user_id = session['user_id'] slug = data.get('slug', f'site-{secrets.token_hex(4)}') theme = data.get('theme', 'default') content = json.dumps({ 'site_name': data.get('site_name', 'Mi Sitio'), 'hero_title': data.get('hero_title', 'Bienvenido'), 'colors': {'primary': '#ff4d4d', 'secondary': '#1a1a1a', 'text': '#333333'} }) conn = sqlite3.connect(MAIN_DB) c = conn.cursor() c.execute('INSERT INTO sites (user_id, slug, theme, content_json) VALUES (?, ?, ?, ?)', (user_id, slug, theme, content)) conn.commit() conn.close() return jsonify({'success': True, 'redirect': url_for('dashboard.dashboard_view')}) return render_template('create_site.html')