Esempio n. 1
0
def cliProductos():
    if 'username' in session:
        formulario = ProductForm()
        if formulario.validate_on_submit():
            producto = formulario.producto.data.upper()
            if len(producto) < 3:
                flash(
                    'Debe ingresar al menos 3 caracteres para realizar la búsqueda.'
                )
                return render_template('cliProductos.html', form=formulario)
            else:
                listaProductos = buscarProductos(registrosventas, producto)
                if len(listaProductos) == 0:
                    flash('No existen productos con la descripción ingresada.')
                elif len(listaProductos) == 1:
                    listaClientes = listadoCliProductos(
                        registrosventas, producto)
                    return render_template(
                        'cliProductos.html',
                        form=formulario,
                        listaClientes=listaClientes,
                        producto=formulario.producto.data.upper())
                else:
                    flash(
                        'Se encontró mas de un producto, por favor seleccione el que desea consultar.'
                    )
                    return render_template('cliProductos.html',
                                           form=formulario,
                                           productos=listaProductos)
        return render_template('cliProductos.html', form=formulario)
    else:
        flash('Para poder acceder debe estar logueado.')
        return redirect(url_for('ingresar'))
Esempio n. 2
0
def edit_product(id):
    product = Product.find_product(id)

    form = ProductForm()

    if form.validate_on_submit():
        new_product = Product(
            id=product.id,
            title=form.title.data,
            content=form.content.data,
            price=form.price.data
        )

        product.edit_product(new_product)
        flash(f'{form.title.data} has been updated!', 'success')
        return redirect(url_for('view_product', id=product.id))

    elif request.method == "GET":
        form.title.data = product.title
        form.content.data = product.content
        form.price.data = product.price

    return render_template(
        "product/edit_product.html",
        title="Edit Product", form=form,
        legend="Edit product"
    )
Esempio n. 3
0
def admin_products():
    if not g.user:
        return redirect('/')

    else:
        products = Product.query.all()
        form = ProductForm()
        #add product to db
        if form.validate_on_submit():
            product = Product.form_to_model(form)
            #converting images into bytes like object
            #prepare images to be stored
            product.prepare_to_store()
            db.session.add(product)
            db.session.commit()

            flash('Product added to database', 'success')
            return redirect(f'/{get_route()}/view-products')

        else:

            for product in products:
                if product.available:
                    product.availabile = 'Available'
                else:
                    product.availabile = 'Sold'
            for product in products:
                product.prepare_to_show()
            organized_products = Helper.organize_products(products)
            return render_template('view-products.html',
                                   form=form,
                                   rows=organized_products,
                                   route=get_route())
Esempio n. 4
0
def admin():
    form = LoginForm()
    prod = ProductForm()
    if prod.validate_on_submit():
        new = Product(name=prod.name.data, stock=prod.stock.data, image=prod.image.data, price=prod.price.data)
        db.session.add(new)
        db.session.commit()
        flash('Product Added!')
        return redirect(url_for('store'))
    return render_template('admin.html', prod=prod, form=form)
Esempio n. 5
0
def new_product():
    form = ProductForm()
    if session['whois'] == '2':
        if form.validate_on_submit():
            material = dict(MATERIAL_CHOICES)[form.material.data]
            if form.photo.data:
                picture_file = save_picture(form.photo.data)
            mycursor.execute(
                'SELECT * FROM product WHERE store_id = %s AND product_name = %s',
                (
                    session['id'],
                    form.name.data,
                ))
            exist_product = mycursor.fetchone()
            if exist_product:
                flash("There already exists this product in your store!",
                      'warning')
                return redirect(url_for('new_product'))
            else:
                if form.photo.data:
                    now = datetime.datetime.utcnow()
                    mycursor.execute(
                        'INSERT INTO product(store_id, product_name, material_type, price, color, changing_date, photo) VALUES (%s, %s, %s, %s, %s, %s, %s)',
                        (
                            session['id'],
                            form.name.data,
                            material,
                            form.price.data,
                            form.color.data,
                            now.strftime('%Y-%m-%d %H:%M:%S'),
                            picture_file,
                        ))
                    mydb.commit()
                else:
                    now = datetime.datetime.utcnow()
                    mycursor.execute(
                        'INSERT INTO product(store_id, product_name, material_type, price, color, changing_date) VALUES (%s, %s, %s, %s, %s, %s)',
                        (
                            session['id'],
                            form.name.data,
                            material,
                            form.price.data,
                            form.color.data,
                            now.strftime('%Y-%m-%d %H:%M:%S'),
                        ))
                    mydb.commit()
                flash("New product added!", 'success')
                return redirect(url_for('home'))
        return render_template('new_product.html',
                               title='New Product',
                               form=form,
                               legend='Add Product')
    else:
        flash("Firstly, you need to create a virtual store!", 'warning')
        return redirect(url_for('home'))
