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

View File

@@ -1,24 +1,35 @@
"""Request routes"""
"""Requests router"""
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from typing import List
from ..database import get_db
from ..crud import requests as requests_crud
from ..schemas.request import RequestCreate, Request, RequestWithEmployee
from ..models.request import RequestStatus
from ..models.request import Request, RequestStatus, RequestPriority
from ..schemas.request import RequestCreate, RequestResponse
router = APIRouter()
@router.post("/requests/", response_model=Request)
@router.get("/", response_model=List[RequestResponse])
def get_requests(db: Session = Depends(get_db)):
"""Get all requests"""
requests = db.query(Request).all()
return requests
@router.post("/", response_model=RequestResponse)
def create_request(request: RequestCreate, db: Session = Depends(get_db)):
"""Create new request"""
return requests_crud.create_request(db=db, request=request)
@router.get("/requests/{request_id}", response_model=RequestWithEmployee)
def get_request(request_id: int, db: Session = Depends(get_db)):
"""Get request by ID"""
request = requests_crud.get_request_details(db, request_id)
if request is None:
raise HTTPException(status_code=404, detail="Request not found")
return request
# Создаем новую заявку
db_request = Request(
employee_id=request.employee_id,
department=request.department,
request_type=request.request_type,
priority=request.priority,
description=request.description,
status=RequestStatus.NEW
)
# Сохраняем в базу данных
db.add(db_request)
db.commit()
db.refresh(db_request)
return db_request

View File

@@ -1,6 +1,7 @@
"""Employee schemas"""
from pydantic import BaseModel
from datetime import datetime
from typing import Optional
class EmployeeBase(BaseModel):
first_name: str
@@ -11,7 +12,7 @@ class EmployeeBase(BaseModel):
class EmployeeCreate(EmployeeBase):
password: str
class Employee(EmployeeBase):
class EmployeeResponse(EmployeeBase):
id: int
created_at: datetime

View File

@@ -1,41 +1,23 @@
"""Request schemas"""
from pydantic import BaseModel
from datetime import datetime
from enum import Enum
class RequestStatus(str, Enum):
NEW = "new"
IN_PROGRESS = "in_progress"
RESOLVED = "resolved"
CLOSED = "closed"
class RequestPriority(str, Enum):
LOW = "low"
MEDIUM = "medium"
HIGH = "high"
CRITICAL = "critical"
from typing import Optional
from ..models.request import RequestStatus, RequestPriority
class RequestBase(BaseModel):
employee_id: int
department: str
request_type: str
priority: RequestPriority
description: str
class RequestCreate(RequestBase):
employee_id: int
pass
class Request(RequestBase):
class RequestResponse(RequestBase):
id: int
status: RequestStatus
created_at: datetime
employee_id: int
class Config:
from_attributes = True
class RequestWithEmployee(Request):
employee_last_name: str
employee_first_name: str
class Config:
from_attributes = True