def ListProducts(self, page, items): rtn_data = [] cur = self.connection.cursor(cursor_factory=psycopg2.extras.DictCursor) query = '''select distinct product_sku, size_id from "Kardex" where cellar_id = %(id)s order by product_sku, size_id''' parametros = {"id": self.id} cur.execute(query, parametros) pproduct_sku = cur.fetchall() kardex = Kardex() for p in pproduct_sku: product = Product() # print "SKU:{}".format(p["product_sku"]) response_obj = product.InitBySku(p["product_sku"]) if "error" not in response_obj: prod_print = response_obj["success"] response_obj = kardex.FindKardex(p["product_sku"], self.id, p["size_id"]) if "success" in response_obj: size = Size() size.id = kardex.size_id res_size_id = size.initById() if "success" in res_size_id: prod_print["balance_units"] = kardex.balance_units prod_print["balance_price"] = kardex.balance_price prod_print["balance_total"] = kardex.balance_total prod_print["size_id"] = kardex.size_id prod_print["size"] = size.name rtn_data.append(prod_print) # else: # return res_size_id else: return response_obj else: return response_obj return {"success": rtn_data}
def AddProduct(self, sku, main_category, categories, color, season): response = None p = Product() p.InitBySku(sku) s = Size() is_first = True image_skus = [] create_requests = [] update_requests = [] for si in p.size_id: s.id = si s.initById() size = s.name if is_first: is_first = False new_sku = sku else: new_sku = "{}-{}".format(sku, size) image_skus.append(new_sku) # @todo:validate product here product_data = { "Gender" : "Femenino", "ColorNameBrand" : p.color, "Color" : p.color, "ColorFamily" : color, "Season" : season, "SeasonYear" : date.today().year - 1 } # response = dafiti.Response() stock = self.getStock(sku, s.id) product_name = "{} {} {} Giani Da Firenze".format( p.category, p.name, p.color ) if not self.ProductExist(new_sku): create_requests.append( dafiti.ProductRequest( SellerSku=new_sku, Name=self.nameFix(product_name), Description=p.description, Brand="Giani Da Firenze", Price=p.sell_price, PrimaryCategory=main_category, Categories=categories.split(","), Variation=size, ProductData=product_data, Quantity=stock, ParentSku=sku)) else: update_requests.append( dafiti.ProductRequest( SellerSku=new_sku, Name=self.nameFix(product_name), Description=p.description, Brand="Giani Da Firenze", Price=p.sell_price, PrimaryCategory=main_category, Categories=categories.split(","), Variation=size, ProductData=product_data, Quantity=stock, ParentSku=sku, Status=dafiti.Status.Active)) # save las sync self.insertSync(new_sku, stock) if len(create_requests) > 0: response = self.client.product.sendPOST(dafiti.EndPoint.ProductCreate, create_requests) if len(update_requests) > 0: response = self.client.product.sendPOST(dafiti.EndPoint.ProductUpdate, update_requests) # preparing images for dafiti images = [p.image, p.image_2, p.image_3, p.image_4, p.image_5, p.image_6] final_images = [] for img in images: if img != '': final_images.append( "http://bodegas.gianidafirenze.cl/image/dafiti/{}?mwh=1380,1160".format(img.replace(" ", "%20")) ) for x in range(0,3): aux = final_images.pop(0) final_images.append(aux) # adding images to dafiti self.client.product.Image( image_skus, *final_images) return response