.py file

.py file

rezwoan faisal

from 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()

Report Page