commit d6f3e5cb1af3465e80c83700fb6465b6442cf3d6 Author: adrien Date: Thu Jun 29 07:55:11 2023 +0200 fc diff --git a/app.py b/app.py new file mode 100644 index 0000000..0fb0099 --- /dev/null +++ b/app.py @@ -0,0 +1,122 @@ +from flask import Flask, render_template, request, jsonify +import sqlite3 +import random +import string +from datetime import datetime, timedelta + +app = Flask(__name__) +app.debug = True +app.config['SECRET_KEY'] = 'your-secret-key' + +# Fonction pour générer un code aléatoire +def generate_code(): + code = ''.join(random.choices(string.digits, k=6)) + return code + +# Fonction pour créer une connexion à la base de données +def get_db_connection(): + conn = sqlite3.connect('database.db') + conn.row_factory = sqlite3.Row + + # Créer la table "codes" si elle n'existe pas + conn.execute(''' + CREATE TABLE IF NOT EXISTS codes ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + code TEXT NOT NULL, + comment TEXT, + active INTEGER, + expiration TIMESTAMP + ) + ''') + conn.commit() + + return conn + +# Route de la page d'accueil +@app.route('/') +def home(): + conn = get_db_connection() + codes = conn.execute('SELECT * FROM codes').fetchall() + conn.close() + return render_template('index.html', codes=codes) + +# Route pour générer un nouveau code +@app.route('/generate_code', methods=['POST']) +def generate_code_route(): + comment = request.form['comment'] + eternal = request.form.get('eternal', False) + + conn = get_db_connection() + code = generate_code() + expiration = None if eternal else (datetime.now() + timedelta(days=365)) + conn.execute('INSERT INTO codes (code, comment, active, expiration) VALUES (?, ?, 1, ?)', (code, comment, expiration)) + conn.commit() + conn.close() + + return 'Code généré : ' + code + +# Route pour désactiver ou supprimer un code +@app.route('/update_code', methods=['POST']) +def update_code(): + code_id = request.form['code_id'] + action = request.form['action'] + + conn = get_db_connection() + if action == 'disable': + conn.execute('UPDATE codes SET active = 0 WHERE id = ?', (code_id,)) + elif action == 'delete': + conn.execute('DELETE FROM codes WHERE id = ?', (code_id,)) + conn.commit() + conn.close() + + return 'OK' + +@app.route('/process_action', methods=['POST']) +def process_action(): + group_action = request.form.get('group_action') + selected_codes = request.form.getlist('selected_codes') + conn = get_db_connection() + if group_action == 'disable_selected': + # Traiter l'action de désactivation pour les codes sélectionnés + for code_id in selected_codes: + conn.execute('UPDATE codes SET active = 0 WHERE id = ?', (code_id,)) + + elif group_action == 'delete_selected': + # Traiter l'action de suppression pour les codes sélectionnés + for code_id in selected_codes: + conn.execute('DELETE FROM codes WHERE id = ?', (code_id,)) + + conn.commit() + conn.close() + + return 'OK' + + + +# Route pour vérifier un code +@app.route('/key/') +def verify_code(code): + conn = get_db_connection() + result = conn.execute('SELECT * FROM codes WHERE code = ? AND active = 1', (code,)).fetchone() + + if result is None or not result['active']: + unlock = False + elif result["expiration"] is None: + unlock = True + else: + unlock = True + expiration = datetime.strptime(result["expiration"], '%Y-%m-%d %H:%M:%S.%f') + if expiration > datetime.now() + timedelta(minutes=5): + expiration = datetime.now() + timedelta(minutes=5) + conn.execute('UPDATE codes SET expiration = ? WHERE code = ?', (expiration, code)) + conn.commit() + elif expiration < datetime.now(): + conn.execute('UPDATE codes SET active = 0 WHERE code = ?', (code,)) + conn.commit() + unlock = False + conn.close() + + return jsonify({'unlock': unlock}) + +if __name__ == '__main__': + app.run() diff --git a/database.db b/database.db new file mode 100644 index 0000000..0ac7d94 Binary files /dev/null and b/database.db differ diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..8ab6294 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +flask \ No newline at end of file diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..7e3b053 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,101 @@ + + + + Gestion codes déverouillage "Boite aux colis" + + + +
+

Gestion codes déverouillage "Boite aux colis"

+ +
+
+ + +
+
+ + +
+ +
+ +

Codes actifs

+
+ + + + + + + + + + + + {% for code in codes %} + {% if code['active'] %} + + + + + + + + {% endif %} + {% endfor %} + +
CodeCommentaireDate d'expirationActionsSélectionner
{{ code['code'] }}{{ code['comment'] }}{{ code['expiration'] }} + + + + + + + +
+ + + + + +

Codes inactifs

+
+ + + + + + + + + + + + {% for code in codes %} + {% if not code['active'] %} + + + + + + + + {% endif %} + {% endfor %} + +
CodeCommentaireDate d'expirationActionsSélectionner
{{ code['code'] }}{{ code['comment'] }}{{ code['expiration'] }} + + + + + + + +
+ + + +
+ +