Merge branch 'live' of ssh://ephesus.xvm.mit.edu/org/selectricity/selectricity-live
[selectricity] / app / controllers / voter_controller.rb
index 1634ccd1a86d4854f96f6b5922154d26139accfe..a550f676cc3d2ced5c851eef5c4f4c8632363159 100644 (file)
@@ -13,7 +13,7 @@ class VoterController < ApplicationController
   require_dependency "election"
 
   before_filter :authenticate, :except => [:index, :login, :reminder,
-                                           :kiosk_ready]
+                                           :kiosk_ready, :sort_candidates]
 
   def index
     if params[:election_id]
@@ -54,18 +54,24 @@ class VoterController < ApplicationController
       else
         @sidebar_content = render_to_string(:partial => 'vote_sidebar')
         if @election.embeddable? and params[:embed] == "true"
-          #look for custom theme, and assign to instance variabels for widget use
+          # look for custom theme, and assign to instance variabels
+          # for widget use
           if @election.embed_custom_string
             @top_bar = SkinPicture.find(:first,
-            :conditions => ["filename = ?", @election.embed_custom_string + "top_bar.png"])
+              :conditions => ["filename = ?",
+                @election.embed_custom_string + "top_bar.png"])
             @default_image = SkinPicture.find(:first,
-            :conditions => ["filename = ?", @election.embed_custom_string + "default_image.png"])
+              :conditions => ["filename = ?",
+                @election.embed_custom_string + "default_image.png"])
             @bg1 = SkinPicture.find(:first,
-            :conditions => ["filename = ?", @election.embed_custom_string + "bg1.png"])
+              :conditions => ["filename = ?",
+                @election.embed_custom_string + "bg1.png"])
             @bg2 = SkinPicture.find(:first,
-            :conditions => ["filename = ?", @election.embed_custom_string + "bg2.png"])
+              :conditions => ["filename = ?",
+                @election.embed_custom_string + "bg2.png"])
             @bottom_bar = SkinPicture.find(:first,
-            :conditions => ["filename = ?", @election.embed_custom_string + "bottom_bar.png"])
+              :conditions => ["filename = ?",
+                @election.embed_custom_string + "bottom_bar.png"])
           end
           render :template => 'embed/full_vote', :layout => 'embed'
         else
@@ -77,7 +83,8 @@ class VoterController < ApplicationController
 
   def login
     if params[:vote] and params[:vote][:password]
-      redirect_to votepassword_url( :action => 'index', :urlpassword => params[:vote][:password])
+      redirect_to votepassword_url(:action => 'index',
+        :urlpassword => params[:vote][:password])
     else
       redirect_to :action => 'index'
     end
@@ -90,22 +97,25 @@ class VoterController < ApplicationController
   end
 
   def confirm
-    @voter.vote.confirm!
-
-    if @voter.election.embeddable? and params[:embed] == "true" \
-      and @voter.election.early_results?
-      redirect_to :action => :results, :id => @password, :embed => 'true'
-    elsif not(@voter.election.verifiable) \
-      and @voter.election.kiosk and params[:kiosk] == "true"
-      redirect_to :action => "kiosk_ready", :id => @password, :kiosk => true
+    if @voter.vote.confirm!
+      if @voter.election.embeddable? and params[:embed] == "true" \
+        and @voter.election.early_results?
+        redirect_to :action => :results, :id => @password, :embed => 'true'
+      elsif not(@voter.election.verifiable) \
+        and @voter.election.kiosk and params[:kiosk] == "true"
+        redirect_to :action => "kiosk_ready", :id => @password, :kiosk => true
+      else
+        render :action => 'thanks'
+      end
     else
-      render :action => 'thanks'
+      redirect_to :action => 'index'
     end
   end
   
   def reminder
     if params[:email]
-      voter_array= FullVoter.find(:all, :conditions => ["email = ?", params[:email]])
+      voter_array= FullVoter.find(:all,
+        :conditions => ["email = ?", params[:email]])
       voter_array.delete_if {|voter| voter.election.active == 0}
       unless voter_array.empty?
         VoterNotify.deliver_reminder(voter_array)
@@ -115,24 +125,32 @@ class VoterController < ApplicationController
   end
   
   def results
-    if @voter.election.early_results? \
-       or @voter.election.enddate < Time.now
+    if authenticate and
+      (@voter.election.early_results? \
+       or @voter.election.enddate < Time.now)
       
       @election = @voter.election
-      @sidebar_content = render_to_string(:partial => 'full_results_sidebar')
+      @sidebar_content = \
+        render_to_string(:partial => 'full_results_sidebar')
 
-      #look for custom theme, and assign to instance variabels for widget use
+      # look for custom theme, and assign to instance variabels for
+      # widget use
       if @election.embed_custom_string
         @top_bar = SkinPicture.find(:first,
-        :conditions => ["filename = ?", @election.embed_custom_string + "top_bar.png"])
+          :conditions => ["filename = ?",
+            @election.embed_custom_string + "top_bar.png"])
         @default_image = SkinPicture.find(:first,
-        :conditions => ["filename = ?", @election.embed_custom_string + "default_image.png"])
+          :conditions => ["filename = ?",
+            @election.embed_custom_string + "default_image.png"])
         @bg1 = SkinPicture.find(:first,
-        :conditions => ["filename = ?", @election.embed_custom_string + "bg1.png"])
+          :conditions => ["filename = ?",
+            @election.embed_custom_string + "bg1.png"])
         @bg2 = SkinPicture.find(:first,
-        :conditions => ["filename = ?", @election.embed_custom_string + "bg2.png"])
+          :conditions => ["filename = ?",
+            @election.embed_custom_string + "bg2.png"])
         @bottom_bar = SkinPicture.find(:first,
-        :conditions => ["filename = ?", @election.embed_custom_string + "bottom_bar.png"])
+          :conditions => ["filename = ?",
+            @election.embed_custom_string + "bottom_bar.png"])
       end
       if @election.embeddable? and params[:embed] == "true"
         render :template => 'embed/results', :layout => 'embed'
@@ -179,8 +197,8 @@ class VoterController < ApplicationController
                           session.session_id, election.id])[0]
 
         # when (a) there is no voter or (b) when there is a voter but
-        # it's kiosk mode on the right page, rewrite with blank voter
-        if not(@voter) \
+        # it's kiosk mode on the right page, rewrite with a blank voter
+        if ((not @voter) and  (election.enddate < Time.now)) \
           or (params[:action] == 'kiosk_ready' and election.kiosk)
           @voter = OpenVoter.new unless @voter
         end

Benjamin Mako Hill || Want to submit a patch?