Someone shared me this code pls explain :
from flask import Flask, render_template, request, redirect, url_for, flash, session, abort
from flask_sqlalchemy import SQLAlchemy
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, TextAreaField, SubmitField
from wtforms.validators import DataRequired, Length
from passlib.hash import bcrypt
from datetime import datetime
app = Flask(name)
app.config['SECRET_KEY'] = 'replace-this-with-a-secure-random-string'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///progsite.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
# ---------- Models ----------
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
password_hash = db.Column(db.String(255), nullable=False)
is_admin = db.Column(db.Boolean, default=False)
def verify_password(self, password):
return bcrypt.verify(password, self.password_hash)
class Problem(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(200), nullable=False)
statement = db.Column(db.Text, nullable=False)
sample_input = db.Column(db.Text, default='')
sample_output = db.Column(db.Text, default='')
created_at = db.Column(db.DateTime, default=datetime.utcnow)
class Submission(db.Model):
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
problem_id = db.Column(db.Integer, db.ForeignKey('problem.id'))
code = db.Column(db.Text, nullable=False)
verdict = db.Column(db.String(50), default='Pending')
created_at = db.Column(db.DateTime, default=datetime.utcnow)
user = db.relationship('User', backref='submissions')
problem = db.relationship('Problem', backref='submissions')
# ---------- Forms ----------
class RegisterForm(FlaskForm):
username = StringField('Username', validators=[DataRequired(), Length(min=3, max=80)])
password = PasswordField('Password', validators=[DataRequired(), Length(min=6)])
submit = SubmitField('Register')
class LoginForm(FlaskForm):
username = StringField('Username', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
submit = SubmitField('Login')
class ProblemForm(Flask