0% found this document useful (0 votes)
22 views19 pages

From Flask impo-WPS Office

This document defines Flask routes and database queries for an e-commerce site admin dashboard. It includes routes for products, categories, orders, users and authentication. Database queries retrieve and manipulate data to display on templates.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views19 pages

From Flask impo-WPS Office

This document defines Flask routes and database queries for an e-commerce site admin dashboard. It includes routes for products, categories, orders, users and authentication. Database queries retrieve and manipulate data to display on templates.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 19

from flask import Flask, redirect, render_template, flash, url_for,request, session

import psycopg2

from model import get_db_connection

app = Flask(__name__)

app.secret_key = 'blackdot25'

@app.route('/')

def index():

conn = get_db_connection()

cur = conn.cursor()

if session:

cur.execute("SELECT * FROM products;")

products = cur.fetchall()

cur.execute("SELECT * FROM products ORDER BY price DESC;")

top_products = cur.fetchall()

else:

products, top_products=[],[]

redirect(url_for('login'))

return render_template('index.html', products=products,top_products=top_products)

@app.route('/admin')

def admin():

conn = get_db_connection()

cur = conn.cursor()
cur.execute("SELECT count(id) FROM users;")

user_count = cur.fetchall()

cur.execute("SELECT count(id) FROM orders;")

order_count = cur.fetchall()

cur.execute("SELECT * FROM orders;")

orders = cur.fetchall()

cur.execute("SELECT category,count(category) FROM products GROUP BY category;")

category = cur.fetchall()

cur.execute("SELECT count(*) FROM reviews;")

review_count = cur.fetchall()

product_name, user_name = [],[]

for order in orders:

cur.execute("SELECT name FROM products WHERE id="+str(order[2])+";")

product_name.append(cur.fetchone())

cur.execute("SELECT email FROM users WHERE id="+str(order[1])+";")

user_name.append(cur.fetchone())

length = len(orders)

if length > 15:


length=15

return render_template('admin/index.html',user_count=user_count[0][0],
order_count=order_count[0][0],review_count=review_count[0][0], length=length,
orders=orders,product_name=product_name,user_name=user_name,categories=category)

@app.route('/admin/users')

def adminUsers():

conn = get_db_connection()

cur = conn.cursor()

cur.execute("SELECT * FROM users;")

users = cur.fetchall()

admin,badge = [],[]

for user in users:

if user[3]:

admin.append('administrator')

badge.append('success')

else:

admin.append('Client')

badge.append('warning')

return
render_template('admin/users.html',users=users,badge=badge,admin=admin,length=len(admin))

@app.route('/admin/products')

def adminProducts():

conn = get_db_connection()
cur = conn.cursor()

cur.execute("SELECT * FROM products;")

products = cur.fetchall()

cur.execute("SELECT name FROM category;")

category = cur.fetchall()

length = len(category)

print(category)

return render_template('admin/products.html', products=products, category=category,


length=length)

@app.route('/admin/categories')

def adminCategory():

conn = get_db_connection()

cur = conn.cursor()

cur.execute("SELECT * FROM category;")

category = cur.fetchall()

length = len(category)

count =[]

for categorie in category:

