def test_unique_sku(self): product_a = Product() product_a.name = 'a' product_a.sku = 'a' product_a.save() product_b = Product() product_b.name = 'a' product_b.sku = 'a' with self.assertRaises(IntegrityError): with transaction.atomic(): product_b.save()
def test_unique_slug(self): product_a = Product() product_a.name = "a" product_a.save() product_b = Product() product_b.name = product_a.name product_b.site = Site.objects.get(pk=2) product_b.save() product_c = Product() product_c.name = product_a.name product_c.save() self.assertNotEqual(product_a.slug, product_c.slug) self.assertEqual(product_a.slug, product_b.slug)
def handle_noargs(self, *args, **kwargs): print "fetching product list" f = urllib2.urlopen(URL) products = json.loads(f.read()) for (i, product_data) in enumerate(products): try: product = Product.objects.get(fairtrade_org_uk_key=product_data['key']) except Product.DoesNotExist: product = Product(fairtrade_org_uk_key=product_data['key']) if product_data['manufacturer'] == 'N/A': manufacturer = None else: manufacturer, created = BusinessEntity.objects.get_or_create(name=product_data['manufacturer']) category = None # walk down category tree for category_name in product_data['category'].split('/'): if not category: try: category = ProductCategory.get_root_nodes().get(name=category_name) except ProductCategory.DoesNotExist: category = ProductCategory.add_root(name=category_name) else: try: category = category.get_children().get(name=category_name) except ProductCategory.DoesNotExist: category = category.add_child(name=category_name) product.name = product_data['name'] product.manufacturer = manufacturer product.category = category if product_data['description']: product.description = product_data['description'] if product_data['url']: product.url = product_data['url'] product.save() if i % 100 == 0: print "imported %d products" % i