Import Vector lab project
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
"""
|
||||
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()
|
||||
Reference in New Issue
Block a user