.py file
rezwoan faisalfrom flask import Flask, render_template, redirect, url_for, request
from flask_bootstrap import Bootstrap
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
from flask import Flask, render_template, url_for, redirect
from flask_sqlalchemy import SQLAlchemy
from flask_login import UserMixin, login_user, LoginManager, login_required, logout_user, current_user
from flask_wtf import FlaskForm
app = Flask(__name__, template_folder='templates', static_folder='static')
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
app.config['SECRET_KEY'] = 'thisisasecretkey'
db = SQLAlchemy(app)
class Subject(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), nullable=False)
chapters = db.relationship('Chapter', backref='subject', lazy=True)
def __repr__(self):
return '<Subject %r>' % self.name
class Chapter(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), nullable=False)
subject_id = db.Column(db.Integer, db.ForeignKey('subject.id'), nullable=False)
videos = db.relationship('Video', backref='chapter', lazy=True)
def __repr__(self):
return '<Chapter %r>' % self.name
class Video(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), nullable=False)
url = db.Column(db.String(200), nullable=False)
chapter_id = db.Column(db.Integer, db.ForeignKey('chapter.id'), nullable=False)
def __repr__(self):
return '<Video %r>' % self.name
#db.create_all()
@app.route('/')
def index():
subjects = Subject.query.all()
return render_template('index.html', subjects=subjects)
@app.route('/subject/<subject_name>')
def subject(subject_name):
subject = Subject.query.filter_by(name=subject_name).first()
chapters = Chapter.query.filter_by(subject_id=subject.id).all()
return render_template('subject.html', subject=subject, chapters=chapters)
@app.route('/subject/<subject_name>/<chapter_name>')
def chapter(subject_name, chapter_name):
subject = Subject.query.filter_by(name=subject_name).first()
chapter = Chapter.query.filter_by(name=chapter_name, subject_id=subject.id).first()
videos = Video.query.filter_by(chapter_id=chapter.id).all()
return render_template('chapter.html', chapter=chapter, videos=videos)
@app.route('/upload', methods=['GET', 'POST'])
def upload():
if request.method == 'POST':
name = request.form['name']
url = request.form['url']
subject_id = request.form['subject']
chapter_id = request.form['chapter']
video = Video(name=name, url=url, chapter_id=chapter_id)
db.session.add(video)
db.session.commit()
return redirect(url_for('index'))
else:
subjects = Subject.query.all()
chapters = Chapter.query.all()
return render_template('upload.html', subjects=subjects, chapters=chapters)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=6969)
db.create_all()