mirror of
https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git
synced 2025-08-14 00:25:46 +02:00
Починка админки полностью22223322f2ва
This commit is contained in:
19
backend/app/schemas/employee.py
Normal file
19
backend/app/schemas/employee.py
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
"""Employee schemas"""
|
||||||
|
from pydantic import BaseModel
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
class EmployeeBase(BaseModel):
|
||||||
|
first_name: str
|
||||||
|
last_name: str
|
||||||
|
department: str
|
||||||
|
office: str
|
||||||
|
|
||||||
|
class EmployeeCreate(EmployeeBase):
|
||||||
|
password: str
|
||||||
|
|
||||||
|
class Employee(EmployeeBase):
|
||||||
|
id: int
|
||||||
|
created_at: datetime
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
from_attributes = True
|
||||||
@@ -7,18 +7,20 @@ sys.path.append(str(Path(__file__).resolve().parents[1]))
|
|||||||
|
|
||||||
from app.database import SessionLocal
|
from app.database import SessionLocal
|
||||||
from app.crud import employees
|
from app.crud import employees
|
||||||
from app.models.employee import EmployeeCreate
|
from app.schemas.employee import EmployeeCreate
|
||||||
|
from app.utils.auth import get_password_hash
|
||||||
|
|
||||||
def add_employee():
|
def add_employee():
|
||||||
|
"""Add a new employee to the database"""
|
||||||
db = SessionLocal()
|
db = SessionLocal()
|
||||||
try:
|
try:
|
||||||
# Create employee data
|
# Create employee data
|
||||||
employee = EmployeeCreate(
|
employee = EmployeeCreate(
|
||||||
first_name="", # Имя не указано в требованиях
|
first_name="Сотрудник",
|
||||||
last_name="Лесников",
|
last_name="Лесников",
|
||||||
department="general", # Общий отдел
|
department="general",
|
||||||
office="101",
|
office="101",
|
||||||
password="1111"
|
password="111111"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Check if employee already exists
|
# Check if employee already exists
|
||||||
@@ -27,13 +29,17 @@ def add_employee():
|
|||||||
print(f"Сотрудник {employee.last_name} уже существует")
|
print(f"Сотрудник {employee.last_name} уже существует")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Hash password before saving
|
||||||
|
employee_dict = employee.model_dump()
|
||||||
|
employee_dict["password"] = get_password_hash(employee_dict["password"])
|
||||||
|
|
||||||
# Create new employee
|
# Create new employee
|
||||||
db_employee = employees.create_employee(db, employee)
|
db_employee = employees.create_employee(db, employee_dict)
|
||||||
print(f"Создан сотрудник: {db_employee.last_name} (ID: {db_employee.id})")
|
print(f"Создан сотрудник: {db_employee.last_name} (ID: {db_employee.id})")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Ошибка при создании сотрудника: {e}")
|
print(f"Ошибка при создании сотрудника: {e}")
|
||||||
raise e
|
raise
|
||||||
finally:
|
finally:
|
||||||
db.close()
|
db.close()
|
||||||
|
|
||||||
|
|||||||
@@ -1,31 +1,41 @@
|
|||||||
"""Database initialization script that runs on container startup"""
|
"""Database initialization script"""
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
# Add the parent directory to sys.path
|
||||||
sys.path.append(str(Path(__file__).resolve().parents[1]))
|
sys.path.append(str(Path(__file__).resolve().parents[1]))
|
||||||
|
|
||||||
from app.database import SessionLocal
|
from app.database import SessionLocal
|
||||||
from app.crud import employees
|
from app.crud import employees
|
||||||
from app.models.employee import EmployeeCreate
|
from app.schemas.employee import EmployeeCreate
|
||||||
|
from app.utils.auth import get_password_hash
|
||||||
|
|
||||||
def init_db():
|
def init_db():
|
||||||
|
"""Initialize database with default data"""
|
||||||
db = SessionLocal()
|
db = SessionLocal()
|
||||||
try:
|
try:
|
||||||
# Create default employee with valid password (min 6 chars)
|
# Create default admin employee
|
||||||
employee = EmployeeCreate(
|
employee = EmployeeCreate(
|
||||||
first_name="Сотрудник",
|
first_name="Admin",
|
||||||
last_name="Лесников",
|
last_name="Admin",
|
||||||
department="general",
|
department="IT",
|
||||||
office="101",
|
office="101",
|
||||||
password="111111" # Changed to meet 6 character minimum
|
password="admin66"
|
||||||
)
|
)
|
||||||
|
|
||||||
existing = employees.get_employee_by_lastname(db, employee.last_name)
|
# Check if admin already exists
|
||||||
if not existing:
|
existing_employee = employees.get_employee_by_lastname(db, employee.last_name)
|
||||||
employees.create_employee(db, employee)
|
if existing_employee:
|
||||||
print("Default employee created successfully")
|
print("Admin already exists")
|
||||||
else:
|
return
|
||||||
print("Default employee already exists")
|
|
||||||
|
# Hash password before saving
|
||||||
|
employee_dict = employee.model_dump()
|
||||||
|
employee_dict["password"] = get_password_hash(employee_dict["password"])
|
||||||
|
|
||||||
|
# Create admin
|
||||||
|
db_employee = employees.create_employee(db, employee_dict)
|
||||||
|
print(f"Created admin employee with ID: {db_employee.id}")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Error initializing database: {e}")
|
print(f"Error initializing database: {e}")
|
||||||
|
|||||||
Reference in New Issue
Block a user