54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
from flask import Flask, jsonify, request, render_template
|
|
import json
|
|
import os
|
|
|
|
app = Flask(__name__)
|
|
|
|
LEADERBOARD_FILE = './data/leaderboard.json'
|
|
|
|
if not os.path.exists(LEADERBOARD_FILE):
|
|
with open(LEADERBOARD_FILE, 'w') as f:
|
|
json.dump([], f)
|
|
|
|
def read_leaderboard():
|
|
with open(LEADERBOARD_FILE, 'r') as f:
|
|
return json.load(f)
|
|
|
|
def write_leaderboard(data):
|
|
with open(LEADERBOARD_FILE, 'w') as f:
|
|
json.dump(data, f, indent=4)
|
|
|
|
@app.route('/api/leaderboard', methods=['POST'])
|
|
def add_to_leaderboard():
|
|
new_entry = request.json
|
|
if not new_entry or 'name' not in new_entry or 'score' not in new_entry:
|
|
return jsonify({'error': 'Name and score are required'}), 400
|
|
|
|
leaderboard = read_leaderboard()
|
|
leaderboard.append(new_entry)
|
|
write_leaderboard(leaderboard)
|
|
|
|
return jsonify({'message': 'Added successfully', 'leaderboard': leaderboard}), 201
|
|
|
|
@app.route('/api/leaderboard', methods=['GET'])
|
|
def get_leaderboard():
|
|
leaderboard = read_leaderboard()
|
|
leaderboard_sorted = sorted(leaderboard, key=lambda x: x['score'], reverse=True)
|
|
return jsonify({'leaderboard': leaderboard_sorted})
|
|
|
|
@app.route('/questions')
|
|
def show_questions():
|
|
with open('./data/quizz.json', 'r') as file:
|
|
questions = json.load(file)
|
|
return render_template('quiz.html', questions=questions)
|
|
|
|
@app.route('/softwares_data')
|
|
def show_questions():
|
|
with open('./data/softwares.json', 'r') as file:
|
|
softwares = json.load(file)
|
|
return render_template('pokemon.html', data=softwares)
|
|
|
|
if __name__ == '__main__':
|
|
app.run(debug=True, port=8080)
|
|
|