Esempio n. 1
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("")
Esempio n. 2
0
File: views.py Progetto: 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("")
Esempio n. 3
0
def add_images(request):
    """
    Adds a global images.
    """
    if request.method == "POST":
        for file_content in request.FILES.getlist("file"):
            image = Image(title=file_content.name)
            try:
                image.image.save(file_content.name, file_content, save=True)
            except Exception, e:
                image.delete()
                logger.info("Upload of image failed: %s %s" % (file_content.name, e))
                continue
Esempio n. 4
0
def add_images(request):
    """
    Adds a global images.
    """
    if request.method == "POST":
        for file_content in request.FILES.getlist("file"):
            image = Image(title=file_content.name)
            try:
                image.image.save(file_content.name, file_content, save=True)
            except Exception, e:
                image.delete()
                logger.info("Upload of image failed: %s %s" % (file_content.name, e))
                continue
Esempio n. 5
0
File: images.py Progetto: 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))
Esempio n. 6
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("file"):
            image = Image(content=product, title=file_content.name)
            try:
                image.image.save(file_content.name, file_content, save=True)
            except Exception, e:
                logger.info("Upload image: %s %s" % (file_content.name, e))
                continue
Esempio n. 7
0
def add_images(request):
    """
    Adds a global images.
    """
    if request.method == "POST":
        for file_content in request.FILES.getlist("files[]"):
            image = Image(title=file_content.name)
            try:
                image.image.save(file_content.name, file_content, save=True)
            except Exception as e:
                image.delete()
                logger.info("Upload of image failed: %s %s" %
                            (file_content.name, e))
                continue

    result = json.dumps({
        "name": file_content.name,
        "type": "image/jpeg",
        "size": "123456789"
    })
    return HttpResponse(result, content_type='application/json')
Esempio n. 8
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')
Esempio n. 9
0
def products(amount=20):
    """
    """
    import lfs.core.utils
    from lfs.catalog.models import Category
    from lfs.catalog.models import Image
    from lfs.catalog.models import Product
    from lfs.core.models import Shop

    from lfs.catalog.models import Property
    from lfs.catalog.models import PropertyOption

    from lfs.shipping.models import ShippingMethod
    from lfs.criteria.models import CartPriceCriterion

    Image.objects.all().delete()
    Product.objects.all().delete()
    Category.objects.all().delete()
    PropertyOption.objects.all().delete()
    Property.objects.all().delete()

    # Images
    path = os.path.join(os.path.dirname(__file__), "data")
    fh = open(os.path.join(path, "image1.jpg"), 'rb')
    cf_1 = ContentFile(fh.read())
    fh = open(os.path.join(path, "image2.jpg"), 'rb')
    cf_2 = ContentFile(fh.read())
    fh = open(os.path.join(path, "image3.jpg"), 'rb')
    cf_3 = ContentFile(fh.read())

    image_1 = Image(title="Image 1")
    image_1.image.save("Laminat01.jpg", cf_1)
    image_1.save()

    image_2 = Image(title="Image 2")
    image_2.image.save("Laminat02.jpg", cf_2)
    image_2.save()

    image_3 = Image(title="Image 3")
    image_3.image.save("Laminat03.jpg", cf_3)
    image_3.save()

    # Properties
    property = Property(name="Color")
    property.save()

    property_option = PropertyOption(name="Yellow", property=property, price=1.0)
    property_option.save()

    property_option = PropertyOption(name="Red", property=property, price=2.0)
    property_option.save()

    property = Property(name="Size")
    property.save()

    property_option = PropertyOption(name="L", property=property, price=11.0)
    property_option.save()

    property_option = PropertyOption(name="M", property=property, price=12.0)
    property_option.save()

    shop = lfs.core.utils.get_default_shop()

    # Create categories
    category_1 = Category(name="Clothes", slug="clothes")
    category_1.save()

    category_2 = Category(name="Women", slug="women", parent=category_1)
    category_2.save()

    category_3 = Category(name="Pants", slug="pants-woman", parent=category_2)
    category_3.save()

    category_4 = Category(name="Dresses", slug="dresses", parent=category_2)
    category_4.save()

    category_5 = Category(name="Men", slug="men", parent=category_1)
    category_5.save()

    category_6 = Category(name="Pants", slug="pants-men", parent=category_5)
    category_6.save()

    category_7 = Category(name="Pullover", slug="pullover", parent=category_5)
    category_7.save()

    shop.categories = [category_1, category_2, category_3, category_4, category_5, category_6, category_7]
    shop.save()

    # Create products
    for i in range(1, amount):
        p = Product(name="Rock-%s" % i, slug="rock-%s" % i, sku="rock-000%s" % i, price=i * 10)
        p.save()

        if i == 1:
            p.images.add(image_1)
            p.images.add(image_2)
            p.images.add(image_3)
            p.save()
        else:
            img = Image(title="Image 1", image="images/Laminat01.jpg")
            img.save()
            p.images.add(img)
            p.save()

        category_3.products.add(p)
        category_3.save()

        print "Rock-%s created" % i

    for i in range(1, amount):
        p = Product(name="Hemd-%s" % i, slug="hemd-%s" % i, sku="hemd-000%s" % i, price=i * 10, active=True)
        p.save()

        img = Image(title="Image 1", image="images/Laminat02.jpg")
        img.save()
        p.images.add(img)
        p.save()

        category_4.products.add(p)
        category_4.save()

        print "Hemd-%s created" % i

    for i in range(1, amount):
        p = Product(name="Pullover-%s" % i, slug="pullover-%s" % i, sku="pullover-000%s" % i, price=i * 10, active=True)
        p.save()

        img = Image(title="Image 1", image="images/Laminat03.jpg")
        img.save()
        p.images.add(img)
        p.save()

        category_6.products.add(p)
        category_6.save()

        print "Pullover-%s created" % i

    for i in range(1, amount):
        p = Product(name="Hose-%s" % i, slug="hose-%s" % i, sku="hose-000%s" % i, price=i * 10, active=True)
        p.save()

        img = Image(title="Image 1", image="images/Laminat03.jpg")
        img.save()
        p.images.add(img)
        p.save()

        category_7.products.add(p)
        category_7.save()

        print "Hose-%s created" % i
