| @@ -25,6 +25,8 @@ get '/wards' do | |||||
| result = Pat.get(@postcode) | result = Pat.get(@postcode) | ||||
| @district_name = result['administrative']['district']['title'] | @district_name = result['administrative']['district']['title'] | ||||
| @ward_name = result['administrative']['ward']['title'] | @ward_name = result['administrative']['ward']['title'] | ||||
| @ward = Ward.first( :name => @ward_name ) | |||||
| @candidates = Councilcandidate.all( :ward_id => @ward.id ) | |||||
| haml :wards | haml :wards | ||||
| end | end | ||||
| @@ -0,0 +1,60 @@ | |||||
| require 'rubygems' | |||||
| require 'csv' | |||||
| require 'dm-core' | |||||
| require 'dm-validations' | |||||
| require 'dm-timestamps' | |||||
| require 'lib/models' | |||||
| DataMapper.setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/db.sqlite3") | |||||
| DataMapper.auto_upgrade! | |||||
| # Import wards | |||||
| CSV::Reader.parse(File.open('wards.csv', 'rb')) do |row| | |||||
| p row | |||||
| Ward.create( | |||||
| 'ons_id' => row[0], | |||||
| 'name' => row[1] | |||||
| ) | |||||
| end | |||||
| # Define parties | |||||
| parties = [ | |||||
| "British National Party", | |||||
| "Christian Peoples Alliance", | |||||
| "Conservative Party", | |||||
| "Green Party", | |||||
| "Labour Party", | |||||
| "Labour and Co-Operative Party", | |||||
| "Liberal Democrats", | |||||
| "United Kingdom Independence Party" | |||||
| ] | |||||
| for party in parties | |||||
| puts party | |||||
| Party.create( :name => party ) | |||||
| end | |||||
| # Import candidates | |||||
| CSV::Reader.parse(File.open('../candidates-pretty.csv', 'rb')) do |row| | |||||
| p row | |||||
| c = Councilcandidate.new( | |||||
| 'forenames' => row[1], | |||||
| 'surname' => row[2], | |||||
| 'address' => row[4], | |||||
| 'postcode' => row[5] | |||||
| ) | |||||
| c.ward = Ward.first( :name => row[0] ) | |||||
| c.party = Party.first( :name => row[3] ) | |||||
| unless c.save | |||||
| puts "ERROR: Failed to save candidate" | |||||
| c.errors.each do |e| | |||||
| puts e | |||||
| end | |||||
| end | |||||
| end | |||||
| @@ -39,7 +39,7 @@ class Councilcandidate | |||||
| property :party_id, Integer, :required => true | property :party_id, Integer, :required => true | ||||
| property :forenames, String | property :forenames, String | ||||
| property :surname, String | property :surname, String | ||||
| property :address, String | |||||
| property :address, String, :length => 200 | |||||
| property :postcode, String | property :postcode, String | ||||
| belongs_to :party | belongs_to :party | ||||
| @@ -65,7 +65,7 @@ form | |||||
| a.date | a.date | ||||
| { | { | ||||
| font-size: 620%; | |||||
| font-size: 600%; | |||||
| font-weight: bold; | font-weight: bold; | ||||
| padding: 30px 30px; | padding: 30px 30px; | ||||
| } | } | ||||
| @@ -78,4 +78,9 @@ a.date | |||||
| h1 | h1 | ||||
| { | { | ||||
| margin-top: 50px; | margin-top: 50px; | ||||
| } | |||||
| .candidate_name | |||||
| { | |||||
| font-size: 150%; | |||||
| } | } | ||||
| @@ -2,10 +2,10 @@ | |||||
| %html | %html | ||||
| %head | %head | ||||
| %title Sutton Council Elections 2010 | %title Sutton Council Elections 2010 | ||||
| %link{ :rel => 'stylesheet', :type => 'text/css', :href => 'style.css' } | |||||
| %link{ :rel => 'stylesheet', :type => 'text/css', :href => '/style.css' } | |||||
| %body | %body | ||||
| #header | #header | ||||
| %a.date{ :href => '/' } 6 May 2010 | |||||
| %a.date{ :href => '/' } 6 MAY 2010 | |||||
| #main | #main | ||||
| = yield | = yield | ||||
| #footer | #footer | ||||
| @@ -2,19 +2,24 @@ | |||||
| = @ward.name | = @ward.name | ||||
| Ward | Ward | ||||
| - if @postcode | |||||
| %h2 | |||||
| = @postcode | |||||
| is in | |||||
| %span.highlight | |||||
| = @ward_name | |||||
| Ward | |||||
| in | |||||
| = @district_name | |||||
| %h2 | %h2 | ||||
| = @postcode | |||||
| is in | |||||
| %span.highlight | |||||
| = @ward_name | |||||
| Ward | |||||
| in | |||||
| = @district_name | |||||
| Council candidates in | |||||
| = @ward.name | |||||
| %h2 Council Candidates | |||||
| - for candidate in @candidates | - for candidate in @candidates | ||||
| %p | %p | ||||
| = candidate.forenames | |||||
| = candidate.surname | |||||
| %span.candidate_name | |||||
| = candidate.forenames | |||||
| = candidate.surname | |||||
| %br | %br | ||||
| = candidate.party.name | = candidate.party.name | ||||
| @@ -0,0 +1,18 @@ | |||||
| 00BFGC,Beddington North | |||||
| 00BFGD,Beddington South | |||||
| 00BFGE,Belmont | |||||
| 00BFGF,Carshalton Central | |||||
| 00BFGG,Carshalton South and Clockhouse | |||||
| 00BFGH,Cheam | |||||
| 00BFGJ,Nonsuch | |||||
| 00BFGK,St Helier | |||||
| 00BFGL,Stonecot | |||||
| 00BFGM,Sutton Central | |||||
| 00BFGN,Sutton North | |||||
| 00BFGP,Sutton South | |||||
| 00BFGQ,Sutton West | |||||
| 00BFGR,The Wrythe | |||||
| 00BFGS,Wallington North | |||||
| 00BFGT,Wallington South | |||||
| 00BFGU,Wandle Valley | |||||
| 00BFGW,Worcester Park | |||||