@@ -281,27 +281,54 @@ def inject_user_date_format():
281281 app .register_blueprint (main )
282282
283283 with app .app_context ():
284+ # Check database write permissions before proceeding
285+ try :
286+ from sqlalchemy import text
287+ # Test database connectivity and write permissions
288+ with db .engine .connect () as conn :
289+ # Try a simple write operation to test permissions
290+ conn .execute (text ('CREATE TABLE IF NOT EXISTS permission_test (id INTEGER)' ))
291+ conn .execute (text ('DROP TABLE IF EXISTS permission_test' ))
292+ conn .commit ()
293+ print ("✅ Database write permissions verified" )
294+ except Exception as e :
295+ print (f"❌ Database permission error: { e } " )
296+ print ("🔧 Please check database file permissions:" )
297+ print (" - sudo chown -R 1000:1000 ./data" )
298+ print (" - chmod 755 ./data" )
299+ print (" - chmod 664 ./data/subscriptions.db (if exists)" )
300+ # Don't exit, continue trying to initialize
301+
284302 # Run automatic database migrations before creating tables
285303 migrate_database ()
286304
287- db .create_all ()
305+ try :
306+ db .create_all ()
307+ print ("✅ Database tables created/verified" )
308+ except Exception as e :
309+ print (f"❌ Failed to create database tables: { e } " )
310+ raise
288311
289312 # Create default admin user if no admin users exist
290- from app .models import User , UserSettings
291- admin_exists = User .query .filter_by (is_admin = True ).first ()
292- if not admin_exists :
293- default_user = User (
username = 'admin' ,
email = '[email protected] ' ,
is_admin = True )
294- default_user .set_password ('changeme' )
295- db .session .add (default_user )
296- db .session .commit ()
297-
298- # Create default settings for admin user
299- admin_settings = UserSettings (user_id = default_user .id , date_format = 'eu' )
300- db .session .add (admin_settings )
301- db .session .commit ()
302-
303- print ("Default admin user created: username='admin', password='changeme'" )
304- print ("Please change the default password immediately!" )
313+ try :
314+ from app .models import User , UserSettings
315+ admin_exists = User .query .filter_by (is_admin = True ).first ()
316+ if not admin_exists :
317+ default_user = User (
username = 'admin' ,
email = '[email protected] ' ,
is_admin = True )
318+ default_user .set_password ('changeme' )
319+ db .session .add (default_user )
320+ db .session .commit ()
321+
322+ # Create default settings for admin user
323+ admin_settings = UserSettings (user_id = default_user .id , date_format = 'eu' )
324+ db .session .add (admin_settings )
325+ db .session .commit ()
326+
327+ print ("✅ Default admin user created: username='admin', password='changeme'" )
328+ print ("⚠️ Please change the default password immediately!" )
329+ except Exception as e :
330+ print (f"❌ Failed to create default admin user: { e } " )
331+ # This is not critical, continue running
305332
306333 # Lazy scheduler + perf timer combined (Flask 3 removed before_first_request)
307334 @app .before_request
0 commit comments