Esempio n. 10
0
def products(amount=20):
    """
    """
    import lfs.core.utils
    from lfs.catalog.models import Category
    from lfs.catalog.models import Image
    from lfs.catalog.models import Product
    from lfs.core.models import Shop

    from lfs.catalog.models import Property
    from lfs.catalog.models import PropertyOption

    from lfs.shipping.models import ShippingMethod
    from lfs.criteria.models import CartPriceCriterion

    Image.objects.all().delete()
    Product.objects.all().delete()
    Category.objects.all().delete()
    PropertyOption.objects.all().delete()
    Property.objects.all().delete()

    # Images
    path = os.path.join(os.getcwd(), "parts/lfs/lfs/utils/data")
    fh = open(os.path.join(path, "image1.jpg"))
    cf_1 = ContentFile(fh.read())
    fh = open(os.path.join(path, "image2.jpg"))
    cf_2 = ContentFile(fh.read())
    fh = open(os.path.join(path, "image3.jpg"))
    cf_3 = ContentFile(fh.read())

    image_1 = Image(title="Image 1")
    image_1.image.save("Laminat01.jpg", cf_1)
    image_1.save()

    image_2 = Image(title="Image 2")
    image_2.image.save("Laminat02.jpg", cf_2)
    image_2.save()

    image_3 = Image(title="Image 3")
    image_3.image.save("Laminat03.jpg", cf_3)
    image_3.save()

    # Properties
    property = Property(name="Color")
    property.save()

    property_option = PropertyOption(name="Yellow",
                                     property=property,
                                     price=1.0)
    property_option.save()

    property_option = PropertyOption(name="Red", property=property, price=2.0)
    property_option.save()

    property = Property(name="Size")
    property.save()

    property_option = PropertyOption(name="L", property=property, price=11.0)
    property_option.save()

    property_option = PropertyOption(name="M", property=property, price=12.0)
    property_option.save()

    shop = lfs.core.utils.get_default_shop()

    # Create categories
    category_1 = Category(name="Clothes", slug="clothes")
    category_1.save()

    category_2 = Category(name="Women", slug="women", parent=category_1)
    category_2.save()

    category_3 = Category(name="Pants", slug="pants-woman", parent=category_2)
    category_3.save()

    category_4 = Category(name="Dresses", slug="dresses", parent=category_2)
    category_4.save()

    category_5 = Category(name="Men", slug="men", parent=category_1)
    category_5.save()

    category_6 = Category(name="Pants", slug="pants-men", parent=category_5)
    category_6.save()

    category_7 = Category(name="Pullover", slug="pullover", parent=category_5)
    category_7.save()

    shop.categories = [
        category_1, category_2, category_3, category_4, category_5, category_6,
        category_7
    ]
    shop.save()

    # Create products
    for i in range(1, amount):
        p = Product(name="Rock-%s" % i,
                    slug="rock-%s" % i,
                    sku="rock-000%s" % i,
                    price=i * 10)
        p.save()

        if i == 1:
            p.images.add(image_1)
            p.images.add(image_2)
            p.images.add(image_3)
            p.save()
        else:
            img = Image(title="Image 1", image="images/Laminat01.jpg")
            img.save()
            p.images.add(img)
            p.save()

        category_3.products.add(p)
        category_3.save()

        print "Rock-%s created" % i

    for i in range(1, amount):
        p = Product(name="Hemd-%s" % i,
                    slug="hemd-%s" % i,
                    sku="hemd-000%s" % i,
                    price=i * 10,
                    active=True)
        p.save()

        img = Image(title="Image 1", image="images/Laminat02.jpg")
        img.save()
        p.images.add(img)
        p.save()

        category_4.products.add(p)
        category_4.save()

        print "Hemd-%s created" % i

    for i in range(1, amount):
        p = Product(name="Pullover-%s" % i,
                    slug="pullover-%s" % i,
                    sku="pullover-000%s" % i,
                    price=i * 10,
                    active=True)
        p.save()

        img = Image(title="Image 1", image="images/Laminat03.jpg")
        img.save()
        p.images.add(img)
        p.save()

        category_6.products.add(p)
        category_6.save()

        print "Pullover-%s created" % i

    for i in range(1, amount):
        p = Product(name="Hose-%s" % i,
                    slug="hose-%s" % i,
                    sku="hose-000%s" % i,
                    price=i * 10,
                    active=True)
        p.save()

        img = Image(title="Image 1", image="images/Laminat03.jpg")
        img.save()
        p.images.add(img)
        p.save()

        category_7.products.add(p)
        category_7.save()

        print "Hose-%s created" % i