Esempio n. 6
0
def editProduct(prod_id):
    prodForm = ProductForm()
    prod = Product.query.get(prod_id)
    if prodForm.validate_on_submit():
        prod.name = prodForm.name.data
        prod.category = prodForm.category.data
        prod.note = prodForm.note.data
        prod.size = prodForm.size.data
        prod.unit = prodForm.unit.data
        db.session.commit()
    return redirect(url_for('shopapp.shop_main'))
Esempio n. 7
0
def editProduct(prod_id):
    prodForm = ProductForm()
    prod = Product.query.get(prod_id)
    if prodForm.validate_on_submit():
        prod.name=prodForm.name.data
        prod.category = prodForm.category.data
        prod.note=prodForm.note.data
        prod.size = prodForm.size.data
        prod.unit=prodForm.unit.data
        db.session.commit()
    return redirect(url_for('shopapp.shop_main'))
Esempio n. 8
0
def edit_product(id):
    """Return page showing all the products has to offer"""
    check_admin()
    add_product = False
    product = Product.query.get_or_404(id)
    form = ProductForm(obj=product)
    if form.validate_on_submit():
        filename = secure_filename(form.upload.data.filename)
        src = UPLOADPATH + filename
        form.upload.data.save(src)
        filemd5 = hashlib.md5()

        with open(UPLOADPATH + filename, 'rb') as f:
            for chunk in iter(lambda: f.read(4096), b""):
                filemd5.update(chunk)
        if form.available.data:
            in_stock = True
        else:
            in_stock = False
        dst = P_IMAGEPATH + filemd5.hexdigest() + '.' + filename.split('.')[1]
        if Product.query.filter_by(imgurl=filemd5.hexdigest() + '.' +
                                   filename.split('.')[1]).first() == None:

            product = Product.query.filter_by(id=id).first()
            product.common_name = form.common_name.data
            product.price = form.price.data
            orgfilename = P_IMAGEPATH + product.imgurl
            product.imgurl = filemd5.hexdigest() + '.' + filename.split('.')[1]
            product.color = form.color.data
            product.size = form.size.data
            product.available = in_stock
            product.catalog_id = Catalog.query.filter_by(
                catalog_name=str(form.catalog_id.data)).first().id
            db.session.commit()
            flash('Update product successfull.')
            copyfile(src, dst)
            os.remove(src)
            os.remove(orgfilename)
        else:
            os.remove(src)
            flash('Upload image file was in used.')
        #os.remove(os.getcwd() + '\\static\\product\\images\\'+orgfilename)
        # redirect to the departments page
        return redirect(url_for('admin.products', page=1))
    # pre setting value
    form.catalog_id.data = product.product_type
    catalogs = Catalog.get_all()
    return render_template('admin/product.html',
                           action="Edit",
                           add_product=add_product,
                           form=form,
                           product=product,
                           catalogs=catalogs,
                           title="Edit Product")
Esempio n. 9
0
def new_product():
    form = ProductForm()
    if form.validate_on_submit():
         products_collection.insert_one({'title': form.title.data, 'author': form.author.data, 'editor': form.editor.data, 
                                        'year_published': form.year_published.data, 'price': form.price.data , 'quantity': form.quantity.data,
                                        'summary': form.summary.data})
         flash('Product created!', 'success')
         app.logger.info('Product Created Sucessfully')
         return redirect(url_for('home'))
    else: 
        app.logger.info('PRODUCT NOT CREATED, ERROR')
    return render_template('create_product.html', title='New Product', form=form, legend="Update Product")
Esempio n. 10
0
def newProduct():
    prodForm = ProductForm()
    name = prodForm.name.data
    if prodForm.validate_on_submit():
        if Product.query.filter_by(name=name).first():
            flash('Product with this name already exists!', 'alert-danger')
        else:
            prod = Product(name=name, category = prodForm.category.data, note=prodForm.note.data, size = prodForm.size.data, unit=prodForm.unit.data)
            db.session.add(prod)
            db.session.commit()
            return redirect(redirect_url())
    return redirect(url_for('shopapp.shop_main')) 
