From: John Dong Date: Thu, 30 Aug 2007 23:13:09 +0000 (-0400) Subject: Merge head X-Git-Url: https://projects.mako.cc/source/selectricity/commitdiff_plain/f2db874f06622e5b7422dabc8e17396708277c56?ds=inline;hp=-c Merge head --- f2db874f06622e5b7422dabc8e17396708277c56 diff --combined app/models/election.rb index ce7a0bc,7fa138e..99d64f9 --- a/app/models/election.rb +++ b/app/models/election.rb @@@ -23,7 -23,7 +23,7 @@@ class Election < ActiveRecord::Bas def other_methods if election_method - @other_methods = ELECTION_TYPES.reject {|i| i == election_method} + @other_methods = ELECTION_TYPES.keys.reject {|i| i == election_method} else @other_methods = nil end @@@ -88,28 -88,8 +88,28 @@@ longdesc.length > 0 ? longdesc : nil end - #Calculate Election Results + #Calculate results if not in memcache def results + # Assignment is intentional + if Cache and c = Cache.get("election_results:#{id}:#{self.votes.length}") + @plurality_result = c['plurality'] + @approval_result = c['approval'] + @condorcet_result = c['condorcet'] + @ssd_result = c['ssd'] + @borda_result = c['borda'] + return c + elsif Cache + # memcache is available, but missed. + results = self.results! + Cache.set("election_results:#{id}:#{self.votes.length}", results) + return results + else + return self.results! + end + end + + #Always Calculate Election Results + def results! # initalize the tallies to empty arrays preference_tally = Array.new plurality_tally = Array.new @@@ -149,6 -129,7 +149,6 @@@ names end - end diff --combined config/environment.rb index 2a77009,5ea9f10..fcabdd8 --- a/config/environment.rb +++ b/config/environment.rb @@@ -63,10 -63,15 +63,14 @@@ MAIL_CONFIG = { :from => 'Selectricity require 'uniq_token' require 'randarray' - require 'gruff' + require 'gruff-0.2.8/lib/gruff' require 'sparklines' - require 'rubyvote' - ELECTION_TYPES = %w(ssd plurality approval condorcet borda) + ELECTION_TYPES = {'ssd' => "Schulze Sequential Dropping", + 'plurality' => "Plurality/First Past the Post", + 'approval' => "Approval (Top Two)", + 'condorcet' => "Simple Condorcet", + 'borda' => "Borda Count"} class String # alternate capitalization method that does not lowercase the rest of