fix: renamed assignments table to deal_employees
This commit is contained in:
@@ -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'
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user