1
0
mirror of https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git synced 2025-08-14 00:25:46 +02:00

чиним билд116

This commit is contained in:
MoonTestUse1
2025-01-02 01:22:53 +06:00
parent 05a92e0414
commit caf958dae8
4 changed files with 60 additions and 75 deletions

View File

@@ -1,48 +1,39 @@
"""Employee routes"""
"""Employees router"""
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from typing import List
from ..database import get_db
from ..crud import employees as employees_crud
from ..schemas.employee import EmployeeCreate, Employee
from ..utils.auth import get_password_hash
from ..models.employee import Employee
from ..schemas.employee import EmployeeCreate, EmployeeResponse
from passlib.context import CryptContext
router = APIRouter()
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
@router.get("/employees/", response_model=List[Employee])
@router.get("/", response_model=List[EmployeeResponse])
def get_employees(db: Session = Depends(get_db)):
"""Get all employees"""
try:
return employees_crud.get_employees(db)
except Exception as e:
raise HTTPException(
status_code=500,
detail=f"Ошибка при получении списка сотрудников: {str(e)}"
)
employees = db.query(Employee).all()
return employees
@router.post("/employees/", response_model=Employee)
@router.post("/", response_model=EmployeeResponse)
def create_employee(employee: EmployeeCreate, db: Session = Depends(get_db)):
"""Create new employee"""
try:
# Check if employee already exists
db_employee = employees_crud.get_employee_by_lastname(db, employee.last_name)
if db_employee:
raise HTTPException(
status_code=400,
detail="Сотрудник с такой фамилией уже существует"
)
# Hash password
employee_dict = employee.model_dump()
employee_dict["password"] = get_password_hash(employee_dict["password"])
# Create employee
return employees_crud.create_employee(db=db, employee_data=employee_dict)
except HTTPException:
raise
except Exception as e:
raise HTTPException(
status_code=500,
detail=f"Ошибка при создании сотрудника: {str(e)}"
)
# Хешируем пароль
hashed_password = pwd_context.hash(employee.password)
# Создаем нового сотрудника
db_employee = Employee(
first_name=employee.first_name,
last_name=employee.last_name,
department=employee.department,
office=employee.office,
password=hashed_password
)
# Сохраняем в базу данных
db.add(db_employee)
db.commit()
db.refresh(db_employee)
return db_employee