Esempio n. 11
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
Esempio n. 12
0
def import_easyshop(request):
    """Imports Categories, Products and Product Images from ES.
    """
    Category.objects.all().delete()
    Product.objects.all().delete()
    Image.objects.all().delete()
    
    ##### Categories
    categories_fh = open("%s/categories/categories.csv" % PATH)
    reader = csv.reader(categories_fh, delimiter=";", quotechar="'")
    
    # to save uid -> id for later use
    categories = {}
    products = {}
    for row in reader:
        category = Category.objects.create(
            name = row[2],
            slug = slugify(row[1]),
            description = row[6]
        )

        # We map the new lfs category id with Plone's UID and save it. This is 
        # later used to assign products, parent categories and images to the 
        # category
        categories[row[0]] = category.id

    # Now as all categories exist we go through the categories again and assign 
    # the parent category.
    categories_fh.seek(0)
    for row in reader:
        child_id  = categories[row[0]]
        parent_id = categories.get(row[3])
        
        category = Category.objects.get(pk=child_id)
        category.parent_id = parent_id
        category.save()

    ##### Category Images
    fh_images = open("%s/categories/images.csv" % PATH)
    reader = csv.reader(fh_images, delimiter=";", quotechar="'")
    
    for row in reader:
        filename = row[1]
        fh_image = open(os.path.join("%s/categories" % PATH, filename))
        cf = ContentFile(fh_image.read())
        
        category_id = categories.get(row[0])
        if category_id:
            category = Category.objects.get(pk=category_id)
            category.image.save(filename, cf)
            category.save()
                    
    ##### Products
    products_fh = open("%s/products/products.csv" % PATH)
    reader = csv.reader(products_fh, delimiter=";", quotechar="'")
    
    for row in reader:
        try:
            price = float(row[6])
        except:
            price = 0
        
        print len(row[2])
        
        product = Product.objects.create(
            name = row[2],
            slug = slugify(row[1]),
            sku = row[4],
            price = price,
            short_description = row[9],
            description = row[5],
        )
        
        # We map the new lfs product id with Plone's UID and save it. This is 
        # later used to assign images to the products
        products[row[0]] = product.id
        
        # Assign Categories
        for category_uid in row[7].split(","):
            category_id = categories.get(category_uid)
            if category_id:
                product.categories.add(category_id)
                product.save()
    
    ##### Product Image
    fh_images = open("%s/products/images.csv" % PATH)
    reader = csv.reader(fh_images, delimiter=";", quotechar="'")
    
    for row in reader:
        filename = row[1]
        fh_image = open(os.path.join("%s/products/" % PATH, filename))
        cf = ContentFile(fh_image.read())
        image = Image(title="Image 1")
        image.image.save(filename, cf)
        image.save()
        
        product_id = products.get(row[0])
        if product_id:
            product = Product.objects.get(pk=product_id)
            product.images.add(image)
    fh_image.close()
            
    return HttpResponse(reader)
