mirror of https://github.com/JohnHammond/CTFd.git
view incorrect/correct key submission interfaces
parent
945e2148be
commit
f660a760e6
|
@ -450,7 +450,39 @@ def init_admin(app):
|
|||
least_solved=least_solved_chal
|
||||
)
|
||||
|
||||
@app.route('/admin/wrong_keys/<page>', 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/<page>', 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/<teamid>', methods=['GET'])
|
||||
@admins_only
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
{% extends "admin/base.html" %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
<h1>Correct Key Submissions</h1>
|
||||
<table id="teamsboard">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="text-center"><b>Team</b>
|
||||
</td>
|
||||
<td class="text-center"><b>Challenge</b>
|
||||
</td>
|
||||
<td class="text-center"><b>Date</b>
|
||||
</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for solve in solves %}
|
||||
<tr>
|
||||
<td class="text-center"><a href="/admin/team/{{ solve.teamid }}">{{ solve.team_name }}</a>
|
||||
<td class="text-center">{{ solve.chal_name }}</td>
|
||||
<td class="text-center">{{ solve.date }}</td>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% if pages > 1 %}
|
||||
<div class="text-center">Page
|
||||
<br>
|
||||
{% for page in range(1, pages + 1) %}
|
||||
<a href="{{ page }}">{{ page }}</a>
|
||||
{% endfor %}
|
||||
<a href="">
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
{% endblock %}
|
|
@ -6,8 +6,8 @@
|
|||
<h1>Statistics</h1>
|
||||
|
||||
<h3><b>{{ team_count }}</b> teams registered</h3>
|
||||
<h3><b>{{ wrong_count }}</b> wrong keys submitted</h3>
|
||||
<h3><b>{{ solve_count }}</b> right keys submitted</h3>
|
||||
<h3><b>{{ wrong_count }}</b> <a href="wrong_keys/1">wrong keys</a> submitted</h3>
|
||||
<h3><b>{{ solve_count }}</b> <a href="correct_keys/1">right keys</a> submitted</h3>
|
||||
<h3><b>{{ challenge_count }}</b> challenges</h3>
|
||||
{% if most_solved %}
|
||||
<h3>Most solved: <b>{{ most_solved[0].chal.name }}</b> with {{ most_solved[1] }}</b> solves</h3>
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
{% extends "admin/base.html" %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
<h1>Incorrect Key Submissions</h1>
|
||||
<table id="teamsboard">
|
||||
<thead>
|
||||
<tr>
|
||||
<td class="text-center"><b>Team</b>
|
||||
</td>
|
||||
<td class="text-center"><b>Challenge</b>
|
||||
</td>
|
||||
<td class="text-center"><b>Date</b>
|
||||
</td>
|
||||
<td class="text-center"><b>Submitted Key</b>
|
||||
</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for wrong_key in wrong_keys %}
|
||||
<tr>
|
||||
<td class="text-center"><a href="/admin/team/{{ wrong_key.team }}">{{ wrong_key.team_name }}</a>
|
||||
<td class="text-center">{{ wrong_key.chal_name }}</td>
|
||||
<td class="text-center">{{ wrong_key.date }}</td>
|
||||
<td class="text-center">{{ wrong_key.flag }}</td>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% if pages > 1 %}
|
||||
<div class="text-center">Page
|
||||
<br>
|
||||
{% for page in range(1, pages + 1) %}
|
||||
<a href="{{ page }}">{{ page }}</a>
|
||||
{% endfor %}
|
||||
<a href="">
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
{% endblock %}
|
Loading…
Reference in New Issue