def update_images_from_es(request): """ """ # First we delete all images Image.objects.all().delete() # sku, filename fh_images = open("%s/product_images.csv" % UPDATE_PATH) reader = csv.reader(fh_images, delimiter=";", quotechar="'") for row in reader: # assign try: product = Product.objects.get(sku=row[0]) except ObjectDoesNotExist: pass else: filename = row[1] fh_image = open( os.path.join(UPDATE_PATH, "product_images", filename)) # create image cf = ContentFile(fh_image.read()) image = Image(title="Image 1") image.image.save(filename, cf) image.position = row[2] image.save() product.images.add(image) fh_image.close() return HttpResponse("")
def update_images_from_es(request): """ """ # First we delete all images Image.objects.all().delete() # sku, filename fh_images = open("%s/product_images.csv" % UPDATE_PATH) reader = csv.reader(fh_images, delimiter=";", quotechar="'") for row in reader: # assign try: product = Product.objects.get(sku=row[0]) except ObjectDoesNotExist: pass else: filename = row[1] fh_image = open(os.path.join(UPDATE_PATH, "product_images", filename)) # create image cf = ContentFile(fh_image.read()) image = Image(title="Image 1") image.image.save(filename, cf) image.position = row[2] image.save() product.images.add(image) fh_image.close() return HttpResponse("")
def add_image(request, product_id): """Adds an image to product with passed product_id. """ product = lfs_get_object_or_404(Product, pk=product_id) if request.method == "POST": for file_content in request.FILES.values(): image = Image(content=product, title=file_content.name) image.image.save(file_content.name, file_content, save=True) # Refresh positions for i, image in enumerate(product.images.all()): image.position = i+1 image.save() product_changed.send(product, request=request) return HttpResponse(manage_images(request, product_id, as_string=True))
def add_image(request, product_id): """Adds an image to product with passed product_id. """ product = lfs_get_object_or_404(Product, pk=product_id) if request.method == "POST": for file_content in request.FILES.getlist("files[]"): image = Image(content=product, title=file_content.name) try: image.image.save(file_content.name, file_content, save=True) except Exception as e: logger.info("Upload image: %s %s" % (file_content.name, e)) continue # Refresh positions for i, image in enumerate(product.images.all()): image.position = (i + 1) * 10 image.save() product_changed.send(product, request=request) result = json.dumps({"name": file_content.name, "type": "image/jpeg", "size": "123456789"}) return HttpResponse(result, content_type='application/json')
def load_data(dataFile, imagesDir, clean=False, addWait=False, startFromLine=0, skipImages=False): if clean: for prod in Product.objects.all(): prod.delete() for cat in Category.objects.all(): cat.delete() data = open(dataFile, "r") categoryPos = 10 subcategoryPos = 10 serialPos = 10 counter = 0 for line in data.readlines(): line = line.decode('utf8') print 'counter', counter counter = counter + 1 if counter < startFromLine: continue brand, name, desc, price, category, subcategory, brand, serial = line.split('\t') serial = serial.strip() #print brand, name, desc, price, category, subcategory, brand, serial categorySlug = translit(category, reversed=True).replace(' ', '-').replace('\'', '') categoryObj, created = Category.objects.get_or_create(slug=categorySlug) #print categoryObj, created if not created: if categoryObj.level != 1: categoryObj, created = Category.objects.get_or_create(slug=categorySlug + '1') categoryObj.level = 1 categoryObj.name = category categoryObj.position = categoryPos categoryPos += 10 categoryObj.save() subcategorySlug = translit(subcategory, reversed=True).replace(' ', '-').replace('\'', '') subcategoryObj, created = Category.objects.get_or_create(slug=subcategorySlug) if not created: if subcategoryObj.level != 2: subcategoryObj, created = Category.objects.get_or_create(slug=subcategorySlug + '2') subcategoryObj.parent = categoryObj subcategoryObj.level = 2 subcategoryObj.name = subcategory subcategoryObj.position = subcategoryPos subcategoryPos += 10 subcategoryObj.save() serialSlug = translit(serial.strip(), reversed=True).replace(' ', '-').replace('\'', '').replace('(', '').replace(')', '').replace(',', '_') serialObj, created = Category.objects.get_or_create(slug=serialSlug) if not created: if serialObj.level != 3: serialObj, created = Category.objects.get_or_create(slug=serialSlug + '3') print serial.strip() serialObj.parent = subcategoryObj serialObj.name = serial.strip() serialObj.level = 3 serialObj.position = serialPos serialPos += 10 serialObj.save() manufacturer, created = Manufacturer.objects.get_or_create(name=brand) if created: manufacturer.save() try: productSlug = translit(name.strip(), reversed=True).replace(' ', '-').replace('\'', '').replace('(', '').replace(')', '').replace(',', '_').replace('+', '_') except: productSlug = name product, created = Product.objects.get_or_create(name=name) product.slug = productSlug product.active = 1 product.short_description = desc product.price = 1.15*int(price) product.manufacturer = manufacturer product.categories = [categoryObj, subcategoryObj, serialObj] product.save() if addWait: time.sleep(addWait) if skipImages: continue # to some dirs + sign was added #dirPath = imagesDir + '/' + category + '/' + subcategory + '/' + brand + '/' + serial + '/' + brand.lower() + '_' + product.name.lower().replace(' ', '_') dirPath = imagesDir #category dir if exists(dirPath + '/+' + category): dirPath += '/+' + category else: dirPath += '/' + category #subcategory dir if exists(dirPath + '/+' + subcategory): dirPath += '/+' + subcategory else: dirPath += '/' + subcategory #brand dir if exists(dirPath + '/+' + brand): dirPath += '/+' + brand else: dirPath += '/' + brand #serial dir if exists(dirPath + '/+' + serial): dirPath += '/+' + serial else: dirPath += '/' + serial #product dir prodDirRel = brand.lower() + '_' + product.name.lower().replace(' ', '_'); if exists(dirPath + '/+' + prodDirRel): dirPath += ('/+' + prodDirRel) else: dirPath += '/' + prodDirRel print 'dirPath', dirPath for (_dirPath, dirnames, filenames) in walk(dirPath): #print (_dirPath, dirnames, filenames) for fileName in filenames: print 'fileName', fileName for img in product.images.all(): img.delete() file = File(open(dirPath + '/' + fileName, 'r')) image = Image(content=product, title=fileName) try: image.image.save(fileName, file, save=True) except Exception, e: print e # Refresh positions for i, image in enumerate(product.images.all()): image.position = (i + 1) * 10 image.save() if addWait: time.sleep(addWait) # need only one image break #need only files of current dir break