X-Git-Url: https://projects.mako.cc/source/selectricity-live/blobdiff_plain/c5fda1e5174238779afd496014379d6446d1e3c1..dc7d60a0de460c72d292b43616eb97a8b34741c8:/app/controllers/elections_controller.rb diff --git a/app/controllers/elections_controller.rb b/app/controllers/elections_controller.rb index 339c77b..4cb72bc 100644 --- a/app/controllers/elections_controller.rb +++ b/app/controllers/elections_controller.rb @@ -1,8 +1,8 @@ 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' @@ -12,8 +12,10 @@ class ElectionsController < ApplicationController @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 @@ -53,6 +55,7 @@ class ElectionsController < ApplicationController # methods fod display, adding, deleting, and manipulating candidate # information for elections + #################################################################### def new_candidates @election = Election.find( params[:id] ) end @@ -75,8 +78,9 @@ class ElectionsController < ApplicationController @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] @@ -100,23 +104,47 @@ class ElectionsController < ApplicationController voter.destroy end - def summary_results - end - - def detailed_results + ## methods for computing and printing results + #################################################################### + def results @election = Election.find( params[:id] ) - @voting_rolls = [] + votes = [] + @election.voters.each do |voter| if voter.vote and voter.vote.confirmed? - @voting_rolls << voter + 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 - private - def randomize_order + 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 )