diff --git a/CTFd/admin.py b/CTFd/admin.py index a4f532a..05a18b3 100644 --- a/CTFd/admin.py +++ b/CTFd/admin.py @@ -450,7 +450,39 @@ def init_admin(app): least_solved=least_solved_chal ) + @app.route('/admin/wrong_keys/', methods=['GET']) + @admins_only + def admin_wrong_key(page='1'): + page = abs(int(page)) + results_per_page = 50 + page_start = results_per_page * ( page - 1 ) + page_end = results_per_page * ( page - 1 ) + results_per_page + wrong_keys = WrongKeys.query.add_columns(WrongKeys.flag, WrongKeys.team, WrongKeys.date,\ + Challenges.name.label('chal_name'), Teams.name.label('team_name')).\ + join(Challenges).join(Teams).order_by('team_name ASC').slice(page_start, page_end).all() + + wrong_count = db.session.query(db.func.count(WrongKeys.id)).first()[0] + pages = int(wrong_count / results_per_page) + (wrong_count % results_per_page > 0) + + return render_template('admin/wrong_keys.html', wrong_keys=wrong_keys, pages=pages) + + @app.route('/admin/correct_keys/', methods=['GET']) + @admins_only + def admin_correct_key(page='1'): + page = abs(int(page)) + results_per_page = 50 + page_start = results_per_page * (page - 1) + page_end = results_per_page * (page - 1) + results_per_page + + solves = Solves.query.add_columns(Solves.teamid, Solves.date,\ + Challenges.name.label('chal_name'), Teams.name.label('team_name')).\ + join(Challenges).join(Teams).order_by('team_name ASC').slice(page_start, page_end).all() + + solve_count = db.session.query(db.func.count(Solves.id)).first()[0] + pages = int(solve_count / results_per_page) + (solve_count % results_per_page > 0) + + return render_template('admin/correct_keys.html', solves=solves, pages=pages) @app.route('/admin/fails/', methods=['GET']) @admins_only diff --git a/templates/admin/correct_keys.html b/templates/admin/correct_keys.html new file mode 100644 index 0000000..9539d9f --- /dev/null +++ b/templates/admin/correct_keys.html @@ -0,0 +1,42 @@ +{% extends "admin/base.html" %} + +{% block content %} + +
+

Correct Key Submissions

+ + + + + + + + + + {% for solve in solves %} + + + + + + {% endfor %} + +
Team + Challenge + Date +
{{ solve.team_name }} + {{ solve.chal_name }}{{ solve.date }}
+ {% if pages > 1 %} +
Page +
+ {% for page in range(1, pages + 1) %} + {{ page }} + {% endfor %} + +
+ {% endif %} +
+{% endblock %} + +{% block scripts %} +{% endblock %} diff --git a/templates/admin/statistics.html b/templates/admin/statistics.html index 45580cf..d35f1a1 100644 --- a/templates/admin/statistics.html +++ b/templates/admin/statistics.html @@ -6,8 +6,8 @@

Statistics

{{ team_count }} teams registered

-

{{ wrong_count }} wrong keys submitted

-

{{ solve_count }} right keys submitted

+

{{ wrong_count }} wrong keys submitted

+

{{ solve_count }} right keys submitted

{{ challenge_count }} challenges

{% if most_solved %}

Most solved: {{ most_solved[0].chal.name }} with {{ most_solved[1] }} solves

diff --git a/templates/admin/wrong_keys.html b/templates/admin/wrong_keys.html new file mode 100644 index 0000000..a6fc6d6 --- /dev/null +++ b/templates/admin/wrong_keys.html @@ -0,0 +1,45 @@ +{% extends "admin/base.html" %} + +{% block content %} + +
+

Incorrect Key Submissions

+ + + + + + + + + + + {% for wrong_key in wrong_keys %} + + + + + + + {% endfor %} + +
Team + Challenge + Date + Submitted Key +
{{ wrong_key.team_name }} + {{ wrong_key.chal_name }}{{ wrong_key.date }}{{ wrong_key.flag }}
+ {% if pages > 1 %} +
Page +
+ {% for page in range(1, pages + 1) %} + {{ page }} + {% endfor %} + +
+ {% endif %} +
+{% endblock %} + +{% block scripts %} +{% endblock %}