/
FlysAt
/
DataFoundry
Обзор
Документация
Войти
/
FlysAt
/
DataFoundry
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/src/models/assignment.py
68 строк
2 KB
AlexanderShmygol
fixed fullname param
16 май 2026, 17:24
16 май 2026, 17:24
aeff8a6
Код
Авторство
О чём код?
import enum from datetime import datetime from typing import Callable, Any from decimal import Decimal from sqlalchemy import DateTime, ForeignKey, Integer, Numeric, Text, UniqueConstraint from sqlalchemy import Enum as SqlEnum from sqlalchemy.orm import Mapped, mapped_column, relationship from sqlalchemy.sql import func from src.models.base import Base def enum_values(enum_cls: type[enum.Enum]) -> list[Callable[[], Any]]: return [item.value for item in enum_cls] class AssignmentStatus(str, enum.Enum): PENDING = "pending" ACCEPTED = "accepted" REJECTED = "rejected" # отклонение заявки CANCELLED = "cancelled" class OrderAssignment(Base): id: Mapped[int] = mapped_column(primary_key=True, index=True) order_id: Mapped[int] = mapped_column( ForeignKey("order.id", ondelete="CASCADE"), nullable=False, index=True, ) executor_id: Mapped[int] = mapped_column( ForeignKey("user.id", ondelete="CASCADE"), nullable=False, index=True, ) proposal: Mapped[str] = mapped_column(Text, nullable=False) #предложение сообщением price: Mapped[Decimal] = mapped_column(Numeric(12, 2), nullable=False) execution_days: Mapped[int] = mapped_column(Integer, nullable=False) status: Mapped[AssignmentStatus] = mapped_column( SqlEnum(AssignmentStatus, name="assignment_status_enum", values_callable=lambda obj: [e.value for e in obj],), nullable=False, default=AssignmentStatus.PENDING, server_default=AssignmentStatus.PENDING.value, ) created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), server_default=func.now(), nullable=False, ) order = relationship("Order", back_populates="assignments") executor = relationship( "User", foreign_keys=[executor_id], back_populates="assignments_as_executor", ) @property def executor_full_name(self) -> str | None: return self.executor.full_name if self.executor else None