diff --git a/helios/models.py b/helios/models.py index 35632f9317afa779db7fba854431af7228370807..9fb068b55e125f812be7dbe7efa580d91f2479b6 100644 --- a/helios/models.py +++ b/helios/models.py @@ -185,8 +185,17 @@ class Election(HeliosModel): return query @classmethod - def get_by_user_as_voter(cls, user): - return [v.election for v in Voter.get_by_user(user)] + def get_by_user_as_voter(cls, user, archived_p=None, limit=None): + query = cls.objects.filter(voter__user = user) + if archived_p == True: + query = query.exclude(archived_at= None) + if archived_p == False: + query = query.filter(archived_at= None) + query = query.order_by('-created_at') + if limit: + return query[:limit] + else: + return query @classmethod def get_by_uuid(cls, uuid): diff --git a/helios/templates/elections_voted.html b/helios/templates/elections_voted.html new file mode 100644 index 0000000000000000000000000000000000000000..61a718f87916a4c0f657967449ced5ddb066c107 --- /dev/null +++ b/helios/templates/elections_voted.html @@ -0,0 +1,11 @@ +{% extends TEMPLATE_BASE %} + +{% block content %} + <h2 class="title">Elections where you voted <span style="font-size:0.7em;">[<a href="/">back to home</a>]</span></h2> + +<ul> +{% for election in elections %} +<li> <a href="{% url helios.views.one_election_view election.uuid %}">{{election.name}}</a></li> +{% endfor %} +</ul> +{% endblock %} diff --git a/helios/urls.py b/helios/urls.py index 1542384e70a9084f763a23177126b5aac851e0be..b08550cba9453366c6bc104c64891aca6dde6fb4 100644 --- a/helios/urls.py +++ b/helios/urls.py @@ -31,6 +31,7 @@ urlpatterns = patterns('', (r'^elections/single_ballot_verifier$', election_single_ballot_verifier), (r'^elections/new$', election_new), (r'^elections/administered$', elections_administered), + (r'^elections/voted$', elections_voted), (r'^elections/(?P<election_uuid>[^/]+)', include('helios.election_urls')), diff --git a/helios/views.py b/helios/views.py index 195eb36f9be39cb9ebbedfe228dea65eadcdb9c9..f851918d86732611faf34e41edd2c40e2350c63e 100644 --- a/helios/views.py +++ b/helios/views.py @@ -159,6 +159,13 @@ def elections_administered(request): elections = Election.get_by_user_as_admin(user) return render_template(request, "elections_administered", {'elections': elections}) + +@login_required +def elections_voted(request): + user = get_user(request) + elections = Election.get_by_user_as_voter(user) + + return render_template(request, "elections_voted", {'elections': elections}) @login_required diff --git a/server_ui/templates/index.html b/server_ui/templates/index.html index 493c371e4e449f8f5e7284659fd143ef1d70875b..a5b86d74211d4123095a62a4b7705e076da0b49d 100644 --- a/server_ui/templates/index.html +++ b/server_ui/templates/index.html @@ -39,6 +39,7 @@ {% else %} <em>none yet</em> {% endif %} +<p>[<a href="{% url helios.views.elections_voted %}">see all</a>]</p> {% else %} <h3>Log In to Start Voting</h3> {{login_box|safe}} diff --git a/server_ui/views.py b/server_ui/views.py index 417f4ac52142d6f019a58af4248fa8e29f8f4cd3..c7d5fbea9b56d5d6ef60d3a988de4ffd295873eb 100644 --- a/server_ui/views.py +++ b/server_ui/views.py @@ -36,7 +36,7 @@ def home(request): elections_administered = None if user: - elections_voted = Election.get_by_user_as_voter(user) + elections_voted = Election.get_by_user_as_voter(user, limit=5) else: elections_voted = None