fix: renamed assignments table to deal_employees

This commit is contained in:
2024-12-20 12:54:46 +04:00
parent c65ca39d08
commit e8af9f2237
4 changed files with 16 additions and 16 deletions

View File

@@ -9,7 +9,7 @@ from models.work_shifts import WorkShift
if TYPE_CHECKING: if TYPE_CHECKING:
from models.payroll import PayRate, PaymentRecord from models.payroll import PayRate, PaymentRecord
from models import Deal, Assignment from models import Deal, DealEmployees
role_permissions = Table( role_permissions = Table(
'role_permissions', 'role_permissions',
@@ -121,7 +121,7 @@ class User(BaseModel):
cascade="all, delete-orphan" cascade="all, delete-orphan"
) )
assignments: Mapped[list['Assignment']] = relationship( deals: Mapped[list['DealEmployees']] = relationship(
back_populates='user', back_populates='user',
lazy='selectin' lazy='selectin'
) )

View File

@@ -108,7 +108,7 @@ class Deal(BaseModel):
pallets: Mapped[list[Pallet]] = relationship(back_populates='deal', lazy='selectin') pallets: Mapped[list[Pallet]] = relationship(back_populates='deal', lazy='selectin')
boxes: Mapped[list[Box]] = 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): class DealStatusHistory(BaseModel):
@@ -130,12 +130,12 @@ class DealStatusHistory(BaseModel):
comment = Column(String, nullable=False, comment='Коментарий', server_default='') comment = Column(String, nullable=False, comment='Коментарий', server_default='')
class Assignment(BaseModel): class DealEmployees(BaseModel):
__tablename__ = 'assignments' __tablename__ = 'deal_employees'
user_id: Mapped[int] = mapped_column(ForeignKey('users.id'), primary_key=True) 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_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() created_at: Mapped[datetime] = mapped_column()

View File

@@ -84,7 +84,7 @@ class DealStatusHistorySchema(BaseSchema):
comment: str | None = None comment: str | None = None
class AssignmentSchema(BaseSchema): class DealEmployeesSchema(BaseSchema):
user: UserSchema user: UserSchema
created_at: datetime.datetime created_at: datetime.datetime
@@ -110,7 +110,7 @@ class DealSchema(BaseSchema):
manager: Optional[UserSchema] = None manager: Optional[UserSchema] = None
pallets: List[PalletSchema] = [] pallets: List[PalletSchema] = []
boxes: List[BoxSchema] = [] boxes: List[BoxSchema] = []
assignments: List[AssignmentSchema] = [] employees: List[DealEmployeesSchema] = []
delivery_date: Optional[datetime.datetime] = None delivery_date: Optional[datetime.datetime] = None
receiving_slot_date: Optional[datetime.datetime] = None receiving_slot_date: Optional[datetime.datetime] = None

View File

@@ -339,8 +339,8 @@ class DealService(BaseService):
selectinload(Deal.boxes) selectinload(Deal.boxes)
.selectinload(Box.product) .selectinload(Box.product)
.noload(Product.barcodes), .noload(Product.barcodes),
selectinload(Deal.assignments) selectinload(Deal.employees)
.joinedload(Assignment.user), .joinedload(DealEmployees.user),
) )
.where(Deal.id == deal_id) .where(Deal.id == deal_id)
) )
@@ -1166,22 +1166,22 @@ class DealService(BaseService):
return DealRecalculatePriceResponse(ok=False, message=str(e)) return DealRecalculatePriceResponse(ok=False, message=str(e))
async def _assign_employee(self, deal: Deal, user: User) -> tuple[bool, str]: 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: if user.id in assigned_employee_ids:
return False, "Работник уже назначен" 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) self.session.add(assignment)
await self.session.commit() await self.session.commit()
return True, "Работник успешно назначен" return True, "Работник успешно назначен"
async def _unassign_employee(self, deal: Deal, user: User) -> tuple[bool, str]: 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: if user.id not in assigned_employee_ids:
return False, "Работник еще не назначен" 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.execute(stmt)
await self.session.commit() await self.session.commit()
@@ -1204,7 +1204,7 @@ class DealService(BaseService):
return ManageEmployeeResponse(ok=ok, message=message) return ManageEmployeeResponse(ok=ok, message=message)
async def get_available_employees_to_assign(self, deal_id: int) -> GetAvailableEmployeesToAssignResponse: 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 = ( stmt_free_employees = (
select(User) select(User)