daengine 0.6.10 → 0.6.11
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.
- checksums.yaml +4 -4
- data/app/models/service_digital_asset.rb +6 -2
- data/lib/daengine/teamsite_metadata_processor.rb +9 -7
- data/lib/daengine/version.rb +1 -1
- data/spec/dummy/log/test.log +100 -0
- data/spec/lib/teamsite_metadata_processor_spec.rb +22 -11
- data/spec/mock_data/daengine.yml +1 -1
- data/spec/mock_data/taxonomy/taxonomyengine.yml +1 -1
- data/spec/models/service_digital_asset_spec.rb +12 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4a2ff236a90f4e3e9fd22ca6586e641cd968e5f9
|
4
|
+
data.tar.gz: 36a66024ce2ac659e8cdcea149c9b855607969eb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a2191f074c80c664e0f56dbf370015d6c1549c0900732ff8fea277374b99653673a527d87519b8a15aaca790f5428af6b6ff5ec9d4ee9576a6df81334f88cff
|
7
|
+
data.tar.gz: 6d58d4df8d1577e312a0c84dc135ae53d50292bcbbc084419fe25072ae82c04fcb695fd9d42f020fd80d602687875c4d407a0569a2a06b995db3baf1f72f157e
|
@@ -89,9 +89,13 @@ class ServiceDigitalAsset < ActiveRecord::Base
|
|
89
89
|
{'digital_asset' => hash}
|
90
90
|
end
|
91
91
|
|
92
|
-
def default_blank_time(time_field)
|
92
|
+
def default_blank_time(time_field, default_time = 10.years.ago)
|
93
93
|
time = send(time_field.to_sym)
|
94
|
-
time.blank? ?
|
94
|
+
time.blank? ? default_time : time
|
95
|
+
end
|
96
|
+
|
97
|
+
def changed_since(date)
|
98
|
+
!changed_at.blank? && changed_at.to_i >= date.to_i
|
95
99
|
end
|
96
100
|
|
97
101
|
def self.boolean_field?(field_name)
|
@@ -10,7 +10,7 @@ module Daengine
|
|
10
10
|
|
11
11
|
time do
|
12
12
|
assets = parse_file(file)
|
13
|
-
assets = select_1_asset_per_id(assets)
|
13
|
+
assets = select_1_asset_per_id(assets, last_read)
|
14
14
|
assets = add_file_attributes(assets, last_read) unless Daengine.config[:disable_file_check]
|
15
15
|
assets = add_fund_codes(assets)
|
16
16
|
summary = call_service(assets)
|
@@ -30,19 +30,21 @@ module Daengine
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def self.parse_file(file)
|
33
|
-
puts "----- Parsing the file -----"
|
33
|
+
puts "----- Parsing the file -----"
|
34
34
|
document = Document.new
|
35
35
|
Nokogiri::XML::SAX::Parser.new(document).parse(file)
|
36
36
|
Daengine.log("Nokogiri Parser complete...", "info")
|
37
37
|
document.assets
|
38
38
|
end
|
39
39
|
|
40
|
-
def self.select_1_asset_per_id(assets)
|
40
|
+
def self.select_1_asset_per_id(assets, last_read)
|
41
|
+
comparison_date = last_read.nil? ? 10.years.ago : last_read - 5.minutes
|
41
42
|
results = {}
|
42
43
|
assets.each do |key, values|
|
43
|
-
puts "----- select_1 #{key} -----"
|
44
|
+
puts "----- select_1 #{key} -----"
|
44
45
|
list = values.find_all { |v| v.effective? }
|
45
46
|
asset = most_recent_non_expired(list)
|
47
|
+
asset = (asset.changed_since(comparison_date) ? asset : nil) unless asset.nil?
|
46
48
|
asset.finra_path = finra_path(list) unless asset.nil?
|
47
49
|
results[key] = asset unless asset.nil?
|
48
50
|
end
|
@@ -53,7 +55,7 @@ puts "----- select_1 #{key} -----"
|
|
53
55
|
results = {}
|
54
56
|
assets.each do |key, asset|
|
55
57
|
begin
|
56
|
-
puts "----- add_file #{key} -----"
|
58
|
+
puts "----- add_file #{key} -----"
|
57
59
|
file_name = asset_file_name(asset)
|
58
60
|
asset.mark_for_deletion unless File.file?(file_name)
|
59
61
|
|
@@ -70,7 +72,7 @@ puts "----- add_file #{key} -----"
|
|
70
72
|
def self.add_fund_codes(assets)
|
71
73
|
results = {}
|
72
74
|
assets.each do |key, asset|
|
73
|
-
puts "----- add_fund_codes #{key} -----"
|
75
|
+
puts "----- add_fund_codes #{key} -----"
|
74
76
|
fund_codes = []
|
75
77
|
asset.product_ids.each do |product_id|
|
76
78
|
fund_code = DigitalAssetLookupService.fund_code_from_id(product_id)
|
@@ -86,7 +88,7 @@ puts "----- add_fund_codes #{key} -----"
|
|
86
88
|
results = {:errors => 0, :updated => 0, :deleted => 0}
|
87
89
|
assets.each_value do |asset|
|
88
90
|
begin
|
89
|
-
puts "----- call_service #{asset.digital_asset_id} -----"
|
91
|
+
puts "----- call_service #{asset.digital_asset_id} -----"
|
90
92
|
if asset.delete?
|
91
93
|
path = "#{service_uri}/#{asset.digital_asset_id}"
|
92
94
|
options = {:method => :delete, :headers => header}
|
data/lib/daengine/version.rb
CHANGED
data/spec/dummy/log/test.log
CHANGED
@@ -9200,3 +9200,103 @@ Completed 406 Not Acceptable in 2.0ms
|
|
9200
9200
|
Processing by DigitalAssetsController#search as HTML
|
9201
9201
|
Parameters: {"digital_asset_id"=>"blargh-blargh-blargh", "title"=>"Doc Title"}
|
9202
9202
|
Completed 406 Not Acceptable in 1.0ms
|
9203
|
+
Started GET "/digital_assets" for 127.0.0.1 at 2014-02-12 11:20:27 -0700
|
9204
|
+
Processing by DigitalAssetsController#index as JSON
|
9205
|
+
Completed 200 OK in 6.0ms (Views: 4.0ms)
|
9206
|
+
Started GET "/digital_assets?digital_asset_id=id-foobar-permanent-1" for 127.0.0.1 at 2014-02-12 11:20:27 -0700
|
9207
|
+
Processing by DigitalAssetsController#index as JSON
|
9208
|
+
Parameters: {"digital_asset_id"=>"id-foobar-permanent-1"}
|
9209
|
+
Completed 200 OK in 31.0ms (Views: 29.0ms)
|
9210
|
+
Started GET "/digital_assets?fund=00200" for 127.0.0.1 at 2014-02-12 11:20:27 -0700
|
9211
|
+
Processing by DigitalAssetsController#index as JSON
|
9212
|
+
Parameters: {"fund"=>"00200"}
|
9213
|
+
Completed 200 OK in 27.0ms (Views: 25.0ms)
|
9214
|
+
Started GET "/digital_assets?digital_asset_id=id-foobar-permanent-4" for 127.0.0.1 at 2014-02-12 11:20:27 -0700
|
9215
|
+
Processing by DigitalAssetsController#index as JSON
|
9216
|
+
Parameters: {"digital_asset_id"=>"id-foobar-permanent-4"}
|
9217
|
+
Completed 200 OK in 27.0ms (Views: 21.0ms)
|
9218
|
+
Started GET "/digital_assets?path=%2Fsome%2Fother%2Fpath.pdf" for 127.0.0.1 at 2014-02-12 11:20:27 -0700
|
9219
|
+
Processing by DigitalAssetsController#index as JSON
|
9220
|
+
Parameters: {"path"=>"/some/other/path.pdf"}
|
9221
|
+
Completed 200 OK in 22.0ms (Views: 20.0ms)
|
9222
|
+
Started GET "/digital_assets?digital_asset_id=id-foobar-permanent-6" for 127.0.0.1 at 2014-02-12 11:20:27 -0700
|
9223
|
+
Processing by DigitalAssetsController#index as JSON
|
9224
|
+
Parameters: {"digital_asset_id"=>"id-foobar-permanent-6"}
|
9225
|
+
Completed 200 OK in 33.0ms (Views: 29.0ms)
|
9226
|
+
Started GET "/digital_assets?published=2014-02-12+16%3A20%3A27+UTC" for 127.0.0.1 at 2014-02-12 11:20:27 -0700
|
9227
|
+
Processing by DigitalAssetsController#index as JSON
|
9228
|
+
Parameters: {"published"=>"2014-02-12 16:20:27 UTC"}
|
9229
|
+
Completed 200 OK in 78.0ms (Views: 25.0ms)
|
9230
|
+
Started GET "/digital_assets/foo-bar-id" for 127.0.0.1 at 2014-02-12 11:20:27 -0700
|
9231
|
+
Processing by DigitalAssetsController#show as JSON
|
9232
|
+
Parameters: {"id"=>"foo-bar-id"}
|
9233
|
+
Completed 200 OK in 46.0ms (Views: 12.0ms)
|
9234
|
+
Started GET "/digital_assets/not-found-doc" for 127.0.0.1 at 2014-02-12 11:20:28 -0700
|
9235
|
+
Processing by DigitalAssetsController#show as JSON
|
9236
|
+
Parameters: {"id"=>"not-found-doc"}
|
9237
|
+
Completed 404 Not Found in 80.0ms (Views: 1.0ms)
|
9238
|
+
Started PUT "/digital_assets/foo-bar-digital-asset-id" for 127.0.0.1 at 2014-02-12 11:20:28 -0700
|
9239
|
+
Processing by DigitalAssetsController#update as JSON
|
9240
|
+
Parameters: {"digital_asset"=>{"audiences"=>["investor"], "omniture_codes"=>["KOW2MY24D"], "orderable"=>"false", "pages"=>"1", "fund_codes"=>["00200", "00190", "00210"], "_id"=>"foo-bar-digital-asset-id", "title"=>"another title", "changed_at"=>"2014-02-10 18:20:26 UTC", "digital_asset_id"=>"foo-bar-digital-asset-id", "published_at"=>"2014-02-02 18:20:26 UTC", "expires_at"=>"2014-04-12 18:20:26 UTC", "sami_code"=>"IL1111.077", "business_owner"=>"biz owner", "path"=>"/9/foo/bar.txt", "finra_path"=>"/path/finradoc/10/foo/bar.txt", "legacy_path"=>"/oldpath/10/foo/bar.txt", "doc_changed_at"=>"2014-02-10 18:20:26 UTC", "content_type"=>"fact_sheet", "updated_at"=>"2014-02-12 18:20:28 UTC", "created_at"=>"2014-02-12 18:20:28 UTC"}, "id"=>"foo-bar-digital-asset-id"}
|
9241
|
+
Completed 200 OK in 30.0ms
|
9242
|
+
Started POST "/digital_assets" for 127.0.0.1 at 2014-02-12 11:20:28 -0700
|
9243
|
+
Processing by DigitalAssetsController#create as JSON
|
9244
|
+
Parameters: {"digital_asset"=>{"audiences"=>["investor"], "omniture_codes"=>["KOW2MY24D"], "orderable"=>"false", "pages"=>"1", "fund_codes"=>["00200", "00190", "00210"], "_id"=>"52fbbb6cf2e6a4e84c4c68dd", "title"=>"Doc Title", "changed_at"=>"2014-02-10 18:20:26 UTC", "digital_asset_id"=>"new-digital-asset-id", "published_at"=>"2014-02-02 18:20:26 UTC", "expires_at"=>"2014-04-12 18:20:26 UTC", "sami_code"=>"IL1111.077", "business_owner"=>"biz owner", "path"=>"/10/foo/bar.txt", "finra_path"=>"/path/finradoc/11/foo/bar.txt", "legacy_path"=>"/oldpath/11/foo/bar.txt", "doc_changed_at"=>"2014-02-10 18:20:26 UTC", "content_type"=>"fact_sheet"}}
|
9245
|
+
Completed 201 Created in 80.0ms
|
9246
|
+
Started DELETE "/digital_assets/foo-bar-digital-asset-id" for 127.0.0.1 at 2014-02-12 11:20:28 -0700
|
9247
|
+
Processing by DigitalAssetsController#destroy as JSON
|
9248
|
+
Parameters: {"id"=>"foo-bar-digital-asset-id"}
|
9249
|
+
Completed 200 OK in 6.0ms
|
9250
|
+
Started POST "/digital_assets/updated_time" for 127.0.0.1 at 2014-02-12 11:20:28 -0700
|
9251
|
+
Processing by DigitalAssetsController#updated_time as JSON
|
9252
|
+
Parameters: {"ids"=>["id-1", "id-2", "id-3", "id-4"]}
|
9253
|
+
Completed 200 OK in 42.0ms (Views: 0.0ms)
|
9254
|
+
Processing by DigitalAssetsController#index as HTML
|
9255
|
+
Completed 200 OK in 4.0ms (Views: 2.0ms)
|
9256
|
+
Processing by DigitalAssetsController#show as HTML
|
9257
|
+
Parameters: {"id"=>"id-foobar-permanent-9"}
|
9258
|
+
Completed 406 Not Acceptable in 5.0ms
|
9259
|
+
Processing by DigitalAssetsController#show as HTML
|
9260
|
+
Parameters: {"id"=>"IL1111.077"}
|
9261
|
+
Completed 406 Not Acceptable in 9.0ms
|
9262
|
+
Processing by DigitalAssetsController#show as HTML
|
9263
|
+
Parameters: {"id"=>"IL1111.077"}
|
9264
|
+
Completed 406 Not Acceptable in 6.0ms
|
9265
|
+
Processing by DigitalAssetsController#show as HTML
|
9266
|
+
Parameters: {"id"=>"id-foobar-permanent-13"}
|
9267
|
+
Completed 406 Not Acceptable in 5.0ms
|
9268
|
+
Processing by DigitalAssetsController#search as HTML
|
9269
|
+
Completed 200 OK in 5.0ms (Views: 4.0ms)
|
9270
|
+
Processing by DigitalAssetsController#search as HTML
|
9271
|
+
Parameters: {"path"=>"/one/off.path"}
|
9272
|
+
Completed 200 OK in 18.0ms (Views: 16.0ms)
|
9273
|
+
Processing by DigitalAssetsController#search as HTML
|
9274
|
+
Parameters: {"doctype"=>"fact_sheet"}
|
9275
|
+
Completed 200 OK in 8.0ms (Views: 3.0ms)
|
9276
|
+
Processing by DigitalAssetsController#search as HTML
|
9277
|
+
Parameters: {"doctype"=>["fact_sheet", "prospectus"]}
|
9278
|
+
Completed 200 OK in 18.0ms (Views: 16.0ms)
|
9279
|
+
Processing by DigitalAssetsController#search as HTML
|
9280
|
+
Parameters: {"sami"=>"SOMETHING.001"}
|
9281
|
+
Completed 200 OK in 33.0ms (Views: 32.0ms)
|
9282
|
+
Processing by DigitalAssetsController#search as HTML
|
9283
|
+
Parameters: {"audience"=>"492"}
|
9284
|
+
Completed 200 OK in 37.0ms (Views: 35.0ms)
|
9285
|
+
Processing by DigitalAssetsController#search as HTML
|
9286
|
+
Parameters: {"title"=>"Doc Title"}
|
9287
|
+
Completed 200 OK in 6.0ms (Views: 3.0ms)
|
9288
|
+
Processing by DigitalAssetsController#search as HTML
|
9289
|
+
Parameters: {"digital_asset_id"=>"id-foobar-permanent-35"}
|
9290
|
+
Completed 200 OK in 19.0ms (Views: 18.0ms)
|
9291
|
+
Processing by DigitalAssetsController#search as HTML
|
9292
|
+
Parameters: {"business_owner"=>"biz owner"}
|
9293
|
+
Completed 200 OK in 4.0ms (Views: 2.0ms)
|
9294
|
+
Processing by DigitalAssetsController#search as HTML
|
9295
|
+
Parameters: {"digital_asset_id"=>"id-foobar-permanent-42", "title"=>"Doc Title"}
|
9296
|
+
Completed 200 OK in 13.0ms (Views: 11.0ms)
|
9297
|
+
Processing by DigitalAssetsController#search as HTML
|
9298
|
+
Parameters: {"title"=>"Doc Title", "audiences"=>["investor"], "sami"=>"IL1111.077"}
|
9299
|
+
Completed 200 OK in 93.0ms (Views: 90.0ms)
|
9300
|
+
Processing by DigitalAssetsController#search as HTML
|
9301
|
+
Parameters: {"digital_asset_id"=>"blargh-blargh-blargh", "title"=>"Doc Title"}
|
9302
|
+
Completed 200 OK in 4.0ms (Views: 2.0ms)
|
@@ -37,15 +37,16 @@ describe Daengine::TeamsiteMetadataProcessor do
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
-
context '#
|
40
|
+
context '#select_1_asset_per_id' do
|
41
41
|
let(:asset) { FactoryGirl.build :service_digital_asset }
|
42
42
|
let(:other_asset) { FactoryGirl.build :service_digital_asset }
|
43
|
+
let(:last_read) { 1.year.ago }
|
43
44
|
|
44
45
|
it 'should return assets that are effective' do
|
45
46
|
id = asset.digital_asset_id
|
46
47
|
assets = {id => [asset]}
|
47
48
|
|
48
|
-
results = subject.select_1_asset_per_id(assets)
|
49
|
+
results = subject.select_1_asset_per_id(assets, last_read)
|
49
50
|
|
50
51
|
results[id].should == asset
|
51
52
|
end
|
@@ -55,7 +56,7 @@ describe Daengine::TeamsiteMetadataProcessor do
|
|
55
56
|
asset.expires_at = nil
|
56
57
|
assets = {id => [asset]}
|
57
58
|
|
58
|
-
results = subject.select_1_asset_per_id(assets)
|
59
|
+
results = subject.select_1_asset_per_id(assets, last_read)
|
59
60
|
|
60
61
|
results[id].should be_nil
|
61
62
|
end
|
@@ -65,7 +66,7 @@ describe Daengine::TeamsiteMetadataProcessor do
|
|
65
66
|
asset.display_on_website = false
|
66
67
|
assets = {id => [asset]}
|
67
68
|
|
68
|
-
results = subject.select_1_asset_per_id(assets)
|
69
|
+
results = subject.select_1_asset_per_id(assets, last_read)
|
69
70
|
|
70
71
|
results[id].should be_nil
|
71
72
|
end
|
@@ -75,12 +76,12 @@ describe Daengine::TeamsiteMetadataProcessor do
|
|
75
76
|
other_asset.expires_at = 1.day.ago
|
76
77
|
|
77
78
|
assets = {id => [asset, other_asset]}
|
78
|
-
results = subject.select_1_asset_per_id(assets)
|
79
|
+
results = subject.select_1_asset_per_id(assets, last_read)
|
79
80
|
results[id].should == asset
|
80
81
|
|
81
82
|
# order in list shouldn't matter
|
82
83
|
assets = {id => [other_asset, asset]}
|
83
|
-
results = subject.select_1_asset_per_id(assets)
|
84
|
+
results = subject.select_1_asset_per_id(assets, last_read)
|
84
85
|
results[id].should == asset
|
85
86
|
end
|
86
87
|
|
@@ -89,12 +90,12 @@ describe Daengine::TeamsiteMetadataProcessor do
|
|
89
90
|
other_asset.path = '/foo/manifest' + other_asset.path
|
90
91
|
|
91
92
|
assets = {id => [asset, other_asset]}
|
92
|
-
results = subject.select_1_asset_per_id(assets)
|
93
|
+
results = subject.select_1_asset_per_id(assets, last_read)
|
93
94
|
results[id].should == asset
|
94
95
|
|
95
96
|
# order in list shouldn't matter
|
96
97
|
assets = {id => [other_asset, asset]}
|
97
|
-
results = subject.select_1_asset_per_id(assets)
|
98
|
+
results = subject.select_1_asset_per_id(assets, last_read)
|
98
99
|
results[id].should == asset
|
99
100
|
end
|
100
101
|
|
@@ -103,12 +104,12 @@ describe Daengine::TeamsiteMetadataProcessor do
|
|
103
104
|
other_asset.content_type = DigitalAsset::ContentType::FINRA
|
104
105
|
|
105
106
|
assets = {id => [asset, other_asset]}
|
106
|
-
results = subject.select_1_asset_per_id(assets)
|
107
|
+
results = subject.select_1_asset_per_id(assets, last_read)
|
107
108
|
results[id].should == asset
|
108
109
|
|
109
110
|
# order in list shouldn't matter
|
110
111
|
assets = {id => [other_asset, asset]}
|
111
|
-
results = subject.select_1_asset_per_id(assets)
|
112
|
+
results = subject.select_1_asset_per_id(assets, last_read)
|
112
113
|
results[id].should == asset
|
113
114
|
end
|
114
115
|
|
@@ -118,11 +119,21 @@ describe Daengine::TeamsiteMetadataProcessor do
|
|
118
119
|
finra_path = other_asset.path
|
119
120
|
|
120
121
|
assets = {id => [asset, other_asset]}
|
121
|
-
results = subject.select_1_asset_per_id(assets)
|
122
|
+
results = subject.select_1_asset_per_id(assets, last_read)
|
122
123
|
result = results[id]
|
123
124
|
result.should == asset
|
124
125
|
result.finra_path.should == finra_path
|
125
126
|
end
|
127
|
+
|
128
|
+
it 'should remove assets that have not changed since the last_read time' do
|
129
|
+
read_time = 1.day.ago
|
130
|
+
id = asset.digital_asset_id
|
131
|
+
assets = {id => [asset]}
|
132
|
+
|
133
|
+
results = subject.select_1_asset_per_id(assets, read_time)
|
134
|
+
|
135
|
+
results[id].should be_nil
|
136
|
+
end
|
126
137
|
end
|
127
138
|
|
128
139
|
context '#add_file_attributes' do
|
data/spec/mock_data/daengine.yml
CHANGED
@@ -1 +1 @@
|
|
1
|
-
last_read_time: 2014-02-
|
1
|
+
last_read_time: 2014-02-12 11:20:31 -0700
|
@@ -1 +1 @@
|
|
1
|
-
last_read_time: 2014-02-
|
1
|
+
last_read_time: 2014-02-12 11:20:35 -0700
|
@@ -132,5 +132,17 @@ describe ServiceDigitalAsset do
|
|
132
132
|
|
133
133
|
result.to_i.should == expected.to_i
|
134
134
|
end
|
135
|
+
|
136
|
+
it 'returns true if the asset has been updated since the provided date' do
|
137
|
+
date = 7.days.ago
|
138
|
+
|
139
|
+
asset.changed_since(date).should == true
|
140
|
+
end
|
141
|
+
|
142
|
+
it 'returns false if the asset has not been updated since the provided date' do
|
143
|
+
date = Time.now
|
144
|
+
|
145
|
+
asset.changed_since(date).should == false
|
146
|
+
end
|
135
147
|
end
|
136
148
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: daengine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sbhatia
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-02-
|
12
|
+
date: 2014-02-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|