Merge from my devel branch
authorJohn Dong <jdong@mit.edu>
Tue, 14 Aug 2007 20:54:00 +0000 (16:54 -0400)
committerJohn Dong <jdong@mit.edu>
Tue, 14 Aug 2007 20:54:00 +0000 (16:54 -0400)
app/apis/selectricity_api.rb
app/controllers/quickvote_controller.rb
app/models/quick_vote.rb
app/models/selectricity_service.rb

index e94eaaa87bda85e78589d83d21a97bdb8341399e..8c0f04f64c11b6e61c060926ae977f0424f3d1cc 100644 (file)
@@ -1,10 +1,12 @@
 class VoteResultStruct < ActionWebService::Struct
-  member :plurality_winners, :string
-  member :approval_winners, :string
-  member :condorcet_winners, :string
-  member :ssd_winners, :string
-  member :borda_winners, :string
-  member :errors, :string
+  member :plurality_winners, [:int]
+  member :approval_winners, [:int]
+  member :condorcet_winners, [:int]
+  member :ssd_winners, [:int]
+  member :borda_winners, [:int]
+  member :candidate_ids, [:int]
+  member :candidate_names, [:string]
+  member :errors, [:string]
 end
 class SelectricityAPI < ActionWebService::API::Base
   api_method :cast_quickvote, :expects => [:int, :int, [[:int]]], :returns => [:string]
index acbf012ff5cb3df503371f59f4b8d71c466e567f..83a6cc5fc659e5bcfabcc75a1d6e31baa7af5474 100644 (file)
@@ -49,7 +49,7 @@ class QuickvoteController < ApplicationController
   #############################################################
 
   def index
-    @election = ident_to_quickvote(params[:ident])
+    @election = QuickVote.ident_to_quickvote(params[:ident])
     
     # if the person has specified an election, we show them the voting
     # page. otherwise, we redirect back to main the page
@@ -87,7 +87,7 @@ class QuickvoteController < ApplicationController
 
   def confirm
     # we need the election to verify that we have the right voter
-    election = ident_to_quickvote(params[:ident])
+    election = QuickVote.ident_to_quickvote(params[:ident])
 
     # find out who the voter is for this election
     @voter = QuickVoter.find_all(["session_id = ? and election_id = ?", 
@@ -142,21 +142,9 @@ class QuickvoteController < ApplicationController
   ###############################################################
 
   def results
-    @election = ident_to_quickvote(params[:ident])
+    @election = QuickVote.ident_to_quickvote(params[:ident])
     @election.results
     @candidates = {}
     @election.candidates.each {|c| @candidates[c.id] = c}
   end
-
-  private
-  def ident_to_quickvote(ident)
-    if ident.match(/^\d+$/)
-      quickvote = QuickVote.find(ident)
-    else
-      quickvote = QuickVote.find_all(["name = ?", ident])[0]
-    end
-
-    return quickvote
-  end
-
 end
index 6259784bfbaf1bc847ad8e67b6fad04a2722cf45..5f566c6eb1e6575e1f8f6a7845e67ba21d963c53 100644 (file)
@@ -74,4 +74,15 @@ class QuickVote < Election
 
 
   end
+
+  ### Convert a shortname or id into a QuickVote
+  def self.ident_to_quickvote(ident)
+    if ident.match(/^\d+$/)
+      quickvote = QuickVote.find(ident)
+    else
+      quickvote = QuickVote.find_all(["name = ?", ident])[0]
+    end
+
+    return quickvote
+  end
 end
index d383dcd09e01a40d0cdeea9ef9c0e9c1b65f94f0..c0adc8a7b438242dda11225d6099a20d176497f7 100644 (file)
@@ -7,15 +7,23 @@ class SelectricityService < ActionWebService::Base
   end
   def get_quickvote_results(shortname)
     #TODO: Validate shortname
-    session=ActionController::Integration::Session.new
-    debugger
-    controller=session.get "quickvote/#{shortname}/results"
+    qv=QuickVote.ident_to_quickvote(shortname)
     result=VoteResultStruct.new
-    result.plurality_winners=session.controller.plurality_result.winners.inspect
-    result.approval_winners=session.controller.approval_result.winners.inspect
-    result.condorcet_winners=session.controller.condorcet_result.winners.inspect
-    result.ssd_winners=session.controller.ssd_result.winners.inspect
-    result.borda_winners=session.controller.borda_result.winners.inspect
+    result.errors=[]
+    unless qv
+      result.errors << "No quickvote with name #{shortname} found!"
+      return result
+    end
+    qv.results
+    result.plurality_winners=qv.plurality_result.winners
+    result.approval_winners=qv.approval_result.winners
+    result.condorcet_winners=qv.condorcet_result.winners
+    result.ssd_winners=qv.ssd_result.winners
+    result.borda_winners=qv.borda_result.winners
+    candidates={}
+    qv.candidates.each {|c| candidates[c.id] = c.name}
+    result.candidate_ids=candidates.keys
+    result.candidate_names=candidates.values
     result
   end
 end

Benjamin Mako Hill || Want to submit a patch?