def get_or_create_product2(dic, user): p = None p_created = False pr = None pr_created = False manufacturer_i = None created = False not_exist = False try: if 'manufacturer' in dic.keys(): manufacturer_i, created = Company.objects.get_or_create(name=dic['manufacturer'][:199], defaults={'slug':slugify(dic['manufacturer'][:199]), 'creator':user}) except: # raise ex = format_exc().encode('ascii', 'ignore') #key_value = '' #for key in dic.keys(): # key_value += key + ' ' + dic[key].encode('ascii', 'ignore') + ',' #write_error("Exception while getting a product, %s\n\n%s" % (ex, key_value)) write_error("Exception while getting a product, %s" % (ex)) try: rank = int(dic['sales_rank']) if 'sales_rank' in dic.keys() and dic['sales_rank'] else 0 except: rank = 0 try: review = float(dic['review']) if 'review' in dic.keys() and dic['review'] else None except: review = None try: review2 = int(dic['review2']) if 'review2' in dic.keys() and dic['review2'] else None except: review2 = None upc = dic['upc'] if 'upc' in dic.keys() else None try: p = Product.objects.get(other_id=dic['product_id']) p = Product(id=p.id, created=p.created, creator=p.creator, name=dic['name'], \ manufacturer=manufacturer_i, description=dic['description'], updater=user, updated=datetime.now(), \ swatch_image_url=dic['image'], \ small_image_url=dic['image'], medium_image_url=dic['image'], large_image_url=dic['image'], \ amazon_review_rating=review, amazon_total_reviews=review2, part_number=dic['part_number']) slugtool.unique_slugify(p, p.name[:349]) p.save() except Product.DoesNotExist: not_exist = True if not_exist: p = Product(name=dic['name'], upc=upc, model=dic['part_number'], \ manufacturer=manufacturer_i, description=dic['description'], creator=user, amazon_sales_rank=rank, \ swatch_image_url=dic['image'], small_image_url=dic['image'], medium_image_url=dic['image'], large_image_url=dic['image'], \ amazon_review_rating=review, amazon_total_reviews=review2, part_number=dic['part_number'], other_id=dic['product_id']) slugtool.unique_slugify(p, dic['name'][:349]) p.save() #if category: # p.categories.add(category) # p.save() p_created = True write_trace( p.name.encode('ascii', 'ignore') + ' created') #amazon pr_a, pr_a_created = create_retailer_price(p, dic, user) pr, pr_created = create_retailer_price(p, dic, user) return (p, p_created, pr, pr_created, None, None)
def get_or_create_cj_product(itemId, creator, idType="ASIN", category=None, requireOffer=False): #p = cj.getProduct(cj.NEWEGG_ID, itemId) #if p: from django.db.models import Q p = None p_created = False newweggProd = None try: #if idType != 'ASIN': # item = ItemLookup(ItemId=itemId, IdType=idType, SearchIndex='All', MerchantId='Featured', Condition='New', ResponseGroup="ItemAttributes,OfferFull,Images,SalesRank,Reviews") #else: # item = ItemLookup(ItemId=itemId, MerchantId='Featured', Condition='New', ResponseGroup="ItemAttributes,OfferFull,Images,SalesRank,Reviews") #if hasattr(item, '__getitem__'): # p_info = ProductInfo(item[0]) #else: # return (p, p_created) #if requireOffer and not p_info.OfferListingId: # return (p, p_created) #manufacturer_i, created = Company.objects.get_or_create(name=p_info.manufacturer[:199], defaults={'slug':slugify(p_info.manufacturer[:199]), 'creator':creator}) try: try: newweggProd = getProduct(NEWEGG_ID, itemId) except: return (p, p_created) p = Product.objects.get(other_id=itemId) p = Product(id=p.id, created=p.created, creator=p.creator, name=p.name, \ manufacturer=newweggProd.manufacturerName, description=newweggProd.description, updater=creator, updated=datetime.now(), \ swatch_image_url=newweggProd.imageUrl, \ small_image_url='', medium_image_url='', large_image_url='', \ amazon_review_rating=0, amazon_total_reviews=0, part_number='') slugtool.unique_slugify(p, p.name[:349]) p.save() # continue except Product.DoesNotExist: p = Product(name=newweggProd.name, model='', \ manufacturer='', description='', creator=creator, amazon_sales_rank=0, \ swatch_image_url='', small_image_url='', medium_image_url='', large_image_url='', \ amazon_review_rating=0, amazon_total_reviews=0, part_number='') slugtool.unique_slugify(p, p_info.title[:349]) p.save() #if category: # p.categories.add(category) # p.save() p_created = True write_trace( p.name.encode('ascii', 'ignore') + ' created') except: # raise write_error("Exception while getting a product, %s %s" % (itemId, format_exc().encode('ascii', 'ignore'))) return (p, p_created)
def get_or_create_product(itemId, creator, idType="ASIN", category=None, requireOffer=False): p = None p_created = False p_info = None pr = None pr_a = None pr_created = None pr_a_created = None from django.db.models import Q try: if idType != 'ASIN': item = ItemLookup(ItemId=itemId, IdType=idType, SearchIndex='All', MerchantId='Featured', Condition='New', ResponseGroup="ItemAttributes,OfferFull,Images,SalesRank,Reviews,BrowseNodes") else: item = ItemLookup(ItemId=itemId, MerchantId='Featured', Condition='New', ResponseGroup="ItemAttributes,OfferFull,Images,SalesRank,Reviews,BrowseNodes") if hasattr(item, '__getitem__'): p_info = ProductInfo(item[0]) else: return (p, p_created) if requireOffer and not p_info.OfferListingId: return (p, p_created) manufacturer_i, created = Company.objects.get_or_create(name=p_info.manufacturer[:199], defaults={'slug':slugify(p_info.manufacturer[:199]), 'creator':creator}) try: p = Product.objects.get(upc=p_info.upc) if p_info.upc else Product.objects.get(other_id=p_info.asin) p = Product(id=p.id, created=p.created, creator=p.creator, name=p_info.title[:349], upc=p_info.upc, model=p_info.model, \ manufacturer=manufacturer_i, description=p_info.desc, updater=creator, updated=datetime.now(), \ amazon_sales_rank=p_info.rank if p_info.rank else 400000, swatch_image_url=p_info.swatch, \ small_image_url=p_info.small, medium_image_url=p_info.medium, large_image_url=p_info.large, \ amazon_review_rating=p_info.rating, amazon_total_reviews=p_info.total_review, part_number=p_info.m_part_number,other_id=p_info.asin) slugtool.unique_slugify(p, p_info.title[:349]) p.save() # continue except Product.DoesNotExist: p = Product(name=p_info.title[:349], upc=p_info.upc, model=p_info.model, \ manufacturer=manufacturer_i, description=p_info.desc, creator=creator, amazon_sales_rank=p_info.rank if p_info.rank else 400000, \ swatch_image_url=p_info.swatch, small_image_url=p_info.small, medium_image_url=p_info.medium, large_image_url=p_info.large, \ amazon_review_rating=p_info.rating, amazon_total_reviews=p_info.total_review, part_number=p_info.m_part_number,other_id=p_info.asin) slugtool.unique_slugify(p, p_info.title[:349]) p.save() if not category and p_info.node: write_trace(p_info.node.Name) category, created = Category.objects.get_or_create(slug=slugify(p_info.node.Name), name=p_info.node.Name, amazon_id=p_info.node.BrowseNodeId, creator=creator) if category: p.categories.add(category) p.save() p_created = True write_trace( p.name.encode('ascii', 'ignore') + ' created') if p_info.OfferListingId: if p_info.a_OfferListingId: a_p_info = ProductInfo() a_p_info.asin = p_info.asin a_p_info.list_price = p_info.list_price a_p_info.OfferListingId = p_info.a_OfferListingId a_p_info.merchantName = p_info.a_merchantName a_p_info.merchantId = p_info.a_merchantId a_p_info.free_shipping = p_info.a_free_shipping a_p_info.price_amount = p_info.a_price_amount a_p_info.formatted_price = p_info.a_formatted_price pr_a, pr_a_created = create_retailer_price(p, a_p_info, creator) pr, pr_created = create_retailer_price(p, p_info, creator) except: # raise write_error("Exception while getting a product, %s %s" % (itemId, format_exc().encode('ascii', 'ignore'))) return (p, p_created, pr, pr_created, pr_a, pr_a_created)