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

Починка админки полностью22223322f

This commit is contained in:
MoonTestUse1
2025-01-01 23:46:12 +06:00
parent ba0188d4b5
commit b2395ad252
3 changed files with 21 additions and 46 deletions

View File

@@ -1,45 +1,25 @@
"""Employee management database operations"""
"""Employee CRUD operations"""
from sqlalchemy.orm import Session
from ..models import employee as models
from ..schemas import tables
from ..utils.auth import get_password_hash
from ..models.employee import Employee
from ..utils.loggers import auth_logger
def get_employee(db: Session, employee_id: int):
"""Get employee by ID"""
return db.query(tables.Employee).filter(tables.Employee.id == employee_id).first()
return db.query(Employee).filter(Employee.id == employee_id).first()
def get_employee_by_lastname(db: Session, last_name: str):
"""Get employee by last name"""
return (
db.query(tables.Employee)
.filter(tables.Employee.last_name == last_name)
.first()
)
return db.query(Employee).filter(Employee.last_name == last_name).first()
def create_employee(db: Session, employee: models.EmployeeCreate):
def create_employee(db: Session, employee_data: dict):
"""Create new employee"""
try:
hashed_password = get_password_hash(employee.password)
db_employee = tables.Employee(
first_name=employee.first_name,
last_name=employee.last_name,
department=employee.department,
office=employee.office,
password=hashed_password,
)
db_employee = Employee(**employee_data)
db.add(db_employee)
db.commit()
db.refresh(db_employee)
auth_logger.info(
"Employee created",
extra={"employee_id": db_employee.id}
)
return db_employee
except Exception as e:
db.rollback()
auth_logger.error(f"Error creating employee: {e}", exc_info=True)
auth_logger.error(f"Error creating employee: {e}")
raise

View File

@@ -1,6 +1,7 @@
"""Employee model"""
from sqlalchemy import Column, Integer, String, DateTime
from sqlalchemy.sql import func
from sqlalchemy.orm import relationship
from ..database import Base
class Employee(Base):
@@ -12,4 +13,6 @@ class Employee(Base):
department = Column(String, nullable=False)
office = Column(String, nullable=False)
password = Column(String, nullable=False)
created_at = Column(DateTime(timezone=True), server_default=func.now())
created_at = Column(DateTime(timezone=True), server_default=func.now())
requests = relationship("Request", back_populates="employee")

View File

@@ -1,23 +1,15 @@
"""Database table schemas"""
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, Enum
from sqlalchemy.sql import func
from sqlalchemy.orm import relationship
from ..database import Base
from ..models.request import RequestStatus, RequestPriority
class Employee(Base):
__tablename__ = "employees"
id = Column(Integer, primary_key=True, index=True)
first_name = Column(String, nullable=False)
last_name = Column(String, nullable=False)
department = Column(String, nullable=False)
office = Column(String, nullable=False)
password = Column(String, nullable=False)
created_at = Column(DateTime(timezone=True), server_default=func.now())
requests = relationship("Request", back_populates="employee")
import enum
class RequestStatus(str, enum.Enum):
new = "new"
in_progress = "in_progress"
resolved = "resolved"
closed = "closed"
class Request(Base):
__tablename__ = "requests"
@@ -26,9 +18,9 @@ class Request(Base):
employee_id = Column(Integer, ForeignKey("employees.id"))
department = Column(String, nullable=False)
request_type = Column(String, nullable=False)
priority = Column(Enum(RequestPriority), nullable=False)
status = Column(Enum(RequestStatus), default=RequestStatus.NEW)
description = Column(String)
priority = Column(String, nullable=False)
description = Column(String, nullable=False)
status = Column(Enum(RequestStatus), default=RequestStatus.new)
created_at = Column(DateTime(timezone=True), server_default=func.now())
employee = relationship("Employee", back_populates="requests")