Add XMLRPC interface for creating new quickvotes
authorJohn Dong <jdong@mit.edu>
Thu, 16 Aug 2007 23:59:44 +0000 (19:59 -0400)
committerJohn Dong <jdong@mit.edu>
Thu, 16 Aug 2007 23:59:44 +0000 (19:59 -0400)
app/apis/selectricity_api.rb
app/models/selectricity_service.rb

index 6a3af7245d3cbb61e111bd761c42a5746b16d217..75a840aa6e25df2116b6940626fd1b0ba3ee1a0a 100644 (file)
@@ -1,7 +1,8 @@
 class ElectionStruct < ActionWebService::Struct
   member :name, :string
   member :description, :string
-  member :candidates, [:int]
+  member :candidate_ids, [:int]
+  member :candidate_names, [:string]
   member :id, :int
 end
 class VoteInfo < ActionWebService::Struct
@@ -31,6 +32,7 @@ class SelectricityAPI < ActionWebService::API::Base
   api_method :get_quickvote_votes, :expects => [:string], :returns => [ [VoteInfo] ]
   api_method :list_quickvotes, :expects => [], :returns => [[ElectionStruct]]
   api_method :get_quickvote, :expects => [:string], :returns => [ElectionStruct]
+  api_method :create_quickvote, :expects => [ElectionStruct], :returns => [:string]
 end
 
 
index b288cc319d558a5d4e2a4f99bdf27f6a6d33d829..3f0a3bf7442ba12deb8d9d96ae5944af272085dc 100644 (file)
@@ -85,6 +85,12 @@ class SelectricityService < ActionWebService::Base
   end
   def get_quickvote(shortname)
     return ElectionStruct.new unless election=QuickVote.ident_to_quickvote(shortname)
-    return ElectionStruct.new (:id => election.id, :name => election.name, :description => election.description, :candidates => election.candidates.collect {|c| c.id } )
+    return ElectionStruct.new (:id => election.id, :name => election.name, :description => election.description, :candidate_ids => election.candidates.collect {|c| c.id }, :candidate_names => election.candidates.collect {|c| c.name } )
   end
+  def create_quickvote(election)
+    qv=QuickVote.new(:name => election.name, :description => election.description)
+    qv.candidatelist=election.candidate_names
+    return qv.save.to_s
+  end
+
 end

Benjamin Mako Hill || Want to submit a patch?