浏览代码

Added parliamentary candidates. Text and style changes

tags/last-sinatra-version
Adrian Short 14 年前
父节点
当前提交
ab294690e2
共有 8 个文件被更改,包括 106 次插入60 次删除
  1. +6
    -3
      app.rb
  2. +53
    -34
      import.rb
  3. +17
    -0
      lib/models.rb
  4. +2
    -0
      public/style.css
  5. +10
    -5
      views/about.haml
  6. +4
    -1
      views/home.haml
  7. +1
    -0
      views/layout.haml
  8. +13
    -17
      views/wards.haml

+ 6
- 3
app.rb 查看文件

@@ -1,5 +1,6 @@
require 'rubygems' require 'rubygems'
require 'sinatra' require 'sinatra'
require 'haml'
require 'pat' require 'pat'
require 'dm-core' require 'dm-core'
require 'dm-validations' require 'dm-validations'
@@ -13,7 +14,8 @@ end


get '/wards/:id' do get '/wards/:id' do
@ward = Ward.get(params[:id]) @ward = Ward.get(params[:id])
@candidates = Councilcandidate.all( :ward_id => @ward.id, :order => 'surname' ) @council_candidates = Councilcandidate.all( :ward_id => @ward.id, :order => 'surname' )
@parly_candidates = Parliamentcandidate.all( :constituency_id => @ward.constituency.id, :order => 'surname')
haml :wards haml :wards
end end


@@ -22,8 +24,9 @@ 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 ) @ward = Ward.first( { :name => @ward_name } )
@candidates = Councilcandidate.all( :ward_id => @ward.id, :order => 'surname') @council_candidates = Councilcandidate.all( :ward_id => @ward.id, :order => 'surname')
@parly_candidates = Parliamentcandidate.all( :constituency_id => @ward.constituency.id, :order => 'surname')
haml :wards haml :wards
end end




+ 53
- 34
import.rb 查看文件

@@ -5,51 +5,70 @@ require 'dm-validations'
require 'dm-timestamps' require 'dm-timestamps'
require 'lib/models' require 'lib/models'


DataMapper.setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/db.sqlite3")
DataMapper.auto_upgrade!

# Import wards # 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


CSV::Reader.parse(File.open('wards.csv', 'rb')) do |row| # parties = [
p row # "British National Party",
Ward.create( # "Christian Peoples Alliance",
'ons_id' => row[0], # "Conservative Party",
'name' => row[1] # "Green Party",
) # "Labour Party",
end # "Labour and Co-Operative Party",
# "Liberal Democrats",
# "United Kingdom Independence Party",
# "Libertarian Party"
# ]
#
# for party in parties
# puts party
# Party.create( :name => party )
# end


# Define parties # Import council candidates


parties = [ # CSV::Reader.parse(File.open('../candidates-pretty.csv', 'rb')) do |row|
"British National Party", # p row
"Christian Peoples Alliance", #
"Conservative Party", # c = Councilcandidate.new(
"Green Party", # 'forenames' => row[1],
"Labour Party", # 'surname' => row[2],
"Labour and Co-Operative Party", # 'address' => row[4],
"Liberal Democrats", # 'postcode' => row[5]
"United Kingdom Independence Party" # )
] #

# c.ward = Ward.first( :name => row[0] )
for party in parties # c.party = Party.first( :name => row[3] )
puts party #
Party.create( :name => party ) # unless c.save
end # puts "ERROR: Failed to save candidate"
# c.errors.each do |e|
# puts e
# end
# end
# end


# Import candidates # Import parliament candidates


CSV::Reader.parse(File.open('../candidates-pretty.csv', 'rb')) do |row| CSV::Reader.parse(File.open('../parliament-candidates.csv', 'rb')) do |row|
p row p row
c = Councilcandidate.new( c = Parliamentcandidate.new(
'forenames' => row[1], 'forenames' => row[1],
'surname' => row[2], 'surname' => row[2]
'address' => row[4],
'postcode' => row[5]
) )


c.ward = Ward.first( :name => row[0] ) c.constituency = Constituency.first( :name => row[3] )
c.party = Party.first( :name => row[3] ) c.party = Party.first( :name => row[0] )


unless c.save unless c.save
puts "ERROR: Failed to save candidate" puts "ERROR: Failed to save candidate"


+ 17
- 0
lib/models.rb 查看文件

@@ -31,6 +31,7 @@ class Party
property :name, String, :required => true property :name, String, :required => true
has n, :councilcandidates has n, :councilcandidates
has n, :parliamentcandidates
end end


