mirror of
https://github.com/RYGhub/song.git
synced 2024-11-22 04:54:20 +00:00
45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
|
import datetime as dt
|
||
|
from flask import Flask, session, request, render_template, abort, redirect, url_for
|
||
|
from flask_sqlalchemy import SQLAlchemy
|
||
|
|
||
|
|
||
|
app = Flask(__name__)
|
||
|
db = SQLAlchemy(app)
|
||
|
|
||
|
app.secret_key = "4pippo"
|
||
|
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite'
|
||
|
|
||
|
|
||
|
class Song(db.Model):
|
||
|
__tablename__ = "song"
|
||
|
|
||
|
id = db.Column(db.Integer, primary_key=True)
|
||
|
time = db.Column(db.DateTime, nullable=False)
|
||
|
word = db.Column(db.String, nullable=False)
|
||
|
|
||
|
|
||
|
@app.route('/', methods=["GET", "POST"])
|
||
|
def page_main():
|
||
|
if request.method == "GET":
|
||
|
if session.get("last_entry") and session["last_entry"] < dt.datetime.now() + dt.timedelta(1):
|
||
|
done = True
|
||
|
else:
|
||
|
done = False
|
||
|
session["last_entry"] = None
|
||
|
last_words = db.engine.execute("SELECT * FROM song ORDER BY time DESC LIMIT 3").fetchall()
|
||
|
last_words.reverse()
|
||
|
return render_template("song.html", last_words=last_words, done=done)
|
||
|
elif request.method == "POST":
|
||
|
if session.get("last_entry") and session["last_entry"] < dt.datetime.now() + dt.timedelta(1):
|
||
|
abort(403)
|
||
|
new_word = Song(time=dt.datetime.now(), word=request.form["word"].split(" ")[0])
|
||
|
db.session.add(new_word)
|
||
|
db.session.commit()
|
||
|
session["last_entry"] = dt.datetime.now()
|
||
|
return redirect(url_for("page_main"))
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
db.create_all()
|
||
|
app.run()
|