Seller Panel
from flask import Flask, render_template, request, redirect, url_for, session
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///seller_panel.db'
db = SQLAlchemy(app)
class Seller(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(100), unique=True)
email = db.Column(db.String(100), unique=True)
password = db.Column(db.String(100))
products = db.relationship('Product', backref='seller')
def __repr__(self):
return f'
'
class Product(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(255))
description = db.Column(db.Text)
price = db.Column(db.Float)
seller_id = db.Column(db.Integer, db.ForeignKey('seller.id'))
def __repr__(self):
return f''
@app.route('/', methods=['GET', 'POST'])
def index():
if not session.get('logged_in'):
return redirect(url_for('login'))
seller = Seller.query.filter_by(username=session['username']).first()
products = Product.query.filter_by(seller_id=seller.id).all()
return render_template('index.html', seller=seller, products=products)
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
seller = Seller.query.filter_by(username=username).first()
if seller is not None and seller.check_password(password):
session['logged_in'] = True
session['username'] = username
return redirect(url_for('index'))
else:
flash('Invalid username or password.')
return render_template('login.html')
@app.route('/logout')
def logout():
session.clear()
return redirect(url_for('index'))
@app.route('/product/new', methods=['GET', 'POST'])
def new_product():
if not session.get('logged_in'):
return redirect(url_for('login'))
if request.method == 'POST':
title = request.form['title']
description = request.form['description']
price = request.form['price']
seller = Seller.query.filter_by(username=session['username']).first()
product = Product(title=title, description=description, price=price, seller_id=seller.id)
db.session.add(product)
db.session.commit()
return redirect(url_for('index'))
return render_template('new_product.html')
if __name__ == '__main__':
app.run(debug=True)
{% if seller %}
Welcome, {{ seller.username }}!
Your Products
{% for product in products %}