115 lines
4.2 KiB
Python
115 lines
4.2 KiB
Python
from app import create_app, db
|
|
from app.models.models import User
|
|
import sys
|
|
|
|
def seed_sample_users():
|
|
"""Create sample users for testing login with correct roles"""
|
|
app = create_app()
|
|
|
|
with app.app_context():
|
|
try:
|
|
# Sample users with correct role names (must match database roles exactly)
|
|
sample_users = [
|
|
{
|
|
'username': 'Super Admin',
|
|
'email': 'superadmin@vending.com',
|
|
'password': 'admin123',
|
|
'role': 'SuperAdmin', # MUST MATCH DATABASE EXACTLY
|
|
'contact': '+1234567890'
|
|
},
|
|
{
|
|
'username': 'Management User',
|
|
'email': 'management@vending.com',
|
|
'password': 'management123',
|
|
'role': 'Management',
|
|
'contact': '+1234567891'
|
|
},
|
|
{
|
|
'username': 'Admin User',
|
|
'email': 'admin@vending.com',
|
|
'password': 'admin123',
|
|
'role': 'Admin',
|
|
'contact': '+1234567892'
|
|
},
|
|
{
|
|
'username': 'Client User',
|
|
'email': 'client@vending.com',
|
|
'password': 'client123',
|
|
'role': 'Client',
|
|
'contact': '+1234567893'
|
|
},
|
|
{
|
|
'username': 'Refiller User',
|
|
'email': 'refiller@vending.com',
|
|
'password': 'refiller123',
|
|
'role': 'Refiller',
|
|
'contact': '+1234567894'
|
|
},
|
|
{
|
|
'username': 'Servicer User',
|
|
'email': 'servicer@vending.com',
|
|
'password': 'servicer123',
|
|
'role': 'Servicer',
|
|
'contact': '+1234567895'
|
|
}
|
|
]
|
|
|
|
print("=" * 70)
|
|
print("SEEDING SAMPLE USERS")
|
|
print("=" * 70)
|
|
|
|
created_count = 0
|
|
|
|
for user_data in sample_users:
|
|
# Check if user already exists
|
|
existing_user = User.query.filter_by(email=user_data['email']).first()
|
|
if existing_user:
|
|
print(f"⚠️ User {user_data['email']} already exists - skipping")
|
|
continue
|
|
|
|
# Create new user
|
|
new_user = User(
|
|
user_id=User.generate_user_id(user_data['username'], user_data['email']),
|
|
username=user_data['username'],
|
|
email=user_data['email'],
|
|
contact=user_data['contact'],
|
|
roles=user_data['role'], # CORRECT ROLE NAME
|
|
user_status='active'
|
|
)
|
|
|
|
# Set password
|
|
new_user.set_password(user_data['password'])
|
|
|
|
# Add to database
|
|
db.session.add(new_user)
|
|
created_count += 1
|
|
|
|
print(f"✓ User: {user_data['username']} ({user_data['role']})")
|
|
|
|
# Commit all changes
|
|
db.session.commit()
|
|
|
|
print("\n" + "=" * 70)
|
|
print(f"✓ Successfully created {created_count} sample user(s)")
|
|
print("=" * 70)
|
|
|
|
# Display all created users
|
|
print("\nCREATED USERS - USE THESE TO LOGIN:")
|
|
print("=" * 70)
|
|
all_users = User.query.all()
|
|
for user in all_users:
|
|
print(f"\nUsername: {user.username}")
|
|
print(f"Email: {user.email}")
|
|
print(f"Role: {user.roles}")
|
|
print(f"Status: {user.user_status}")
|
|
print("-" * 70)
|
|
|
|
except Exception as e:
|
|
db.session.rollback()
|
|
print(f"\n❌ Error creating sample users: {str(e)}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
sys.exit(1)
|
|
|
|
if __name__ == '__main__':
|
|
seed_sample_users() |