From Flask impo-WPS Office
From Flask impo-WPS Office
import psycopg2
app = Flask(__name__)
app.secret_key = 'blackdot25'
@app.route('/')
def index():
conn = get_db_connection()
cur = conn.cursor()
if session:
products = cur.fetchall()
top_products = cur.fetchall()
else:
products, top_products=[],[]
redirect(url_for('login'))
@app.route('/admin')
def admin():
conn = get_db_connection()
cur = conn.cursor()
cur.execute("SELECT count(id) FROM users;")
user_count = cur.fetchall()
order_count = cur.fetchall()
orders = cur.fetchall()
category = cur.fetchall()
review_count = cur.fetchall()
product_name.append(cur.fetchone())
user_name.append(cur.fetchone())
length = len(orders)
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()
users = cur.fetchall()
admin,badge = [],[]
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()
products = cur.fetchall()
category = cur.fetchall()
length = len(category)
print(category)
@app.route('/admin/categories')
def adminCategory():
conn = get_db_connection()
cur = conn.cursor()
category = cur.fetchall()
length = len(category)
count =[]
print(categorie[0])
cur.execute("SELECT count(*) FROM products WHERE category='"+str(categorie[0])+"' GROUP BY
category;")
count.append(cur.fetchone())
print(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:
conn.commit()
print('categorie ajoutée')
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()
try:
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')
@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:
conn.commit()
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:
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()
product = cur.fetchone()[0]
# Test de validité
try:
cur.fetchall()
return redirect('admin/products.html')
except Exception as e:
print("Erreur :",e)
@app.route('/admin/orders/delete/<int:id>')
def deleteOrder(id):
conn = get_db_connection()
cur = conn.cursor()
try:
return redirect('admin/index.html')
except Exception as e:
print("Erreur :",e)
return render_template('admin/index.html')
@app.route('/admin/users/delete/<int:id>')
def deleteUser(id):
conn = get_db_connection()
cur = conn.cursor()
try:
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:
conn.commit()
return redirect(url_for('adminUsers'))
except Exception as 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')
def login():
if request.method == 'POST':
email = request.form['email']
password = request.form['password']
conn = get_db_connection()
cur = conn.cursor()
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:
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:
conn.commit()
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()
category = cur.fetchall()
products = cur.fetchall()
@app.route('/products/<int:product_id>')
def product(product_id):
conn = get_db_connection()
cur = conn.cursor()
product = cur.fetchone()
reviews = cur.fetchall()
length = len(reviews)
user = []
count = 0
session['product'] = product_id
user.append(cur.fetchone()[0][:-10])
count += review[3]
count_user = len(user)
count_rating = count/count_user
@app.route('/cart/')
def cart():
conn = get_db_connection()
cur = conn.cursor()
user =session['user']
print("Id de l'utilisateur:",user[0][0])
carts = cur.fetchall()
length = len(carts)
products = []
products.append(cur.fetchone())
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(product_id)
rating = request.form['rating']
comment = request.form['comment']
try:
print("Test de connexion")
conn.commit()
print("Test de connexion2")
return redirect('/products/'+str(product_id))
except Exception as e:
@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:
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
def search():
if request.method == 'POST':
conn = get_db_connection()
cur = conn.cursor()
items = request.form['items']
try:
product = cur.fetchone()
print(product)
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:
return redirect('404.html')
except Exception as e:
print(e)
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)