Import Vector lab project

This commit is contained in:
root
2026-06-06 18:31:55 +00:00
commit fcc22063ed
105 changed files with 31639 additions and 0 deletions
+85
View File
@@ -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()