""" Seed script для создания тестовых пользователей Создаёт трёх пользователей с разными ролями: operator, field, admin """ import sys sys.path.append('/app') from sqlalchemy.orm import Session from passlib.context import CryptContext from database import SessionLocal from models import User import uuid pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") def get_password_hash(password: str) -> str: # Обрезаем пароль до 72 байт для bcrypt return pwd_context.hash(password[:72]) def create_test_users(): """Создание тестовых пользователей""" db = SessionLocal() try: # Проверяем, есть ли уже пользователи existing_users = db.query(User).count() if existing_users > 0: print(f"В базе уже есть {existing_users} пользователей. Пропускаем seed.") return test_users = [ { "username": "operator", "email": "operator@mchs.by", "password": "pass123", "full_name": "Оператор ЦОУ", "role": "operator" }, { "username": "field", "email": "field@mchs.by", "password": "pass123", "full_name": "Полевой работник", "role": "field" }, { "username": "admin", "email": "admin@mchs.by", "password": "pass123", "full_name": "Администратор", "role": "admin" } ] print("Создание тестовых пользователей...") for user_data in test_users: password = user_data.pop("password") hashed_password = get_password_hash(password) db_user = User( id=uuid.uuid4(), hashed_password=hashed_password, is_active=True, **user_data ) db.add(db_user) print(f" + {user_data['username']} ({user_data['role']})") db.commit() print("\nТестовые пользователи созданы!") print("\nДля входа используйте пароль: pass123") print(" operator / pass123") print(" field / pass123") print(" admin / pass123") except Exception as e: print(f"Ошибка: {e}") db.rollback() raise finally: db.close() if __name__ == "__main__": create_test_users()