My first gigantic-blob commit....
authorJohn Dong <jdong@mit.edu>
Fri, 31 Aug 2007 14:31:12 +0000 (10:31 -0400)
committerJohn Dong <jdong@mit.edu>
Fri, 31 Aug 2007 14:31:12 +0000 (10:31 -0400)
* Refactor voter list to a separate page
  * Rename mapvoters to list_voters
  * Clean up div tags
* Fixed gmap api key syntax to not error out in production
   * TODO: Generate a real api key for selectricity.org
* Fixed performance issue with when IANA private addresses timeout DNS request.

app/controllers/quickvote_controller.rb
app/views/quickvote/list_voters.rhtml [new file with mode: 0644]
app/views/quickvote/mapvoters.rhtml [deleted file]
app/views/quickvote/results.rhtml
config/gmaps_api_key.yml

index da2903d1a01fa3fecf1f5d0a665c49801f5ff538..d8d3d59e59139b9499c70c514cc77b8442203359 100644 (file)
@@ -161,14 +161,13 @@ class QuickvoteController < ApplicationController
     redirect_to quickvote_url( :ident => params[:ident] )
   end
                
-  def mapvoters
+  def list_voters
     @map = GMap.new("map_div_id") 
     @map.control_init(:large_map => true, :map_type => true) 
     center = nil
-
-    QuickVote.ident_to_quickvote(params[:id]).voters.each do |voter|
+    @election=QuickVote.ident_to_quickvote(params[:id])
+    @election.voters.each do |voter|
       next unless voter.ipaddress
-
       location = GeoKit::Geocoders::IpGeocoder.geocode(voter.ipaddress)
       next unless location.lng and location.lat
 
diff --git a/app/views/quickvote/list_voters.rhtml b/app/views/quickvote/list_voters.rhtml
new file mode 100644 (file)
index 0000000..795ab45
--- /dev/null
@@ -0,0 +1,49 @@
+<%= GMap.header %> 
+
+<div id="title-header">
+    <span class="header">Quickvote</span>
+      <span class="subheader">Voters</span>
+    </div>
+    
+  <div class="clear-div"></div>
+<%= @map.to_html %>  
+<%= @map.div(:width => 550, :height => 400) %> 
+<br><br>
+<table class="voterbox">
+<tr>
+<th>IP/Host</th>
+<th>Organization Name</th>
+</tr>
+<% for voter in @election.voters %>
+  <% next unless voter.voted? %>
+  <tr>
+    <td><% begin %>
+        <% raise ArgumentError.new, "Local Server" if voter.ipaddress == "127.0.0.1" %>
+        <% raise ArgumentError.new, "XML-RPC Voter" if voter.ipaddress == "XMLRPC Request" %>
+        <% # Test for intranet addresses to avoid untimely DNS timeouts.
+           # Of course the last regex is horrible; matches a few extra IP's that aren't intranet
+          raise ArgumentError.new, "Intranet: #{voter.ipaddress}" if voter.ipaddress =~
+            /^192\.168/ or voter.ipaddress =~ /^10\./ or voter.ipaddress =~ /^169\.254/ or
+            voter.ipaddress =~ /^172\.[1-3]/
+            %>
+        <% w= Whois::Whois.new(IPAddr.new(voter.ipaddress),true)%>
+        <%=h((w.host == nil or w.host.empty?) ? voter.ipaddress : w.host)%>
+      </td>
+      <td>
+        <%w.search_whois%>
+        <%=h (w.all.grep(/^(OrgName|org-name)/)[0] or "").sub(/^(OrgName|org-name)\:/,'').strip -%> - <%=  (w.all.grep(/^(NetName|netname)/)[0] or "").sub(/^(NetName|netname)\:/,'').strip %>
+
+    <% rescue ArgumentError => err %>
+      <%=h err %>
+    </td>
+    <td><%=h err%>
+    <% rescue NoMethodError %>
+      DNS Unreachable
+    </td>
+    <td> DNS Unreachable
+    <% end %>
+    </td>
+  </tr>
+<% end %>
+</table>
+
diff --git a/app/views/quickvote/mapvoters.rhtml b/app/views/quickvote/mapvoters.rhtml
deleted file mode 100644 (file)
index 8f94cd0..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<%= GMap.header %>
-<%= @map.to_html %>  
-<%= @map.div(:width => 800, :height => 400) %>  
index f4f6f2d812aa93e98ad46c453d728a7c9900a79d..52810fe543d228a1b43391b82ddce41feffeab2f 100644 (file)
   <span class="subheader"></span>
 </div>
 
-<p><%= link_to "[Stalk Voters]", :controller => "quickvote", :action => "mapvoters", :id => @election.id %></p>
-<table class="voterbox">
-<tr>
-<th>IP/Host</th>
-<th>Origin</th>
-<th>Vote</th>
-</tr>
-<% for voter in @election.voters %>
-  <% next unless voter.voted? %>
-  <tr>
-    <td><% begin %>
-        <% raise ArgumentError.new, "Local Server" if voter.ipaddress == "127.0.0.1" %>
-        <% raise ArgumentError.new, "XML-RPC Voter" if voter.ipaddress == "XMLRPC Request" %>
-        <% w= Whois::Whois.new(IPAddr.new(voter.ipaddress),true)%>
-        <%=h((w.host == nil or w.host.empty?) ? voter.ipaddress : w.host)%>
-      </td>
-      <td>
-        <%w.search_whois%>
-        <%=h (w.all.grep(/^(OrgName|org-name)/)[0] or "").sub(/^(OrgName|org-name)\:/,'').strip -%> - <%=  (w.all.grep(/^(NetName|netname)/)[0] or "").sub(/^(NetName|netname)\:/,'').strip %>
-    
-    <% rescue ArgumentError => err %>
-      <%=h err %>
-    </td>
-    <td><%=h err%>
-    <% rescue NoMethodError %>
-      DNS Unreachable
-    </td>
-    <td> DNS Unreachable
-    <% end %>
-    </td>
-  <td><%= voter.vote.votestring %></td>
-  </tr>
-<% end %>
-</table>
-
+<p><%= link_to "[View All Voters]", :controller => "quickvote", :action => "list_voters", :id => @election.id %></p>
 <br />
 
 <!--
index b1641f55acd6523f8a91f8a542eb60308c3c2b1a..5d89d5a55bdc62a1939291fde194bbcde84cf08d 100644 (file)
@@ -9,5 +9,4 @@ test:
  ABQIAAAAzMUFFnT9uH0xq39J0Y4kbhTJQa0g3IQ9GZqIMmInSLzwtGDKaBR6j135zrztfTGVOm2QlWnkaidDIQ\r
 \r
 production:\r
- thepochisuperstarmegashow.com: ABQIAAAAzMUFFnT9uH0Sfg76Y4kbhTJQa0g3IQ9GZqIMmInSLzwtGDmlRT6e90j135zat56yhJKQlWnkaidDIQ\r
- example.com: ABQIAAAAzMUFFnT9uH0Sfg98Y4kbhGFJQa0g3IQ9GZqIMmInSLrthJKGDmlRT98f4j135zat56yjRKQlWnkmod3TB\r
+ ABQIAAAAzMUFFnT9uH0Sfg98Y4kbhGFJQa0g3IQ9GZqIMmInSLrthJKGDmlRT98f4j135zat56yjRKQlWnkmod3TB\r

Benjamin Mako Hill || Want to submit a patch?