hdo-storting-importer 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -29,6 +29,24 @@ module Hdo
|
|
29
29
|
new(*arr)
|
30
30
|
end
|
31
31
|
|
32
|
+
def self.from_storting_doc(doc)
|
33
|
+
doc.css("voteringsforslag").map do |n|
|
34
|
+
rep_node = n.css("forslag_levert_av_representant").first
|
35
|
+
if rep_node && rep_node['nil'] != 'true'
|
36
|
+
delivered_by = Representative.from_storting_node(rep_node)
|
37
|
+
else
|
38
|
+
delivered_by = nil
|
39
|
+
end
|
40
|
+
|
41
|
+
new n.css("forslag_id").first.text,
|
42
|
+
n.css("forslag_betegnelse").first.text,
|
43
|
+
n.css("forslag_paa_vegne_av_tekst").first.text,
|
44
|
+
Util.remove_invalid_html(n.css("forslag_tekst").first.text),
|
45
|
+
delivered_by
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
32
50
|
def initialize(external_id, description, on_behalf_of, body, delivered_by)
|
33
51
|
@external_id = external_id
|
34
52
|
@description = description
|
@@ -103,21 +103,7 @@ module Hdo
|
|
103
103
|
end
|
104
104
|
|
105
105
|
def add_storting_propositions(node)
|
106
|
-
@propositions +=
|
107
|
-
rep_node = n.css("forslag_levert_av_representant").first
|
108
|
-
if rep_node && rep_node['nil'] != 'true'
|
109
|
-
delivered_by = Representative.from_storting_node(rep_node)
|
110
|
-
else
|
111
|
-
delivered_by = nil
|
112
|
-
end
|
113
|
-
|
114
|
-
Proposition.new n.css("forslag_id").first.text,
|
115
|
-
n.css("forslag_betegnelse").first.text,
|
116
|
-
n.css("forslag_paa_vegne_av_tekst").first.text,
|
117
|
-
Util.remove_invalid_html(n.css("forslag_tekst").first.text),
|
118
|
-
delivered_by
|
119
|
-
|
120
|
-
end
|
106
|
+
@propositions += Proposition.from_storting_doc(node)
|
121
107
|
end
|
122
108
|
|
123
109
|
def add_storting_results(node)
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# encoding: UTF-8
|
1
2
|
require 'spec_helper'
|
2
3
|
|
3
4
|
module Hdo
|
@@ -7,6 +8,80 @@ module Hdo
|
|
7
8
|
it_behaves_like 'type with JSON schema'
|
8
9
|
it_behaves_like 'type with #short_inspect'
|
9
10
|
|
11
|
+
it 'builds proposition from the Storting XML' do
|
12
|
+
xml = <<-XML
|
13
|
+
<voteringsforslag>
|
14
|
+
<versjon>1.0</versjon>
|
15
|
+
<forslag_betegnelse>Forslag nr. 24 fra Per Olaf Lundteigen på vegne av Senterpartiet</forslag_betegnelse>
|
16
|
+
<forslag_betegnelse_kort>nr. 24 på vegne av Sp</forslag_betegnelse_kort>
|
17
|
+
<forslag_id>40037987</forslag_id>
|
18
|
+
<forslag_levert_av_representant>
|
19
|
+
<versjon>1.0</versjon>
|
20
|
+
<doedsdato>0001-01-01T00:00:00</doedsdato>
|
21
|
+
<etternavn>Lundteigen</etternavn>
|
22
|
+
<foedselsdato>1953-04-18T00:00:00</foedselsdato>
|
23
|
+
<fornavn>Per Olaf</fornavn>
|
24
|
+
<id>POL</id>
|
25
|
+
<kjoenn>mann</kjoenn>
|
26
|
+
</forslag_levert_av_representant>
|
27
|
+
<forslag_paa_vegne_av_tekst>Senterpartiet:</forslag_paa_vegne_av_tekst>
|
28
|
+
<forslag_sorteringsnummer>0</forslag_sorteringsnummer>
|
29
|
+
<forslag_tekst><p>Stortinget ber regjeringa arbeide for å øke sjølforsyningsgraden av mat fra norsk jordbruk.</p></forslag_tekst>
|
30
|
+
<forslag_type>loest_forslag</forslag_type>
|
31
|
+
</voteringsforslag>
|
32
|
+
XML
|
33
|
+
|
34
|
+
props = Proposition.from_storting_doc(parse(xml))
|
35
|
+
props.size.should == 1
|
36
|
+
|
37
|
+
prop = props.first
|
38
|
+
|
39
|
+
prop.external_id.should == "40037987"
|
40
|
+
prop.delivered_by.should be_kind_of(Representative)
|
41
|
+
prop.on_behalf_of.should == "Senterpartiet:"
|
42
|
+
prop.description.should == "Forslag nr. 24 fra Per Olaf Lundteigen på vegne av Senterpartiet"
|
43
|
+
prop.body.should == "<p>Stortinget ber regjeringa arbeide for å øke sjølforsyningsgraden av mat fra norsk jordbruk.</p>"
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'builds a proposition from buggy Storting XML' do
|
47
|
+
# see https://github.com/holderdeord/hdo-site/issues/138
|
48
|
+
xml = <<-XML
|
49
|
+
<?xml version="1.0" encoding="utf-8"?>
|
50
|
+
<voteringsforslag_oversikt xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://data.stortinget.no">
|
51
|
+
<versjon>1.0</versjon>
|
52
|
+
<votering_id>2409</votering_id>
|
53
|
+
<voteringsforslag_liste>
|
54
|
+
<voteringsforslag>
|
55
|
+
<versjon>1.0</versjon>
|
56
|
+
<forslag_betegnelse i:nil="true" />
|
57
|
+
<forslag_betegnelse_kort i:nil="true" />
|
58
|
+
<forslag_id>-1</forslag_id>
|
59
|
+
<forslag_levert_av_representant i:nil="true" />
|
60
|
+
<forslag_paa_vegne_av_tekst i:nil="true" />
|
61
|
+
<forslag_sorteringsnummer>0</forslag_sorteringsnummer>
|
62
|
+
<forslag_tekst><FONT SIZE=2>
|
63
|
+
<div class=WordSection1>
|
64
|
+
<p class=MsoNormal>Utenriksministerens redegjørelse om utviklingen i
|
65
|
+
Afghanistan samt norsk sivilt og militært engasjement i Stortingets møte 29.
|
66
|
+
mai 2012 - vedlegges protokollen.<BR>
|
67
|
+
</div>
|
68
|
+
</FONT>
|
69
|
+
</forslag_tekst>
|
70
|
+
<forslag_type>ikke_spesifisert</forslag_type>
|
71
|
+
</voteringsforslag>
|
72
|
+
</voteringsforslag_liste>
|
73
|
+
</voteringsforslag_oversikt>
|
74
|
+
XML
|
75
|
+
|
76
|
+
props = Proposition.from_storting_doc(parse(xml))
|
77
|
+
props.size.should == 1
|
78
|
+
|
79
|
+
prop = props.first
|
80
|
+
prop.description.should == ""
|
81
|
+
prop.external_id.should == "-1"
|
82
|
+
prop.body.should_not be_empty
|
83
|
+
end
|
84
|
+
|
10
85
|
end
|
11
86
|
end
|
12
87
|
end
|