Spaces:
Runtime error
Runtime error
File size: 2,359 Bytes
9d9d2a1 c6edf1b 9d9d2a1 c6edf1b 9d9d2a1 c6edf1b 9d9d2a1 c6edf1b 9d9d2a1 c6edf1b 9d9d2a1 77c1453 9d9d2a1 c6edf1b 9d9d2a1 c6edf1b 9d9d2a1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | import os
import gradio as gr
from src.db.connection import resolve_db_path, get_conn
from src.db.schema import init_schema
from src.db.seed import seed_if_empty
from src.services.scheduler_service import auto_close_if_needed
from src.ui.login_ui import render_login
from src.ui.rooms_ui import render_rooms_tab
from src.ui.reservations_ui import render_reservations_tab
from src.ui.payments_ui import render_payments_tab
from src.ui.income_expense_ui import render_income_expense_tab
from src.ui.closing_ui import render_closing_tab
from src.ui.admin_ui import render_admin_tab
def bootstrap():
db_path, persistent = resolve_db_path()
conn = get_conn(db_path)
try:
init_schema(conn)
seed_if_empty(conn)
finally:
conn.close()
auto_close_if_needed(
db_path=db_path,
actor="system",
note="Auto-close on startup",
)
return db_path, persistent
DB_PATH, IS_PERSISTENT = bootstrap()
with gr.Blocks(title="Venus Hotel Front Desk") as demo:
gr.Markdown("# 🏨 Venus Hotel Front Desk")
if not IS_PERSISTENT:
gr.Markdown("⚠️ Persistent storage is NOT enabled.")
auth_state = gr.State(None)
selected_room_state = gr.State(None)
header_user = gr.Markdown("🔒 Not logged in")
def update_header(auth):
if not auth:
return "🔒 Not logged in"
return f"👤 Logged in as **{auth['username']}** ({auth['role']})"
render_login(DB_PATH, auth_state)
auth_state.change(
update_header,
inputs=[auth_state],
outputs=[header_user],
)
with gr.Tabs():
with gr.Tab("Rooms"):
render_rooms_tab(DB_PATH, auth_state, selected_room_state)
with gr.Tab("Reservations"):
render_reservations_tab(DB_PATH, auth_state)
with gr.Tab("Payments"):
render_payments_tab(DB_PATH, auth_state)
with gr.Tab("Income & Expenses"):
render_income_expense_tab(DB_PATH, auth_state)
with gr.Tab("Daily Closing"):
render_closing_tab(DB_PATH, auth_state)
with gr.Tab("Admin"):
render_admin_tab(DB_PATH, auth_state)
if __name__ == "__main__":
demo.queue(default_concurrency_limit=16).launch(
server_name="0.0.0.0",
server_port=int(os.environ.get("PORT", 7860)),
)
|