Add UDP broadcast and Qt6 discovery functionality

- Add UDP broadcast component that sends server info every 30 seconds
- Create Qt6 discovery application for LAN server detection
- Fix Migration 012 column count mismatch by adding missing status column
- Suppress Chromium sandbox warnings when running as root
- Add PyInstaller specs for Linux and Windows executables
- Update requirements.txt with netifaces dependency
- Create comprehensive documentation and setup scripts

Features:
- Automatic server discovery on local network
- Cross-platform support (Linux/Windows)
- System tray integration
- Auto-open browser functionality
- SSL detection and support
- Standalone executable builds
parent 52f1a5b6
......@@ -658,6 +658,15 @@ class Migration_012_RemoveFixtureIdUniqueConstraint(DatabaseMigration):
"""Remove UNIQUE constraint from fixture_id column"""
try:
with db_manager.engine.connect() as conn:
# Debug: Check actual column count and names
result = conn.execute(text("PRAGMA table_info(matches)"))
old_columns = result.fetchall()
logger.info(f"Old matches table has {len(old_columns)} columns: {[col[1] for col in old_columns]}")
# Log each column with details
for col in old_columns:
logger.info(f"Column {col[1]}: {col[2]} {'PRIMARY KEY' if col[5] else ''}")
# SQLite doesn't support ALTER TABLE DROP CONSTRAINT directly
# We need to recreate the table without the UNIQUE constraint
......@@ -669,24 +678,25 @@ class Migration_012_RemoveFixtureIdUniqueConstraint(DatabaseMigration):
fighter1_township VARCHAR(255) NOT NULL,
fighter2_township VARCHAR(255) NOT NULL,
venue_kampala_township VARCHAR(255) NOT NULL,
start_time DATETIME NULL,
end_time DATETIME NULL,
result VARCHAR(255) NULL,
done BOOLEAN DEFAULT FALSE NOT NULL,
running BOOLEAN DEFAULT FALSE NOT NULL,
status VARCHAR(20) DEFAULT 'pending' NOT NULL,
fixture_active_time INTEGER NULL,
filename VARCHAR(1024) NOT NULL,
file_sha1sum VARCHAR(255) NOT NULL,
fixture_id VARCHAR(255) NOT NULL,
active_status BOOLEAN DEFAULT FALSE,
zip_filename VARCHAR(1024) NULL,
zip_sha1sum VARCHAR(255) NULL,
zip_upload_status VARCHAR(20) DEFAULT 'pending',
zip_upload_progress REAL DEFAULT 0.0,
created_by INTEGER NULL REFERENCES users(id) ON DELETE SET NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
......
......@@ -169,7 +169,13 @@ class OverlayWebView(QWebEngineView):
# Enable transparency
self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground, True)
self.setAttribute(Qt.WidgetAttribute.WA_TransparentForMouseEvents, True)
# Suppress Chromium sandbox warnings when running as root
import os
if os.geteuid() == 0: # Running as root
os.environ['QTWEBENGINE_DISABLE_SANDBOX'] = '1'
logger.info("Disabled Qt WebEngine sandbox for root user")
# Configure page settings
page = self.page()
page.setBackgroundColor(QColor(0, 0, 0, 0)) # Transparent background
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment