def get_recommended(self): recommended = self.request.api.products.get_recommended(limit=self.top_limit) for product in recommended: product_obj = Product(raw=product) product['name'] = product_obj.get_short_name() product['images'] = product_obj.images product['url'] = product_obj.get_absolute_url() return recommended
def get_promotional(self): promotional = self.request.api.products.get_promotional(limit=self.top_limit) for product in promotional: product_obj = Product(raw=product) product['name'] = product_obj.get_short_name() product['images'] = product_obj.images product['url'] = product_obj.get_absolute_url() return promotional
def get_products(self): products = self.get_products_page().get('products') for product in products: product_obj = Product(raw=product) product['name'] = product_obj.get_short_name() product['images'] = product_obj.images product['url'] = product_obj.get_absolute_url() product['stock_available'] = product['stock_status'] != Ancora.STOCK_UNAVAILABLE for idx, product in enumerate(products): if (idx+1) % PRODUCTS_PER_LINE == 0: product['last_in_line'] = True return products
def create_or_update_products(products): existing_products = Product.objects.in_bulk(products.keys()) for product_id, new_product in products.items(): products_status[product_id] = True old_product = existing_products.get(product_id) if old_product: new_product_fields = Product.from_raw(new_product) updated_product = old_product.updated_product(new_product_fields) if updated_product: logger.debug("Update %s", updated_product) updated_product.save() insert_ids = set(products) - set(existing_products) if insert_ids: insert_list = [Product(raw=products[i]) for i in insert_ids] logger.debug("Insert %s", insert_list) Product.objects.bulk_create(insert_list)