diff --git a/models/client.py b/models/client.py index 6dd2df1..a3d5fbf 100644 --- a/models/client.py +++ b/models/client.py @@ -23,7 +23,7 @@ class ClientDetails(BaseModel): client_id = Column(Integer, ForeignKey('clients.id'), unique=True, nullable=False, comment='ID клиента') client = relationship('Client', back_populates='details', cascade='all, delete', uselist=False) - address = Column(String) + telegram = Column(String) phone_number = Column(String) inn = Column(String) email = Column(String) diff --git a/models/product.py b/models/product.py index ca9d2af..24ba807 100644 --- a/models/product.py +++ b/models/product.py @@ -17,7 +17,6 @@ class Product(BaseModel): client_id = Column(Integer, ForeignKey('clients.id'), nullable=False, comment='ID сделки') client = relationship('Client', back_populates='products') barcodes = relationship('ProductBarcode', back_populates='product', cascade="all, delete-orphan") - my_column = Column(Integer, sequence) class ProductBarcode(BaseModel): diff --git a/schemas/client.py b/schemas/client.py index 3832c87..5a13119 100644 --- a/schemas/client.py +++ b/schemas/client.py @@ -7,12 +7,12 @@ from schemas.base import CustomModelCamel, OkMessageSchema # region Entities class ClientDetailsSchema(CustomModelCamel): - address: str | None = None + telegram: str | None = None phone_number: str | None = None inn: str | None = None email: str | None = None - @field_validator("phone_number", "inn", "email", "address", mode="before") + @field_validator("phone_number", "inn", "email", "telegram", mode="before") def empty_string_to_none(cls, v): return '' if v is None else v diff --git a/schemas/deal.py b/schemas/deal.py index 9850666..84bb62e 100644 --- a/schemas/deal.py +++ b/schemas/deal.py @@ -83,7 +83,6 @@ class DealCreateRequest(CustomModelCamel): class DealQuickCreateRequest(CustomModelCamel): name: str client_name: str - client_address: str comment: str acceptance_date: datetime.datetime @@ -150,8 +149,8 @@ class DealSummaryReorderRequest(CustomModelCamel): deal_id: int status: int index: int - deadline: datetime.datetime - comment: str + deadline: datetime.datetime | None = None + comment: str | None = None class DealDeleteRequest(CustomModelCamel): diff --git a/services/deal.py b/services/deal.py index 911661b..35945b7 100644 --- a/services/deal.py +++ b/services/deal.py @@ -83,12 +83,14 @@ class DealService(BaseService): async def quick_create(self, request: DealQuickCreateRequest, user: User) -> DealQuickCreateResponse: client_service = ClientService(self.session) client = await client_service.get_by_name(request.client_name) + if not client: client = await client_service.create_client_raw( user, request.client_name, - ClientDetailsSchema(address=request.client_address)) - await client_service.update_details(user, client, ClientDetailsSchema(address=request.client_address)) + ClientDetailsSchema() + ) + rank = await self._get_rank_for_deal(DealStatus.CREATED) deal = Deal( name=request.name, @@ -221,8 +223,12 @@ class DealService(BaseService): is_first = request.index == 0 stmt = ( select(Deal) - .where(Deal.current_status == request.status, - Deal.id != request.deal_id) + .where( + Deal.current_status == request.status, + Deal.id != request.deal_id, + Deal.is_deleted == False, + Deal.is_completed == False + ) .order_by(Deal.lexorank) .offset(max([request.index - 2, 0])) .limit(2 if not is_first else 1) @@ -232,10 +238,6 @@ class DealService(BaseService): boundaries = query.scalars().all() top_boundary: Union[Deal, None] = boundaries[0] if not is_first else None bottom_boundary: Union[Deal, None] = boundaries[1] if len(boundaries) == 2 else None - if top_boundary: - print(top_boundary.name) - if bottom_boundary: - print(bottom_boundary.name) # working when between two elements if top_boundary and bottom_boundary: top_lexorank = lexorank.parse(top_boundary.lexorank)