Esempio n. 11
0
def add_product():
    """Return page showing all the products has to offer"""
    check_admin()
    add_product = True
    form = ProductForm()
    if form.validate_on_submit():
        filename = secure_filename(form.upload.data.filename)
        src = UPLOADPATH + filename
        form.upload.data.save(src)
        filemd5 = hashlib.md5()

        with open(UPLOADPATH + filename, 'rb') as f:
            for chunk in iter(lambda: f.read(4096), b""):
                filemd5.update(chunk)
        if form.available.data:
            in_stock = True
        else:
            in_stock = False
        dst = P_IMAGEPATH + filemd5.hexdigest() + '.' + filename.split('.')[1]
        if Product.query.filter_by(imgurl=filemd5.hexdigest() + '.' +
                                   filename.split('.')[1]).first() == None:

            copyfile(src, dst)
            os.remove(src)
            product = Product(
                common_name=form.common_name.data,
                price=form.price.data,
                imgurl=filemd5.hexdigest() + '.' + filename.split('.')[1],
                color=form.color.data,
                size=form.size.data,
                available=in_stock,
                catalog_id=Catalog.query.filter_by(
                    catalog_name=str(form.catalog_id.data)).first().id)
            db.session.add(product)
            db.session.commit()
            flash('Add product successfull.')
        else:
            os.remove(src)
            flash('Upload image file was in used.')
        # redirect to the departments page
        return redirect(url_for('admin.products', page=1))

    # form.common_name.data = product.common_name
    # form.price.data = product.price
    catalogs = Catalog.get_all()
    products = Product.get_all()
    return render_template('admin/product.html',
                           action="Add",
                           add_product=add_product,
                           form=form,
                           products=products,
                           title="Edit Product",
                           catalogs=catalogs)
Esempio n. 12
0
def update_product(product_title):
    product =  products_collection.find_one({"title": product_title})
    form = ProductForm()
    if form.validate_on_submit():
         products_collection.update( products_collection.find_one({"title": product_title}), {'title': form.title.data, 'author': form.author.data, 'editor': form.editor.data, 
                                        'year_published': form.year_published.data, 'price': form.price.data , 'quantity': form.quantity.data,
                                        'summary': form.summary.data})
         flash('Product updated!', 'success')
         app.logger.info('Product Updated Sucessfully')
         return redirect(url_for('home'))
    else:
        app.logger.info('PRODUCT NOT UPDATED, ERROR')
    return render_template('create_product.html', title='Update', form=form, legend="Update Product")
Esempio n. 13
0
def add_new_product():
    form = ProductForm()
    if form.validate_on_submit():
        new_product = Product(title=form.title.data,
                              description=form.description.data,
                              price=form.price.data,
                              img_url=form.img_url.data)
        db.session.add(new_product)
        db.session.commit()
        return redirect(url_for('index'))
    return render_template('new-product.html',
                           current_user=current_user,
                           form=form)
Esempio n. 14
0
def add_product():
    form = ProductForm()
    db_sess = db_session.create_session()
    res = db_sess.query(Category.Id, Category.Name).all()
    form.category.choices = [category[1] for category in res]
    if form.validate_on_submit():
        data.add_product(form.name.data,
                         form.description.data,
                         form.price.data,
                         form.count.data,
                         form.image,
                         form, res)
        return redirect("/add_product")
    return render_template('add_product.html', title='Добавление товара', form=form)
Esempio n. 15
0
def addproduct():
    form = ProductForm()
    if form.validate_on_submit() or request.method == 'POST':
        product = Product(productName=form.productName.data)
        try:
            db.session.add(product)
            db.session.commit()
            flash('Product has been added.', 'success')
            return redirect(url_for("products"))
        except:
            flash('Database Error.', 'danger')
            return redirect(url_for("products"))
    return render_template('addproduct.html',
                           title="Products",
                           form=form,
                           legend='Add New product')
Esempio n. 16
0
def products_list():
    form = ProductForm()
    items = warehouse.show_stock()
    if request.method == 'POST':
        if form.validate_on_submit():
            form.data.pop('csrf_token')
            warehouse.add_item(form.data)
            return redirect(url_for("products_list"))
        else:
            error = form.errors
            for field, problem in error.items():
                flash(f"{field}: {problem[0]}", 'danger')
    return render_template("product_list.html",
                           headings=headings,
                           items=items,
                           form=form)
Esempio n. 17
0
def updateproduct(productId):
    product = Product.query.get_or_404(productId)
    form = ProductForm()
    if form.validate_on_submit() or request.method == 'POST':
        product.productName = form.productName.data
        try:
            db.session.commit()
            flash('Product Name has been updated.', 'success')
            return redirect(url_for("products"))
        except:
            flash('Database Error.', 'danger')
            return redirect(url_for("products"))
    form.productName.data = product.productName
    return render_template('addproduct.html',
                           form=form,
                           legend='Update Product')
