<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -606,16 +606,28 @@ class ElectionController(REST.Resource):
     return self.render('vote')
     
   @web
-  def bboard(self, election):
+  def bboard(self, election, voter_email=None, voter_openid=None, after=None, offset=0, limit=20):
     &quot;&quot;&quot;
     Display a list of encrypted votes
     &quot;&quot;&quot;
+    offset = int(offset)
+    limit = int(limit)
     if not election.is_frozen():
       self.redirect(&quot;./view&quot;)
       
-    # load all voters
-    voters = election.get_voters()
-    
+    # if there's a specific voter
+    if voter_email or voter_openid:
+      voters = [do.Voter.selectByEmailOrOpenID(election, email=voter_email, openid_url=voter_openid)]
+    else:
+      # load a bunch of voters
+      voters = election.get_voters(after=after, limit=limit+1)
+      
+    more_p = len(voters) &gt; limit
+    if more_p:
+      voters = voters[0:limit]
+      next_after = voters[limit-1].voter_id
+      next_offset = offset + limit
+
     return self.render('bboard')
 
   @web</diff>
      <filename>controllers/election.py</filename>
    </modified>
    <modified>
      <diff>@@ -10,14 +10,14 @@ indexes:
 # automatically uploaded to the admin console when you next deploy
 # your application using appcfg.py.
 
-# Unused in query history -- copied from input.
+# Used 2 times in query history.
 - kind: ElectionExponent
   properties:
   - name: election
   - name: exponent
     direction: desc
 
-# Used once in query history.
+# Used 9 times in query history.
 - kind: KeyShare
   properties:
   - name: election
@@ -43,7 +43,7 @@ indexes:
   - name: tallied_at
   - name: cast_id
 
-# Used once in query history.
+# Used 32 times in query history.
 - kind: Voter
   properties:
   - name: election</diff>
      <filename>index.yaml</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,23 @@
 #include &quot;templates/header.tmpl&quot;
   &lt;h2 class=&quot;title&quot;&gt;$election.name &amp;mdash; Bulletin Board &lt;span style=&quot;font-size:0.7em;&quot;&gt;[&lt;a href=&quot;./view&quot;&gt;done&lt;/a&gt;]&lt;/span&gt;&lt;/h2&gt;
 
+&lt;h3&gt;Search&lt;/h3&gt;
+&lt;form method=&quot;get&quot; action=&quot;&quot;&gt;
+    Voter Email: &lt;input type=&quot;text&quot; name=&quot;voter_email&quot; size=&quot;40&quot; value=&quot;$voter_email&quot; /&gt;
+    &lt;input type=&quot;submit&quot; value=&quot;search&quot; /&gt;
+&lt;/form&gt;
+&lt;br /&gt;&lt;br /&gt;
+#if $voter_email or $voter_openid
+&lt;b&gt;currently viewing voter ${voter_email or voter_openid}&lt;/b&gt;. [&lt;a href=&quot;./bboard&quot;&gt;Show All&lt;/a&gt;]
+&lt;br /&gt;&lt;br /&gt;
+#end if
+Voters ${offset+1} - ${offset+$limit} &amp;nbsp;&amp;nbsp;
+#if $after
+&lt;a href=&quot;./bboard&quot;&gt;back to start&lt;/a&gt; &amp;nbsp;&amp;nbsp;
+#end if
+#if $more_p
+&lt;a href=&quot;./bboard?after=$next_after&amp;offset=$next_offset&quot;&gt;next $limit&lt;/a&gt;
+#end if
 &lt;table class=&quot;pretty&quot;&gt;
 &lt;tr&gt;&lt;th&gt;Name&lt;/th&gt;&lt;th&gt;Ballot Fingerprint&lt;/th&gt;&lt;/tr&gt;
 #for $voter in $voters</diff>
      <filename>templates/election/bboard.tmpl</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>0667bd47f60497cc9c2fa5fe68e3086e74f1fd0f</id>
    </parent>
  </parents>
  <author>
    <name>Ben Adida</name>
    <email>ben@adida.net</email>
  </author>
  <url>http://github.com/benadida/helios/commit/6db7adebeeebbbba7d99185295f2d736de7b467e</url>
  <id>6db7adebeeebbbba7d99185295f2d736de7b467e</id>
  <committed-date>2008-11-14T10:41:59-08:00</committed-date>
  <authored-date>2008-11-14T10:41:59-08:00</authored-date>
  <message>added bboard search</message>
  <tree>d780288d55410633ca32b8bee4ee540fffb6153b</tree>
  <committer>
    <name>Ben Adida</name>
    <email>ben@adida.net</email>
  </committer>
</commit>