print(categorie[0])
cur.execute("SELECT count(*) FROM products WHERE category='"+str(categorie[0])+"' GROUP BY
category;")

count.append(cur.fetchone())

print(count)

return render_template('admin/category.html',length=length,category=category, count=count)

@app.route('/admin/category/add', methods=["GET","POST"])

def addCategory():

if request.method == 'POST':

category_name = request.form['name']

conn = get_db_connection()

cur = conn.cursor()

try:

cur.execute("INSERT INTO category(name) VALUES ('"+str(category_name)+"');")

conn.commit()

print('categorie ajoutée')

flash("category created successfully!")

return redirect(url_for('adminCategory'))

except Exception as e:

print("Erreur :", e)

return render_template('admin/category.html')

@app.route('/admin/orders')

def adminOrders():
return render_template('admin/orders.html')

@app.route('/admin/category/remove/<string:name>')

def removeCategory(name):

conn = get_db_connection()

cur = conn.cursor()

print("La categorie à supprimer est ", name)

try:

cur.execute("DELETE FROM category WHERE name='Categorie4';")

conn.commit()

return redirect(url_for('adminCategory'))

except Exception as e:

print("Erreur :",e)

return render_template('/admin/category.html')

@app.route('/admin/reviews')

def adminReviews():

return render_template('admin/reviews.html')

### Operations sur les produits

@app.route('/admin/products/add', methods=["GET","POST"])
def addProduct():

if request.method == 'POST':

product_name = request.form['name']

product_categorie = request.form['category']

product_price = request.form['price']

product_description = request.form['description']

image = request.files['image_path']

if image:

image_path = image.filename

else:

image_path = ""

conn = get_db_connection()

cur = conn.cursor()

try:

cur.execute("INSERT INTO products(name, category, price, description,image_path) VALUES (%s,


%s,%s,%s,%s)",(product_name,product_categorie,product_price,product_description,image_path))

conn.commit()

flash("Product created successfully!")

return redirect(url_for('adminProducts'))

except Exception as e:

print("Erreur :", e)

return render_template('/admin/products.html')
@app.route('/admin/product/remove/<int:id>')

def removeProduct(id):

conn = get_db_connection()

cur = conn.cursor()

try:

cur.execute("DELETE FROM products WHERE id="+str(id)+";")

conn.commit()

print("Produits supprimé.......")

return redirect(url_for('adminProducts'))

except Exception as e:

print("Erreur :",e)

return render_template('/admin/products.html')

@app.route('/admin/product/update/<int:id>', methods=["GET","POST"])

def updateProduct(id):

if request.method == 'POST':

product_name = request.form['name']

product_categorie = request.form['categorie']

product_price = request.form['price']

product_description = request.form['description']

image_path = request.form['image_path']

conn = get_db_connection()
cur = conn.cursor()

## Ancienne valeur du produit

cur.execute("SELECT * FROM products WHERE id=%s",id)

product = cur.fetchone()[0]

# Test de validité

try:

cur.execute("UPDATE products SET name=%s, category=%s , price=%s, description=


%s,image_path=%s WHERE id=%s",
(product_name,product_categorie,product_price,product_description,image_path,id))

cur.fetchall()

return redirect('admin/products.html')

except Exception as e:

print("Erreur :",e)

return render_template('admin/products.html', name=product[0], category=product[1],


price=product[2], description=product[3])

### operations sur les commandes

@app.route('/admin/orders/delete/<int:id>')

def deleteOrder(id):

conn = get_db_connection()

cur = conn.cursor()

try:

cur.execute("DELETE FROM orders WHERE id=%s", id)


cur.fetchall()

return redirect('admin/index.html')

except Exception as e:

print("Erreur :",e)

return render_template('admin/index.html')

###Operations sur les utilsateurs

@app.route('/admin/users/delete/<int:id>')

def deleteUser(id):

conn = get_db_connection()

cur = conn.cursor()

try:

cur.execute("DELETE FROM users WHERE id="+str(id)+";")

cur.fetchall()

return redirect(url_for('adminUser'))

except Exception as e:

print("Erreur :",e)

return render_template('admin/users.html')

@app.route('/admin/users/add', methods=["GET","POST"])

def addUser():

if request.method == 'POST':

email = request.form['email']
password = request.form['password']

admin = request.form['admin']

print(admin)

if admin=='Administrator':

isadmin=True

else:

isadmin=False

conn = get_db_connection()

cur = conn.cursor()

try:

cur.execute("INSERT INTO users (email, password,isadmin) VALUES(%s,%s,%s)",


(email,password,isadmin))

conn.commit()

return redirect(url_for('adminUsers'))

except Exception as e:

print("Erreur produite: ",e)

return render_template('admin/users.html')

@app.route('/admin/users/update/<int:id>', methods=["GET","POST"])

def updateUser(id):

return render_template('admin/users.html')

### Operations sur les revues utilsateurs


@app.route('/login', methods=['GET','POST'])

def login():

if request.method == 'POST':

email = request.form['email']

password = request.form['password']

conn = get_db_connection()

cur = conn.cursor()

cur.execute("SELECT * FROM users WHERE email='" +str(email) +"';")

user = cur.fetchall()

if user:

print('connection au compte')

session['user'] = user

print(session['user'])

if user[0][-1] == True:

return redirect(url_for('admin'))

return redirect(url_for('index'))

else:

flash("Cet utilisateur n'existe pas !")

return render_template('login.html')
@app.route('/register',methods=["GET", "POST"])

def register():

if request.method == 'POST':

email = request.form['email']

password1 = request.form['password1']

password2 = request.form['password2']

conn = get_db_connection()

cur = conn.cursor()

if password1 != password2:

flash('Invalid password')

else:

try:

cur.execute("INSERT INTO users(email,password) VALUES(%s,%s);", (email, password1))

conn.commit()

print("Account created successfully")

return redirect(url_for('login'))

except Exception as e:

print(e)

#return redirect(url_for('login'))

return render_template('register.html')

@app.route('/category')

def category():
conn = get_db_connection()

cur = conn.cursor()

cur.execute("SELECT * FROM category;")

category = cur.fetchall()

cur.execute("SELECT * FROM products GROUP BY category,id;")

products = cur.fetchall()

return render_template('category.html', category = category, products=products)

@app.route('/products/<int:product_id>')

def product(product_id):

conn = get_db_connection()

cur = conn.cursor()

cur.execute("SELECT * FROM products WHERE id="+str(product_id)+";")

product = cur.fetchone()

cur.execute("SELECT * FROM reviews WHERE product_id="+str(product_id)+";")

reviews = cur.fetchall()

length = len(reviews)

user = []

count = 0
session['product'] = product_id

for review in reviews:

cur.execute("SELECT email FROM users WHERE id="+str(review[1])+";")

user.append(cur.fetchone()[0][:-10])

count += review[3]

count_user = len(user)

count_rating = count/count_user

return render_template('products.html', product=product,user=user, length=length, reviews=reviews,


count_user=count_user, count_rating=count_rating)

@app.route('/cart/')

def cart():

conn = get_db_connection()

cur = conn.cursor()

user =session['user']

print("Id de l'utilisateur:",user[0][0])

cur.execute("SELECT * FROM carts WHERE user_id="+str(user[0][0])+";")

carts = cur.fetchall()

length = len(carts)

products = []

for cart in carts:

print("Carte d'enregistrement", cart)

cur.execute("SELECT * FROM products WHERE id="+str(cart[2]))

products.append(cur.fetchone())

return render_template("cart.html", products=products, length=length, carts=carts)


@app.route('/reviews/add/',methods=["GET", "POST"])

def addReviews():

print("Product idenetifafs")

if request.method == 'POST':

conn = get_db_connection()

cur = conn.cursor()

user = session['user']

user_id = user[0][0]

product_id = session['product']

print("L'utilisateur est: ",user)

print(product_id)

rating = request.form['rating']

comment = request.form['comment']

try:

print("Test de connexion")

cur.execute("INSERT INTO reviews(user_id,product_id,rating,comment) VALUES("+str(user_id)


+","+str(product_id)+","+str(rating)+",'"+str(comment)+"');")

conn.commit()

print("Test de connexion2")

return redirect('/products/'+str(product_id))

except Exception as e:

print("Erreur produite: ",e)


return render_template("products.html")

@app.route('/cart/add/<int:product_id>')

def addcart(product_id):

user =session['user']

product_id = session['product']

user_id = user[0][0]

conn = get_db_connection()

cur = conn.cursor()

try:

print("Connexion à la base de données 1111")

cur.execute("INSERT INTO carts(user_id, product_id,quantity) VALUES("+str(user_id)+","


+str(product_id)+",1);")

print("Connexion à la base de données")

conn.commit()

return redirect(url_for('cart'))

except Exception as e:

print("Error: ", e)

return render_template('products.html')

@app.route('/order/<int:order_id>')

def order(order_id):
pass

@app.route('/search', methods=['GET', 'POST'])

def search():

if request.method == 'POST':

"Fonction de recherche de produit"

conn = get_db_connection()

cur = conn.cursor()

items = request.form['items']

try:

cur.execute("SELECT * FROM products WHERE name='"+str(items)+"';")

product = cur.fetchone()

print(product)

cur.execute("SELECT * FROM category WHERE name='"+str(items)+"';", items)

category = cur.fetchone()

if product:

print("Produit trouvé")

return redirect('/products/'+str(product[0]))

elif category:

print("Category trouvé")
return redirect(url_for(endpoint='category'))

else:

print("Aucun produit !!!!!!!")

return redirect('404.html')

except Exception as e:

print(e)

return render_template('index.html')

if __name__ == '__main__':

app.run(debug=True)

You might also like