Esempio n. 13
0
def products(request):
    """
    """    
    amount = int(request.GET.get("amount", 20))
    
    Image.objects.all().delete()
    Product.objects.all().delete()
    Category.objects.all().delete()
    Shop.objects.all().delete()
    PropertyOption.objects.all().delete()
    Property.objects.all().delete()
    
    # Images
    path = os.path.join(sys.path[0], "lfs/utils/data")
    fh = open(os.path.join(path, "image1.jpg"))
    cf_1 = ContentFile(fh.read())
    fh = open(os.path.join(path, "image2.jpg"))
    cf_2 = ContentFile(fh.read())
    fh = open(os.path.join(path, "image3.jpg"))
    cf_3 = ContentFile(fh.read())
    
    image_1 = Image(title="Image 1")    
    image_1.image.save("Laminat01.jpg", cf_1)
    image_1.save()

    image_2 = Image(title="Image 2")
    image_2.image.save("Laminat02.jpg", cf_2)
    image_2.save()

    image_3 = Image(title="Image 3")
    image_3.image.save("Laminat03.jpg", cf_3)
    image_3.save()

    # Properties
    property = Property(name="Color")
    property.save()

    property_option= PropertyOption(name = "Yellow", property = property, price = 1.0)
    property_option.save()

    property_option = PropertyOption(name = "Red", property = property, price = 2.0)
    property_option.save()

    property = Property(name="Size")
    property.save()

    property_option = PropertyOption(name = "L", property = property, price = 11.0)
    property_option.save()

    property_option = PropertyOption(name = "M", property = property, price = 12.0)
    property_option.save()
    
    # Create shop
    shop = Shop(name="Test", shop_owner="Test")
    shop.save()

    # Create categories
    category_1 = Category(name="Clothes", slug="clothes")
    category_1.save()
    
    category_2 = Category(name="Women", slug="women", parent=category_1)
    category_2.save()

    category_3 = Category(name="Pants", slug="pants-woman", parent=category_2)
    category_3.save()

    category_4 = Category(name="Dresses", slug="dresses", parent=category_2)
    category_4.save()

    category_5 = Category(name="Men", slug="men", parent=category_1)
    category_5.save()

    category_6 = Category(name="Pants", slug="pants-men", parent=category_5)
    category_6.save()

    category_7 = Category(name="Pullover", slug="pullover", parent=category_5)
    category_7.save()
    
    shop.categories = [category_1, category_2, category_3, category_4, category_5, category_6, category_7]
    shop.save()
    
    # Create products
    for i in range(1, amount):
        p = Product(name="1-%s" % i, slug="1-%s" % i, price=i)
        p.save()

        if i == 1:
            p.images.add(image_1)
            p.images.add(image_2)
            p.images.add(image_3)
            p.save()            
        else:
            img = Image(title="Image 1", image="images/Laminat01.jpg")
            img.save()
            p.images.add(img)
            p.save()
        
        category_3.products.add(p)
        category_3.save()
        
        print "1-%s created" % i
        

    for i in range(1, amount):
        p = Product(name="2-%s" % i, slug="2-%s" % i, price=i*10)
        p.save()

        img = Image(title="Image 1", image="images/Laminat02.jpg")
        img.save()
        p.images.add(img)
        p.save()

        category_4.products.add(p)
        category_4.save()

        print "2-%s created" % i
    
    for i in range(1, amount):
        p = Product(name="3-%s" % i, slug="3-%s" % i, price=i*100)
        p.save()

        img = Image(title="Image 1", image="images/Laminat03.jpg")
        img.save()
        p.images.add(img)
        p.save()

        category_6.products.add(p)
        category_6.save()

        print "3-%s created" % i

    for i in range(1, amount):
        p = Product(name="4-%s" % i, slug="4-%s" % i, price=i*100)
        p.save()

        img = Image(title="Image 1", image="images/Laminat03.jpg")
        img.save()
        p.images.add(img)
        p.save()

        category_7.products.add(p)
        category_7.save()

        print "4-%s created" % i
    
    product = Product.objects.get(slug="1-1")

    return HttpResponseRedirect("/shops")
