From 81d4b6e25ea7102effd910ca7bdf75b1be683a9d Mon Sep 17 00:00:00 2001 From: Ben Adida <ben@adida.net> Date: Fri, 25 Feb 2011 17:09:29 -0800 Subject: [PATCH] made elections-voted more presentable --- helios/models.py | 13 +++++++++++-- helios/templates/elections_voted.html | 11 +++++++++++ helios/urls.py | 1 + helios/views.py | 7 +++++++ server_ui/templates/index.html | 1 + server_ui/views.py | 2 +- 6 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 helios/templates/elections_voted.html diff --git a/helios/models.py b/helios/models.py index 35632f9..9fb068b 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 0000000..61a718f --- /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 1542384..b08550c 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 195eb36..f851918 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 493c371..a5b86d7 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 417f4ac..c7d5fbe 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 -- GitLab