feat: address now is telegram
This commit is contained in:
		@@ -23,7 +23,7 @@ class ClientDetails(BaseModel):
 | 
				
			|||||||
    client_id = Column(Integer, ForeignKey('clients.id'), unique=True, nullable=False, comment='ID клиента')
 | 
					    client_id = Column(Integer, ForeignKey('clients.id'), unique=True, nullable=False, comment='ID клиента')
 | 
				
			||||||
    client = relationship('Client', back_populates='details', cascade='all, delete', uselist=False)
 | 
					    client = relationship('Client', back_populates='details', cascade='all, delete', uselist=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    address = Column(String)
 | 
					    telegram = Column(String)
 | 
				
			||||||
    phone_number = Column(String)
 | 
					    phone_number = Column(String)
 | 
				
			||||||
    inn = Column(String)
 | 
					    inn = Column(String)
 | 
				
			||||||
    email = Column(String)
 | 
					    email = Column(String)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,6 @@ class Product(BaseModel):
 | 
				
			|||||||
    client_id = Column(Integer, ForeignKey('clients.id'), nullable=False, comment='ID сделки')
 | 
					    client_id = Column(Integer, ForeignKey('clients.id'), nullable=False, comment='ID сделки')
 | 
				
			||||||
    client = relationship('Client', back_populates='products')
 | 
					    client = relationship('Client', back_populates='products')
 | 
				
			||||||
    barcodes = relationship('ProductBarcode', back_populates='product', cascade="all, delete-orphan")
 | 
					    barcodes = relationship('ProductBarcode', back_populates='product', cascade="all, delete-orphan")
 | 
				
			||||||
    my_column = Column(Integer, sequence)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ProductBarcode(BaseModel):
 | 
					class ProductBarcode(BaseModel):
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,12 +7,12 @@ from schemas.base import CustomModelCamel, OkMessageSchema
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# region Entities
 | 
					# region Entities
 | 
				
			||||||
class ClientDetailsSchema(CustomModelCamel):
 | 
					class ClientDetailsSchema(CustomModelCamel):
 | 
				
			||||||
    address: str | None = None
 | 
					    telegram: str | None = None
 | 
				
			||||||
    phone_number: str | None = None
 | 
					    phone_number: str | None = None
 | 
				
			||||||
    inn: str | None = None
 | 
					    inn: str | None = None
 | 
				
			||||||
    email: 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):
 | 
					    def empty_string_to_none(cls, v):
 | 
				
			||||||
        return '' if v is None else v
 | 
					        return '' if v is None else v
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -83,7 +83,6 @@ class DealCreateRequest(CustomModelCamel):
 | 
				
			|||||||
class DealQuickCreateRequest(CustomModelCamel):
 | 
					class DealQuickCreateRequest(CustomModelCamel):
 | 
				
			||||||
    name: str
 | 
					    name: str
 | 
				
			||||||
    client_name: str
 | 
					    client_name: str
 | 
				
			||||||
    client_address: str
 | 
					 | 
				
			||||||
    comment: str
 | 
					    comment: str
 | 
				
			||||||
    acceptance_date: datetime.datetime
 | 
					    acceptance_date: datetime.datetime
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -150,8 +149,8 @@ class DealSummaryReorderRequest(CustomModelCamel):
 | 
				
			|||||||
    deal_id: int
 | 
					    deal_id: int
 | 
				
			||||||
    status: int
 | 
					    status: int
 | 
				
			||||||
    index: int
 | 
					    index: int
 | 
				
			||||||
    deadline: datetime.datetime
 | 
					    deadline: datetime.datetime | None = None
 | 
				
			||||||
    comment: str
 | 
					    comment: str | None = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class DealDeleteRequest(CustomModelCamel):
 | 
					class DealDeleteRequest(CustomModelCamel):
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -83,12 +83,14 @@ class DealService(BaseService):
 | 
				
			|||||||
    async def quick_create(self, request: DealQuickCreateRequest, user: User) -> DealQuickCreateResponse:
 | 
					    async def quick_create(self, request: DealQuickCreateRequest, user: User) -> DealQuickCreateResponse:
 | 
				
			||||||
        client_service = ClientService(self.session)
 | 
					        client_service = ClientService(self.session)
 | 
				
			||||||
        client = await client_service.get_by_name(request.client_name)
 | 
					        client = await client_service.get_by_name(request.client_name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if not client:
 | 
					        if not client:
 | 
				
			||||||
            client = await client_service.create_client_raw(
 | 
					            client = await client_service.create_client_raw(
 | 
				
			||||||
                user,
 | 
					                user,
 | 
				
			||||||
                request.client_name,
 | 
					                request.client_name,
 | 
				
			||||||
                ClientDetailsSchema(address=request.client_address))
 | 
					                ClientDetailsSchema()
 | 
				
			||||||
        await client_service.update_details(user, client, ClientDetailsSchema(address=request.client_address))
 | 
					            )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        rank = await self._get_rank_for_deal(DealStatus.CREATED)
 | 
					        rank = await self._get_rank_for_deal(DealStatus.CREATED)
 | 
				
			||||||
        deal = Deal(
 | 
					        deal = Deal(
 | 
				
			||||||
            name=request.name,
 | 
					            name=request.name,
 | 
				
			||||||
@@ -221,8 +223,12 @@ class DealService(BaseService):
 | 
				
			|||||||
        is_first = request.index == 0
 | 
					        is_first = request.index == 0
 | 
				
			||||||
        stmt = (
 | 
					        stmt = (
 | 
				
			||||||
            select(Deal)
 | 
					            select(Deal)
 | 
				
			||||||
            .where(Deal.current_status == request.status,
 | 
					            .where(
 | 
				
			||||||
                   Deal.id != request.deal_id)
 | 
					                Deal.current_status == request.status,
 | 
				
			||||||
 | 
					                Deal.id != request.deal_id,
 | 
				
			||||||
 | 
					                Deal.is_deleted == False,
 | 
				
			||||||
 | 
					                Deal.is_completed == False
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
            .order_by(Deal.lexorank)
 | 
					            .order_by(Deal.lexorank)
 | 
				
			||||||
            .offset(max([request.index - 2, 0]))
 | 
					            .offset(max([request.index - 2, 0]))
 | 
				
			||||||
            .limit(2 if not is_first else 1)
 | 
					            .limit(2 if not is_first else 1)
 | 
				
			||||||
@@ -232,10 +238,6 @@ class DealService(BaseService):
 | 
				
			|||||||
        boundaries = query.scalars().all()
 | 
					        boundaries = query.scalars().all()
 | 
				
			||||||
        top_boundary: Union[Deal, None] = boundaries[0] if not is_first else None
 | 
					        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
 | 
					        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
 | 
					        # working when between two elements
 | 
				
			||||||
        if top_boundary and bottom_boundary:
 | 
					        if top_boundary and bottom_boundary:
 | 
				
			||||||
            top_lexorank = lexorank.parse(top_boundary.lexorank)
 | 
					            top_lexorank = lexorank.parse(top_boundary.lexorank)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user