Esempio n. 18
0
def newProduct():
    prodForm = ProductForm()
    name = prodForm.name.data
    if prodForm.validate_on_submit():
        if Product.query.filter_by(name=name).first():
            flash('Product with this name already exists!', 'alert-danger')
        else:
            prod = Product(name=name,
                           category=prodForm.category.data,
                           note=prodForm.note.data,
                           size=prodForm.size.data,
                           unit=prodForm.unit.data)
            db.session.add(prod)
            db.session.commit()
            return redirect(redirect_url())
    return redirect(url_for('shopapp.shop_main'))
Esempio n. 19
0
def product_list():
    form = ProductForm()
    error = ""
    if request.method == "POST":
        if form.validate_on_submit():
            # jeśli klucz istnieje ilość i cena się nadpiszą
            ITEMS[form.data['name']] = Product(form.data['name'],
                                               form.data['unit'],
                                               form.data['unit_price'],
                                               form.data['quantity'])
        else:
            error = form.errors
        return redirect(url_for("product_list"))
    return render_template("product_list.html",
                           items=ITEMS,
                           form=form,
                           error=error)
Esempio n. 20
0
def update_product(product_id):
    form = ProductForm()
    mycursor.execute(
        'SELECT * FROM product WHERE product_id = {}'.format(product_id))
    product = mycursor.fetchone()
    mycursor.execute('SELECT * FROM store WHERE id = {}'.format(
        product['store_id']))
    store = mycursor.fetchone()
    if store['id'] != session['id']:
        abort(403)
    if form.validate_on_submit():
        new_name = form.name.data
        new_material = dict(MATERIAL_CHOICES)[form.material.data]
        new_color = form.color.data
        new_price = form.price.data
        if form.photo.data:
            new_photo = save_picture(form.photo.data)
            mycursor.execute(
                'UPDATE product SET photo = %s WHERE product_id = %s', (
                    new_photo,
                    product_id,
                ))
        now = datetime.datetime.utcnow()
        mycursor.execute(
            'UPDATE product SET product_name = %s, material_type = %s, color = %s, price = %s, changing_date = %s WHERE product_id = %s',
            (
                new_name,
                new_material,
                new_color,
                new_price,
                now.strftime('%Y-%m-%d %H:%M:%S'),
                product_id,
            ))
        mydb.commit()
        flash("Product Updated!", 'success')
        return redirect(url_for('single_product', product_id=product_id))
    if request.method == 'GET':
        form.name.data = product['product_name']
        form.material.data = product['material_type']
        form.color.data = product['color']
        form.price.data = product['price']
    return render_template('new_product.html',
                           title='Update Product',
                           form=form,
                           legend='Update Product')
Esempio n. 21
0
def home():
    form = ProductForm()
    if form.validate_on_submit():

        if so.add_product(form.name.data, form.count.data, form.min_price.data,
                          form.max_price.data, form.min_rating.data,
                          form.nrates.data):
            flash('Produkt dodany pomyślnie!', 'success')
        else:
            flash('Nie możesz dodać więcej niż 5 produktów', 'danger')
        return redirect(url_for('home'))

    form.count.data = DEFAULT_COUNT
    form.min_price.data = DEFAULT_MIN_PRICE
    form.max_price.data = DEFAULT_MAX_PRICE
    form.min_rating.data = DEFAULT_RATING
    form.nrates.data = DEFAULT_MIN_NRATES
    return render_template('home.html', form=form, products=so.in_products)
Esempio n. 22
0
def create_product():
    form = ProductForm()

    if form.validate_on_submit():
        product = Product(
            id=None,
            title=form.title.data,
            content=form.content.data,
            price=form.price.data
        )

        product.add_product(User.get_id_by_email(session['email']))

        flash(f'{form.title.data} has been created!', 'success')
        return redirect(url_for('index'))

    return render_template(
        "product/edit_product.html",
        title="Create Product", form=form,
        legend="Add new product"
    )
Esempio n. 23
0
def formBusquedaProducto():
    form = ProductForm()
    saleData = funciones.salesData()

    if form.validate_on_submit():
        data = form.product.data
        product = data.title()

        productList = funciones.consultedDataProduct(product, saleData)
        return render_template('consultas/clientes-por-producto-form.html',
                               form=form,
                               searchProd=product,
                               lista=productList)

        if len(productList) == 0:
            productList = None
        else:
            return redirect(url_for('tableClientPerProduct', product=product))

    return render_template('consultas/clientes-por-producto-form.html',
                           form=form)