Esempio n. 14
0
File: views.py Progetto: potar/lfs
def import_easyshop(request):
    """Imports Categories, Products and Product Images from ES.
    """
    Category.objects.all().delete()
    Product.objects.all().delete()
    Image.objects.all().delete()

    ##### Categories
    categories_fh = open("%s/categories/categories.csv" % PATH)
    reader = csv.reader(categories_fh, delimiter=";", quotechar="'")

    # to save uid -> id for later use
    categories = {}
    products = {}
    for row in reader:
        category = Category.objects.create(name=row[2],
                                           slug=slugify(row[1]),
                                           description=row[6])

        # We map the new lfs category id with Plone's UID and save it. This is
        # later used to assign products, parent categories and images to the
        # category
        categories[row[0]] = category.id

    # Now as all categories exist we go through the categories again and assign
    # the parent category.
    categories_fh.seek(0)
    for row in reader:
        child_id = categories[row[0]]
        parent_id = categories.get(row[3])

        category = Category.objects.get(pk=child_id)
        category.parent_id = parent_id
        category.save()

    ##### Category Images
    fh_images = open("%s/categories/images.csv" % PATH)
    reader = csv.reader(fh_images, delimiter=";", quotechar="'")

    for row in reader:
        filename = row[1]
        fh_image = open(os.path.join("%s/categories" % PATH, filename))
        cf = ContentFile(fh_image.read())

        category_id = categories.get(row[0])
        if category_id:
            category = Category.objects.get(pk=category_id)
            category.image.save(filename, cf)
            category.save()

    ##### Products
    products_fh = open("%s/products/products.csv" % PATH)
    reader = csv.reader(products_fh, delimiter=";", quotechar="'")

    for row in reader:
        try:
            price = float(row[6])
        except:
            price = 0

        print len(row[2])

        product = Product.objects.create(
            name=row[2],
            slug=slugify(row[1]),
            sku=row[4],
            price=price,
            short_description=row[9],
            description=row[5],
        )

        # We map the new lfs product id with Plone's UID and save it. This is
        # later used to assign images to the products
        products[row[0]] = product.id

        # Assign Categories
        for category_uid in row[7].split(","):
            category_id = categories.get(category_uid)
            if category_id:
                product.categories.add(category_id)
                product.save()

    ##### Product Image
    fh_images = open("%s/products/images.csv" % PATH)
    reader = csv.reader(fh_images, delimiter=";", quotechar="'")

    for row in reader:
        filename = row[1]
        fh_image = open(os.path.join("%s/products/" % PATH, filename))
        cf = ContentFile(fh_image.read())
        image = Image(title="Image 1")
        image.image.save(filename, cf)
        image.save()

        product_id = products.get(row[0])
        if product_id:
            product = Product.objects.get(pk=product_id)
            product.images.add(image)
    fh_image.close()

    return HttpResponse(reader)
