diff --git a/helios/stats_urls.py b/helios/stats_urls.py index 9e6e2703c33f4c7c96050034193c805099d48ea6..606ee80d9380ee577f005b60fb6bd0c32ff2e40c 100644 --- a/helios/stats_urls.py +++ b/helios/stats_urls.py @@ -11,6 +11,7 @@ from helios.stats_views import * urlpatterns = patterns( '', (r'^$', home), + (r'^force-queue$', force_queue), (r'^elections$', elections), (r'^recent-votes$', recent_votes), ) diff --git a/helios/stats_views.py b/helios/stats_views.py index 7381599338a4e719c733ee37e3f9f2787fb81948..1affcbbf7545d50fb572f56cffdf7f5c7d76a925 100644 --- a/helios/stats_views.py +++ b/helios/stats_views.py @@ -13,6 +13,7 @@ from security import * from auth.security import get_user, save_in_session_across_logouts from view_utils import * +from helios import tasks def require_admin(request): user = get_user(request) @@ -26,6 +27,14 @@ def home(request): num_votes_in_queue = CastVote.objects.filter(invalidated_at=None, verified_at=None).count() return render_template(request, 'stats', {'num_votes_in_queue': num_votes_in_queue}) +def force_queue(request): + user = require_admin(request) + votes_in_queue = CastVote.objects.filter(invalidated_at=None, verified_at=None) + for cv in votes_in_queue: + tasks.cast_vote_verify_and_store.delay(cv.id) + + return HttpResponseRedirect(reverse(home)) + def elections(request): user = require_admin(request) diff --git a/helios/templates/stats.html b/helios/templates/stats.html index 6b1cebddd79abe9a3d5f371546aee6d6f988e337..9c48e9f15c5e82516f45606c81f0e53eaf6621d8 100644 --- a/helios/templates/stats.html +++ b/helios/templates/stats.html @@ -9,6 +9,6 @@ <li> <a href="{% url helios.stats_views.recent_votes %}">recent votes</a></li> </ul> -<p><b>{{num_votes_in_queue}}</b> votes in queue.</p> +<p><b>{{num_votes_in_queue}}</b> votes in queue. {% if num_votes_in_queue %}[<a href="{% url helios.stats_views.force_queue %}">force it</a>]{% endif %}</p> {% endblock %}