Election results in the London Borough of Sutton.
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

setpositions.rb 1.4 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. require_relative '../models'
  2. require 'pp'
  3. # Set position and elected for each candidacy
  4. # WARNING - This will only work in full council elections not byelections (as the number of seats being elected in that eleciton is probably less than the total number of seats in the ward)
  5. # This will break all the byelection data currently in the database
  6. election = Election.first(:d => ARGV.shift)
  7. unless election
  8. puts "Election not found. Usage example: $ %s 2006-05-04" % __FILE__
  9. exit 1
  10. end
  11. puts "Setting candidacy positions for %s %s %s" % [ election.body.name, election.kind, election.d.to_s ]
  12. if election.candidacies.size < 30
  13. puts "This script only works for full council elections. Your election looks like a byelection, so quitting."
  14. exit 1
  15. end
  16. puts "%d candidacies in this election" % election.candidacies.size
  17. election.body.districts.each do |district|
  18. cands = Candidacy.all(:conditions => { :district_id => district.id, :election_id => election.id }, :order => [:votes.desc])
  19. # pp cands
  20. puts
  21. pos = 1
  22. cands.each do |cand|
  23. if pos == 1
  24. puts "-" * 62
  25. puts district.name
  26. puts "-" * 62
  27. end
  28. # If this candidate's position was in the top district.seats positions, they won a seat
  29. pos <= district.seats ? seats = 1 : seats = 0
  30. puts "%-25s %-25s %5d %2d %d" % [ cand.candidate.surname, cand.candidate.forenames, cand.votes, pos, seats ]
  31. cand.position = pos
  32. cand.seats = seats
  33. cand.save
  34. pos += 1
  35. end
  36. end