Esempio n. 15
0
def products(request):
    """
    """
    amount = int(request.GET.get("amount", 20))

    Image.objects.all().delete()
    Product.objects.all().delete()
    Category.objects.all().delete()
    Shop.objects.all().delete()
    PropertyOption.objects.all().delete()
    Property.objects.all().delete()

    # Images
    path = os.path.join(sys.path[0], "lfs/utils/data")
    fh = open(os.path.join(path, "image1.jpg"))
    cf_1 = ContentFile(fh.read())
    fh = open(os.path.join(path, "image2.jpg"))
    cf_2 = ContentFile(fh.read())
    fh = open(os.path.join(path, "image3.jpg"))
    cf_3 = ContentFile(fh.read())

    image_1 = Image(title="Image 1")
    image_1.image.save("Laminat01.jpg", cf_1)
    image_1.save()

    image_2 = Image(title="Image 2")
    image_2.image.save("Laminat02.jpg", cf_2)
    image_2.save()

    image_3 = Image(title="Image 3")
    image_3.image.save("Laminat03.jpg", cf_3)
    image_3.save()

    # Properties
    property = Property(name="Color")
    property.save()

    property_option = PropertyOption(name="Yellow",
                                     property=property,
                                     price=1.0)
    property_option.save()

    property_option = PropertyOption(name="Red", property=property, price=2.0)
    property_option.save()

    property = Property(name="Size")
    property.save()

    property_option = PropertyOption(name="L", property=property, price=11.0)
    property_option.save()

    property_option = PropertyOption(name="M", property=property, price=12.0)
    property_option.save()

    # Create shop
    shop = Shop(name="Test", shop_owner="Test")
    shop.save()

    # Create categories
    category_1 = Category(name="Clothes", slug="clothes")
    category_1.save()

    category_2 = Category(name="Women", slug="women", parent=category_1)
    category_2.save()

    category_3 = Category(name="Pants", slug="pants-woman", parent=category_2)
    category_3.save()

    category_4 = Category(name="Dresses", slug="dresses", parent=category_2)
    category_4.save()

    category_5 = Category(name="Men", slug="men", parent=category_1)
    category_5.save()

    category_6 = Category(name="Pants", slug="pants-men", parent=category_5)
    category_6.save()

    category_7 = Category(name="Pullover", slug="pullover", parent=category_5)
    category_7.save()

    shop.categories = [
        category_1, category_2, category_3, category_4, category_5, category_6,
        category_7
    ]
    shop.save()

    # Create products
    for i in range(1, amount):
        p = Product(name="1-%s" % i, slug="1-%s" % i, price=i)
        p.save()

        if i == 1:
            p.images.add(image_1)
            p.images.add(image_2)
            p.images.add(image_3)
            p.save()
        else:
            img = Image(title="Image 1", image="images/Laminat01.jpg")
            img.save()
            p.images.add(img)
            p.save()

        category_3.products.add(p)
        category_3.save()

        print "1-%s created" % i

    for i in range(1, amount):
        p = Product(name="2-%s" % i, slug="2-%s" % i, price=i * 10)
        p.save()

        img = Image(title="Image 1", image="images/Laminat02.jpg")
        img.save()
        p.images.add(img)
        p.save()

        category_4.products.add(p)
        category_4.save()

        print "2-%s created" % i

    for i in range(1, amount):
        p = Product(name="3-%s" % i, slug="3-%s" % i, price=i * 100)
        p.save()

        img = Image(title="Image 1", image="images/Laminat03.jpg")
        img.save()
        p.images.add(img)
        p.save()

        category_6.products.add(p)
        category_6.save()

        print "3-%s created" % i

    for i in range(1, amount):
        p = Product(name="4-%s" % i, slug="4-%s" % i, price=i * 100)
        p.save()

        img = Image(title="Image 1", image="images/Laminat03.jpg")
        img.save()
        p.images.add(img)
        p.save()

        category_7.products.add(p)
        category_7.save()

        print "4-%s created" % i

    product = Product.objects.get(slug="1-1")

    return HttpResponseRedirect("/shops")