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

Testing workable

This commit is contained in:
MoonTestUse1
2025-02-07 00:43:33 +06:00
parent 8543d7fe88
commit 6db95a5eb0
37 changed files with 911 additions and 454 deletions

View File

@@ -1,6 +1,5 @@
"""Models package"""
"""Models initialization"""
from .employee import Employee
from .request import Request
from .token import Token
__all__ = ["Employee", "Request", "Token"]
__all__ = ['Employee', 'Request']

View File

@@ -1,4 +1,7 @@
"""Base model class"""
"""Base models and imports"""
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, Enum
from sqlalchemy.sql import func
from sqlalchemy.orm import relationship
Base = declarative_base()

View File

@@ -1,22 +1,20 @@
"""Employee model"""
from sqlalchemy import Column, Integer, String, Boolean
from sqlalchemy import Column, Integer, String, DateTime, Boolean
from sqlalchemy.sql import func
from sqlalchemy.orm import relationship
from ..db.base_class import Base
from app.db.base_class import Base
class Employee(Base):
"""Employee model"""
__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)
email = Column(String, unique=True, index=True, nullable=False)
full_name = Column(String, nullable=False)
hashed_password = Column(String, nullable=False)
is_active = Column(Boolean, default=True)
is_admin = Column(Boolean, default=False)
created_at = Column(DateTime(timezone=True), server_default=func.now())
department = Column(String, nullable=True)
# Отношения
requests = relationship("Request", back_populates="employee", cascade="all, delete-orphan")
tokens = relationship("Token", back_populates="employee", cascade="all, delete-orphan")
# Определяем отношение к Request
requests = relationship("Request", back_populates="employee", cascade="all, delete-orphan")

View File

@@ -1,41 +1,32 @@
"""Request model"""
from enum import Enum
from sqlalchemy import Column, Integer, String, Enum as SQLEnum, ForeignKey, DateTime
from sqlalchemy import Column, Integer, String, ForeignKey, DateTime
from sqlalchemy.sql import func
from sqlalchemy.orm import relationship
from datetime import datetime
from ..database import Base
from app.db.base_class import Base
class RequestStatus(str, Enum):
"""Request status enum"""
NEW = "new"
IN_PROGRESS = "in_progress"
COMPLETED = "completed"
REJECTED = "rejected"
class RequestPriority(str, Enum):
"""Request priority enum"""
LOW = "low"
MEDIUM = "medium"
HIGH = "high"
class RequestType(str, Enum):
"""Request type enum"""
VACATION = "vacation"
SICK_LEAVE = "sick_leave"
EQUIPMENT = "equipment"
OTHER = "other"
class Request(Base):
"""Request model"""
__tablename__ = "requests"
id = Column(Integer, primary_key=True, index=True)
request_type = Column(SQLEnum(RequestType), nullable=False)
description = Column(String, nullable=False)
priority = Column(SQLEnum(RequestPriority), nullable=False, default=RequestPriority.MEDIUM)
status = Column(SQLEnum(RequestStatus), nullable=False, default=RequestStatus.NEW)
created_at = Column(DateTime, nullable=False, default=datetime.utcnow)
employee_id = Column(Integer, ForeignKey("employees.id"), nullable=False)
department = Column(String, index=True)
request_type = Column(String, index=True)
description = Column(String)
priority = Column(String)
status = Column(String, default=RequestStatus.NEW)
employee_id = Column(Integer, ForeignKey("employees.id"))
created_at = Column(DateTime(timezone=True), server_default=func.now())
# Определяем отношение к Employee
employee = relationship("Employee", back_populates="requests")

View File

@@ -1,16 +1,12 @@
"""Token model"""
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship
from ..db.base_class import Base
from sqlalchemy import Column, Integer, String, DateTime
from sqlalchemy.sql import func
from app.db.base_class import Base
class Token(Base):
"""Token model"""
__tablename__ = "tokens"
id = Column(Integer, primary_key=True, index=True)
token = Column(String, unique=True, index=True, nullable=False)
employee_id = Column(Integer, ForeignKey("employees.id", ondelete="CASCADE"), nullable=False)
# Отношения
employee = relationship("Employee", back_populates="tokens")
token = Column(String, unique=True, index=True)
user_id = Column(Integer, index=True) # ID сотрудника из таблицы employees
created_at = Column(DateTime(timezone=True), server_default=func.now())