]> projects.mako.cc - selectricity/blobdiff - app/controllers/voter_controller.rb
Pref_tables now use the Schulze ssd_result object, and they own't display if
[selectricity] / app / controllers / voter_controller.rb
index 2ceb42b1d24d0db5af7550569bf48fdd5bf5c23e..6693b0fa6baa9090cfa6c72b146a240f3d95024e 100644 (file)
@@ -1,25 +1,42 @@
 class VoterController < ApplicationController
-  model :voter
-  model :vote
-  model :election
+  layout 'main'
+  require_dependency "voter"
+  require_dependency "vote"
+  require_dependency "election"
 
   def index
     password = params[:id]
-    @voter = Voter.find_all( [ "password = ?", password ] )[0]
+    password = params[:vote][:password] if params[:vote]
+    if @voter = FullVoter.find(:all, :conditions => [ "password = ?", password ] )[0]
+      @voter.vote = Vote.new if @voter.vote.nil?
+      @voter.vote.set_defaults! if @voter.vote.rankings.empty?
+      render :action => 'full_vote'
+    end
   end
   
   def review
-    password = params[:id]
-    @voter = Voter.find_all( [ "password = ?", password ] )[0]
-    
-    # destroy the old vote if that's what we need to do
-    @voter.vote.destroy if @voter.vote 
-    @voter.reload
+    if authenticate
+      @voter.vote.time = Time.now
+      @voter.vote.save
+      @voter.reload
+    else
+      redirect_to :action => 'index'
+    end
+  end
 
-    @voter.vote = Vote.new
-    @voter.vote.votestring = params[:vote][:votestring] 
-    @voter.vote.save
-    render_text "success"
+  def confirm
+    if authenticate
+      @voter.vote.confirm!
+      render :action => 'thanks'
+    else
+      redirect_to :action => 'index'
+    end
   end
 
+  private
+  def authenticate
+    password = params[:id]
+    @voter = FullVoter.find(:all, :conditions => [ "password = ?", password ] )[0]
+  end
 end
+

Benjamin Mako Hill || Want to submit a patch?