Exemplo n.º 1
0
Arquivo: views.py Projeto: potar/lfs
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("")
Exemplo n.º 2
0
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("")
Exemplo n.º 3
0
Arquivo: images.py Projeto: potar/lfs
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))
Exemplo n.º 4
0
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')
Exemplo n.º 5
0
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