Esempio n. 1
0
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)
Esempio n. 2
0
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)