ProyectoTransporte/launcher.py

51 lines
1.6 KiB
Python

import os
import sys
import threading
import subprocess
import time
from waitress import serve
from django.core.wsgi import get_wsgi_application
# Configuración básica de rutas
if getattr(sys, 'frozen', False):
BASE_DIR = os.path.dirname(sys.executable)
APP_DATA_DIR = os.path.join(os.environ['APPDATA'], 'Intendencia')
else:
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
APP_DATA_DIR = os.path.join(BASE_DIR, 'data')
os.makedirs(APP_DATA_DIR, exist_ok=True)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'sistema.settings')
def start_server():
"""Inicia el servidor WSGI con Waitress"""
application = get_wsgi_application()
serve(application, host='127.0.0.1', port=8000, threads=4)
if __name__ == '__main__':
# Iniciar el servidor en un hilo
server_thread = threading.Thread(target=start_server, daemon=True)
server_thread.start()
# Esperar un momento para asegurarse de que el servidor esté listo
time.sleep(1)
# Ruta por defecto de Chrome en Windows (ajústala si usas otro sistema o instalación personalizada)
chrome_path = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
url = "http://127.0.0.1:8000"
# Abrir Chrome en modo aplicación
try:
subprocess.Popen([chrome_path, f"--app={url}"])
except FileNotFoundError:
print("No se encontró Google Chrome. Abriendo el navegador predeterminado...")
import webbrowser
webbrowser.open(url)
# Mantener la aplicación viva
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
print("Cerrando la aplicación...")
sys.exit(0)