feat: ozon sync fix

This commit is contained in:
2024-09-03 14:38:37 +03:00
parent ba8dd0959a
commit ee74ac186a

View File

@@ -70,11 +70,12 @@ class OzonProductSynchronizer(BaseProductSynchronizer):
async def create_products(self):
self._clear()
product_ids = []
synchronized_product_ids = await self._get_synchronized_product_ids()
async for product in self.api.get_all_products():
product_ids.append(product['product_id'])
if len(product_ids) > 100:
break
product_id = product['product_id']
if product_id in synchronized_product_ids:
continue
product_ids.append(product_id)
max_products = 1000
for chunk in chunk_list(product_ids, max_products):
data = {
@@ -176,6 +177,18 @@ class OzonProductSynchronizer(BaseProductSynchronizer):
return [image]
return []
async def _get_synchronized_product_ids(self):
synchronized_products_stmt = (
select(
OzonProduct.ozon_product_id
)
.where(
OzonProduct.marketplace_id == self.marketplace.id
)
)
synchronized_products = await self.session.execute(synchronized_products_stmt)
synchronized_product_ids = synchronized_products.scalars().all()
return set(synchronized_product_ids)
class OzonController(BaseMarketplaceController):