add: db
This commit is contained in:
@@ -1,29 +1,91 @@
|
|||||||
from flask import Flask, render_template, request, redirect, url_for
|
from flask import Flask, render_template, request, redirect, url_for, jsonify
|
||||||
|
import sqlite3
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
items = {}
|
DB_PATH = "data.db"
|
||||||
|
|
||||||
|
conn = sqlite3.connect(DB_PATH)
|
||||||
|
cursor = conn.cursor()
|
||||||
|
|
||||||
|
cursor.execute("""
|
||||||
|
CREATE TABLE IF NOT EXISTS items (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
name TEXT NOT NULL,
|
||||||
|
time TEXT NOT NULL
|
||||||
|
)
|
||||||
|
""")
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def get_db_connection():
|
||||||
|
conn = sqlite3.connect(DB_PATH)
|
||||||
|
conn.row_factory = sqlite3.Row
|
||||||
|
return conn
|
||||||
|
|
||||||
@app.route("/")
|
@app.route("/")
|
||||||
def mainpage():
|
def mainpage():
|
||||||
|
conn = get_db_connection()
|
||||||
|
cursor = conn.cursor()
|
||||||
|
cursor.execute("SELECT name, time FROM items ORDER BY name")
|
||||||
|
items = cursor.fetchall()
|
||||||
|
conn.close()
|
||||||
return render_template('index.html', title='BS Shutdown', items=items)
|
return render_template('index.html', title='BS Shutdown', items=items)
|
||||||
|
|
||||||
@app.route('/submit', methods =['POST'])
|
@app.route('/submit', methods =['POST'])
|
||||||
def submit():
|
def submit():
|
||||||
value = request.form.get("query")
|
value = request.form.get("query")
|
||||||
time_value = request.form.get("time")
|
time_value = request.form.get("time")
|
||||||
items[value] = time_value
|
if not value or not time_value:
|
||||||
|
return redirect(url_for("mainpage"))
|
||||||
|
conn = get_db_connection()
|
||||||
|
cursor = conn.cursor()
|
||||||
|
cursor.execute('SELECT 1 FROM items WHERE name = ?', (value,))
|
||||||
|
item = cursor.fetchone()
|
||||||
|
if item:
|
||||||
|
conn.close()
|
||||||
|
return redirect(url_for("mainpage"))
|
||||||
|
cursor.execute(
|
||||||
|
"INSERT INTO items (name, time) VALUES (?, ?)",
|
||||||
|
(value, time_value)
|
||||||
|
)
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
return redirect(url_for("mainpage"))
|
return redirect(url_for("mainpage"))
|
||||||
|
|
||||||
@app.route("/delete", methods=["POST"])
|
@app.route("/delete", methods=["POST"])
|
||||||
def delete():
|
def delete():
|
||||||
value = request.form.get("item_name")
|
value = request.form.get("item_name")
|
||||||
if value in items:
|
conn = get_db_connection()
|
||||||
del items[value]
|
cursor = conn.cursor()
|
||||||
|
cursor.execute('SELECT 1 FROM items WHERE name = ?', (value,))
|
||||||
|
item = cursor.fetchone()
|
||||||
|
if not item:
|
||||||
|
conn.close()
|
||||||
|
return redirect(url_for("mainpage"))
|
||||||
|
cursor.execute(
|
||||||
|
"DELETE FROM items WHERE name = ?",
|
||||||
|
(value,)
|
||||||
|
)
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
return redirect(url_for("mainpage"))
|
return redirect(url_for("mainpage"))
|
||||||
|
|
||||||
@app.route("/lookup", methods=["POST"])
|
@app.route("/lookup", methods=["POST"])
|
||||||
def lookup():
|
def lookup():
|
||||||
name = request.form.get("name")
|
name = request.form.get("name")
|
||||||
if name in items:
|
|
||||||
return jsonify(items[name]), 200
|
conn = get_db_connection()
|
||||||
return jsonify({"error": "machine isn't in the list"}), 404
|
cursor = conn.cursor()
|
||||||
|
cursor.execute(
|
||||||
|
"SELECT name, time FROM items WHERE name = ?",
|
||||||
|
(name,)
|
||||||
|
)
|
||||||
|
item = cursor.fetchone()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
if item:
|
||||||
|
return jsonify({"name": item["name"], "time": item["time"]}), 200
|
||||||
|
else:
|
||||||
|
return jsonify({"error": "Not found"}), 404
|
||||||
@@ -35,11 +35,11 @@
|
|||||||
<div class="card bg-dark bg-opacity-75 p-3">
|
<div class="card bg-dark bg-opacity-75 p-3">
|
||||||
<h5 class="text-white mb-3">Liste des éléments</h5>
|
<h5 class="text-white mb-3">Liste des éléments</h5>
|
||||||
<div class="table-items">
|
<div class="table-items">
|
||||||
{% for name, time in items.items() %}
|
{% for item in items %}
|
||||||
<div class="d-flex justify-content-between align-items-center py-2">
|
<div class="d-flex justify-content-between align-items-center py-2">
|
||||||
<span class="text-white">{{ name }}</span>
|
<span class="text-white">{{ item.name }}</span>
|
||||||
|
|
||||||
<span class="text-white">{{ time }}</span>
|
<span class="text-white">{{ item.time }}</span>
|
||||||
|
|
||||||
<form method="post" action="/delete" class="m-0 p-0">
|
<form method="post" action="/delete" class="m-0 p-0">
|
||||||
<input type="hidden" name="item_name" value="{{ name }}">
|
<input type="hidden" name="item_name" value="{{ name }}">
|
||||||
|
|||||||
Reference in New Issue
Block a user