class Councilcandidate class Councilcandidate
@@ -48,6 +49,21 @@ class Councilcandidate
belongs_to :ward belongs_to :ward
end end


class Parliamentcandidate
include DataMapper::Resource
property :id, Serial
property :constituency_id, Integer, :required => true
property :party_id, Integer, :required => true
property :forenames, String, :required => true
property :surname, String, :required => true
property :address, String, :length => 200
property :postcode, String

belongs_to :party
belongs_to :constituency
end

class Constituency class Constituency
include DataMapper::Resource include DataMapper::Resource
@@ -55,6 +71,7 @@ class Constituency
property :name, String, :required => true property :name, String, :required => true
has n, :wards has n, :wards
has n, :parliamentcandidates
end end


DataMapper.setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/db.sqlite3") DataMapper.setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/db.sqlite3")

+ 2
- 0
public/style.css 查看文件

@@ -56,6 +56,7 @@ a:hover
h2 h2
{ {
margin-top: 50px; margin-top: 50px;
line-height: 1.5em;
} }


form form
@@ -78,6 +79,7 @@ a.date
h1 h1
{ {
margin-top: 50px; margin-top: 50px;
line-height: 1.5em;
} }


.candidate_name .candidate_name


+ 10
- 5
views/about.haml 查看文件

@@ -2,15 +2,20 @@


%p %p
This website was designed by This website was designed by
%a{ :href => 'http://adrianshort.co.uk' } Adrian Short %a{ :href => 'http://adrianshort.co.uk' }> Adrian Short
\.
You can contact me by email at
%a{ :href => "mailto:adrian.short@gmail.com" }< adrian.short@gmail.com
and
%a{ :href => "http://twitter.com/adrianshort" }<follow me on Twitter
\.
%p It is independent of Sutton Council, all political parties and candidates. %p This site is independent of Sutton Council, all political parties and candidates. It exists only to provide information about the voting system and local candidates.


%p %p
The code for this website is open source and managed on Github. It is hosted by Heroku. The council candidates' data comes from Sutton Council who also provided information on council wards and parliamentary constituencies.

%p %p
The candidates' data comes from Sutton Council who also provided information on council wards and parliamentary constituencies. The code for this website is open source and managed on Github. It is hosted by Heroku.
%p %p
The postcode lookup is done by UK Postcodes using open data from Ordnance Survey Code-Point Open enhanced by MySociety. I use the Ruby Pat gem to access the postcodes API. The postcode lookup is done by UK Postcodes using open data from Ordnance Survey Code-Point Open enhanced by MySociety. I use the Ruby Pat gem to access the postcodes API.


+ 4
- 1
views/home.haml 查看文件

@@ -1,4 +1,7 @@
%h1 One day. Two elections in Sutton. %h1
Vote for your MP and councillors
%br
in Sutton


%p %p
On 6 May you can vote to On 6 May you can vote to


+ 1
- 0
views/layout.haml 查看文件

@@ -1,3 +1,4 @@
!!! XML
!!! !!!
%html %html
%head %head


+ 13
- 17
views/wards.haml 查看文件

@@ -1,16 +1,5 @@
- if @postcode %h1
%h1 Candidates for
= @postcode
is in
= @ward_name
Ward
-else
%h1
= @ward.name
Ward

%h2
Your candidates for
= @ward.constituency.name = @ward.constituency.name
member of parliament member of parliament
@@ -19,7 +8,14 @@
%strong %strong
ONE ONE
of these people to become your next MP. of these people to become your next MP.
- for candidate in @parly_candidates
%p
%span.candidate_name
= candidate.forenames
= candidate.surname
%br
= candidate.party.name
%p.highlight %p.highlight
This list of candidates may be incomplete as people have until This list of candidates may be incomplete as people have until
@@ -29,8 +25,8 @@
= @ward.constituency.name = @ward.constituency.name
MP. MP.
%h2 %h1
Your council candidates in Council candidates in
= @ward.name = @ward.name
Ward Ward


@@ -44,7 +40,7 @@
Find out more about Find out more about
%a{ :href => '/how-the-council-election-works' } how the council election works. %a{ :href => '/how-the-council-election-works' } how the council election works.
- for candidate in @candidates - for candidate in @council_candidates
%p %p
%span.candidate_name %span.candidate_name
= candidate.forenames = candidate.forenames


||||||
xxxxxxxxxx
000:0
正在加载...
取消
保存