-require 'uniq_token'
-
class ElectionsController < ApplicationController
model :raw_voter_list, :voter, :vote, :candidate
-
- # general methods for dealing with elections
+ ## general methods for dealing with elections
+ ####################################################################
def index
list
render :action => 'list'
@election_pages, @elections = paginate :elections, :per_page => 10
end
- # methods for displaying, creating, and manipulating election overview
- # data
+ ## methods for displaying, creating,
+ ## and manipulating election overview data
+ ####################################################################
+
def show
@election = Election.find(params[:id])
end
# methods fod display, adding, deleting, and manipulating candidate
# information for elections
+ ####################################################################
def new_candidates
@election = Election.find( params[:id] )
end
@election = Election.find( params[:id] )
end
- # methods for displaying, adding, deleting, and manipulating voters
- # for a particular election
+ ## methods for displaying, adding, deleting, and manipulating voters
+ ## for a particular election
+ ####################################################################
def new_voters
@election = Election.find( params[:id] )
if params.has_key?[:raw_voter_list]
voter.destroy
end
+ ## methods for computing and printing results
+ ####################################################################
+ def results
+ @election = Election.find( params[:id] )
+ votes = []
+
+ @election.voters.each do |voter|
+ if voter.vote and voter.vote.confirmed?
+ votes << voter.vote.rankings.sort.collect {|vote| vote.candidate_id}
+ end
+ end
+
+ @voteobj = CloneproofSSDVote.new(votes)
+ @resultobj = @voteobj.result
+ @winners = @resultobj.winners
+
+ @candidates_by_id = {}
+ @election.candidates.each {|cand| @candidates_by_id[cand.id] = cand}
+ end
+
+ def detailed_results
+
+ self.results
+ breakpoint
+ @voter_list = []
+ @vote_list = []
+ @election.voters. each do |voter|
+ if voter.vote and voter.vote.confirmed?
+ @voter_list << voter.email
+ @vote_list << voter.vote
+ end
+ end
+
+ @vote_list.sort!
+ @vote_list.sort! { |a,b| a.token <=> b.token }
+ end
+
+ ## private methods
+ ####################################################################
private
def process_incoming_voters(raw_voter_list)
incoming_voters = RawVoterList.new( raw_voter_list )
- token_generator = UniqueTokenGenerator.new( 16 )
unless incoming_voters.entries.empty?
incoming_voters.each do |new_voter|
- until new_voter.password and \
- Voter.find_all( [ "password = ?", new_voter.password ]).empty?
- new_voter.password = token_generator.token
- end
-
- breakpoint
if incoming_voters.email == 0
new_voter.contacted = 1
elsif incoming_voters.email == 1