From 7ec30274106308558f8ea3fa134c2a980c50d236 Mon Sep 17 00:00:00 2001 From: Kobe Date: Mon, 23 Jun 2025 09:46:21 +0200 Subject: [PATCH] Update entrypoint.sh --- entrypoint.sh | 48 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index cac7f06..1c64f6d 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -71,8 +71,25 @@ with app.app_context(): # Create admin user if it doesn't exist print('Creating admin user...') try: - admin = User.query.filter_by(email='administrator@docupulse.com').first() - if not admin: + # Check for admin user by both username and email to avoid constraint violations + admin_by_username = User.query.filter_by(username='administrator').first() + admin_by_email = User.query.filter_by(email='administrator@docupulse.com').first() + + if admin_by_username and admin_by_email and admin_by_username.id == admin_by_email.id: + print('Admin user already exists (found by both username and email).') + print('Admin credentials:') + print('Email: administrator@docupulse.com') + print('Password: changeme') + elif admin_by_username or admin_by_email: + print('WARNING: Found partial admin user data:') + if admin_by_username: + print(f' - Found user with username "administrator" (ID: {admin_by_username.id})') + if admin_by_email: + print(f' - Found user with email "administrator@docupulse.com" (ID: {admin_by_email.id})') + print('Admin credentials:') + print('Email: administrator@docupulse.com') + print('Password: changeme') + else: print('Admin user not found, creating new admin user...') admin = User( username='administrator', @@ -93,15 +110,26 @@ with app.app_context(): print('Admin credentials:') print('Email: administrator@docupulse.com') print('Password: changeme') - except Exception as e: + except Exception as commit_error: db.session.rollback() - log_error('Failed to commit admin user creation', e) - raise - else: - print('Admin user already exists.') - print('Admin credentials:') - print('Email: administrator@docupulse.com') - print('Password: changeme') + if 'duplicate key value violates unique constraint' in str(commit_error): + print('WARNING: Admin user creation failed due to duplicate key constraint.') + print('This might indicate a race condition or the user was created by another process.') + print('Checking for existing admin user again...') + # Check again after the failed commit + admin_by_username = User.query.filter_by(username='administrator').first() + admin_by_email = User.query.filter_by(email='administrator@docupulse.com').first() + if admin_by_username or admin_by_email: + print('Admin user now exists (likely created by another process).') + print('Admin credentials:') + print('Email: administrator@docupulse.com') + print('Password: changeme') + else: + log_error('Admin user creation failed and user still not found', commit_error) + raise + else: + log_error('Failed to commit admin user creation', commit_error) + raise except Exception as e: log_error('Error during admin user creation/check', e) raise