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