feat: complete group of deals
This commit is contained in:
		@@ -9,6 +9,7 @@ from weasyprint import HTML, CSS
 | 
			
		||||
from constants import DEAL_STATUS_STR, ENV, APP_PATH
 | 
			
		||||
from generators.deal_pdf_generator.deal_data import DealTechSpecProductData, DealTechSpecData
 | 
			
		||||
from models import Deal, DealProduct, DealService as DealServiceModel, Product, DealGroup
 | 
			
		||||
from services.deal_group import DealGroupService
 | 
			
		||||
from utils.images_fetcher import fetch_images
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -90,23 +91,6 @@ class DealTechSpecPdfGenerator:
 | 
			
		||||
        )
 | 
			
		||||
        return deal
 | 
			
		||||
 | 
			
		||||
    async def _get_deals_by_group_id(self, group_id: int) -> List[Deal]:
 | 
			
		||||
        group: DealGroup | None = await self._session.scalar(
 | 
			
		||||
            select(DealGroup)
 | 
			
		||||
            .where(DealGroup.id == group_id)
 | 
			
		||||
            .options(
 | 
			
		||||
                selectinload(DealGroup.deals).selectinload(Deal.products).selectinload(DealProduct.services),
 | 
			
		||||
                selectinload(DealGroup.deals).selectinload(Deal.products)
 | 
			
		||||
                .selectinload(DealProduct.product).selectinload(Product.barcodes),
 | 
			
		||||
                selectinload(DealGroup.deals).selectinload(Deal.services).selectinload(DealServiceModel.service),
 | 
			
		||||
                selectinload(DealGroup.deals).selectinload(Deal.status_history),
 | 
			
		||||
                selectinload(DealGroup.deals).selectinload(Deal.group).selectinload(DealGroup.deals),
 | 
			
		||||
                selectinload(DealGroup.deals).joinedload(Deal.client),
 | 
			
		||||
                selectinload(DealGroup.deals).joinedload(Deal.shipping_warehouse),
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
        return group.deals if group else []
 | 
			
		||||
 | 
			
		||||
    def _set_deals_ids_header(self):
 | 
			
		||||
        self.deal_doc["deal_ids_header"] = f"ID: {self.deal.id}"
 | 
			
		||||
        if self.deal.group:
 | 
			
		||||
@@ -121,7 +105,7 @@ class DealTechSpecPdfGenerator:
 | 
			
		||||
        self._set_deals_ids_header()
 | 
			
		||||
 | 
			
		||||
        if deal.group:
 | 
			
		||||
            deals = await self._get_deals_by_group_id(deal.group.id)
 | 
			
		||||
            deals = await DealGroupService(self._session).get_deals_by_group_id(deal.group.id)
 | 
			
		||||
            for d in deals:
 | 
			
		||||
                self.deal_doc["deals"].append(d)
 | 
			
		||||
                grouped_products = await self._group_deal_products_by_products(d.products)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user