From e8af9f2237bb5720a4a3b1dfd23f7e3653be18e4 Mon Sep 17 00:00:00 2001 From: AlexSserb Date: Fri, 20 Dec 2024 12:54:46 +0400 Subject: [PATCH] fix: renamed assignments table to deal_employees --- models/auth.py | 4 ++-- models/deal.py | 10 +++++----- schemas/deal.py | 4 ++-- services/deal.py | 14 +++++++------- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/models/auth.py b/models/auth.py index 1c8e89e..92ba91e 100644 --- a/models/auth.py +++ b/models/auth.py @@ -9,7 +9,7 @@ from models.work_shifts import WorkShift if TYPE_CHECKING: from models.payroll import PayRate, PaymentRecord - from models import Deal, Assignment + from models import Deal, DealEmployees role_permissions = Table( 'role_permissions', @@ -121,7 +121,7 @@ class User(BaseModel): cascade="all, delete-orphan" ) - assignments: Mapped[list['Assignment']] = relationship( + deals: Mapped[list['DealEmployees']] = relationship( back_populates='user', lazy='selectin' ) diff --git a/models/deal.py b/models/deal.py index f72068c..1d94787 100644 --- a/models/deal.py +++ b/models/deal.py @@ -108,7 +108,7 @@ class Deal(BaseModel): pallets: Mapped[list[Pallet]] = relationship(back_populates='deal', lazy='selectin') boxes: Mapped[list[Box]] = relationship(back_populates='deal', lazy='selectin') - assignments: Mapped[list['Assignment']] = relationship(back_populates='deal', lazy='selectin') + employees: Mapped[list['DealEmployees']] = relationship(back_populates='deal', lazy='selectin') class DealStatusHistory(BaseModel): @@ -130,12 +130,12 @@ class DealStatusHistory(BaseModel): comment = Column(String, nullable=False, comment='Коментарий', server_default='') -class Assignment(BaseModel): - __tablename__ = 'assignments' +class DealEmployees(BaseModel): + __tablename__ = 'deal_employees' user_id: Mapped[int] = mapped_column(ForeignKey('users.id'), primary_key=True) - user: Mapped['User'] = relationship('User', back_populates='assignments', lazy='selectin') + user: Mapped['User'] = relationship('User', back_populates='deals', lazy='selectin') deal_id: Mapped[int] = mapped_column(ForeignKey('deals.id'), primary_key=True) - deal: Mapped[Deal] = relationship('Deal', back_populates='assignments', lazy='selectin') + deal: Mapped[Deal] = relationship('Deal', back_populates='employees', lazy='selectin') created_at: Mapped[datetime] = mapped_column() diff --git a/schemas/deal.py b/schemas/deal.py index 005048e..91459a4 100644 --- a/schemas/deal.py +++ b/schemas/deal.py @@ -84,7 +84,7 @@ class DealStatusHistorySchema(BaseSchema): comment: str | None = None -class AssignmentSchema(BaseSchema): +class DealEmployeesSchema(BaseSchema): user: UserSchema created_at: datetime.datetime @@ -110,7 +110,7 @@ class DealSchema(BaseSchema): manager: Optional[UserSchema] = None pallets: List[PalletSchema] = [] boxes: List[BoxSchema] = [] - assignments: List[AssignmentSchema] = [] + employees: List[DealEmployeesSchema] = [] delivery_date: Optional[datetime.datetime] = None receiving_slot_date: Optional[datetime.datetime] = None diff --git a/services/deal.py b/services/deal.py index 08bcad1..13a11fa 100644 --- a/services/deal.py +++ b/services/deal.py @@ -339,8 +339,8 @@ class DealService(BaseService): selectinload(Deal.boxes) .selectinload(Box.product) .noload(Product.barcodes), - selectinload(Deal.assignments) - .joinedload(Assignment.user), + selectinload(Deal.employees) + .joinedload(DealEmployees.user), ) .where(Deal.id == deal_id) ) @@ -1166,22 +1166,22 @@ class DealService(BaseService): return DealRecalculatePriceResponse(ok=False, message=str(e)) async def _assign_employee(self, deal: Deal, user: User) -> tuple[bool, str]: - assigned_employee_ids = [assignment.user_id for assignment in deal.assignments] + assigned_employee_ids = [assignment.user_id for assignment in deal.employees] if user.id in assigned_employee_ids: return False, "Работник уже назначен" - assignment = Assignment(user_id=user.id, deal_id=deal.id, created_at=datetime.datetime.now()) + assignment = DealEmployees(user_id=user.id, deal_id=deal.id, created_at=datetime.datetime.now()) self.session.add(assignment) await self.session.commit() return True, "Работник успешно назначен" async def _unassign_employee(self, deal: Deal, user: User) -> tuple[bool, str]: - assigned_employee_ids = [assignment.user_id for assignment in deal.assignments] + assigned_employee_ids = [assignment.user_id for assignment in deal.employees] if user.id not in assigned_employee_ids: return False, "Работник еще не назначен" - stmt = delete(Assignment).where(and_(Assignment.user_id == user.id, Assignment.deal_id == deal.id)) + stmt = delete(DealEmployees).where(and_(DealEmployees.user_id == user.id, DealEmployees.deal_id == deal.id)) await self.session.execute(stmt) await self.session.commit() @@ -1204,7 +1204,7 @@ class DealService(BaseService): return ManageEmployeeResponse(ok=ok, message=message) async def get_available_employees_to_assign(self, deal_id: int) -> GetAvailableEmployeesToAssignResponse: - assigned_users = select(Assignment.user_id).where(Assignment.deal_id == deal_id) + assigned_users = select(DealEmployees.user_id).where(DealEmployees.deal_id == deal_id) stmt_free_employees = ( select(User)