eco-helpers 1.3.14 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 01ec2727fdeee5bc360e417faefdafdb8bf69078cecc17ead881047e8df17cd2
4
- data.tar.gz: 67e46501f166224248d6d92e6607cddcbce3806dbd05f41e485d0ca2139f1105
3
+ metadata.gz: 28d9f5ad6037a8160ea1d39873a0b1c6769be63865267d159dd6fa71ae329d60
4
+ data.tar.gz: ba968ce7525e5fb289ff5b210f3c79692b05dfc74ae6af6cf8c729640bb1cf4a
5
5
  SHA512:
6
- metadata.gz: cd26851249e2c8557f9da3399f72292cb46a2c12db530f12e3da2a88120dc08a6e0a6ee053527b91685cd60e532d2bbd76e156f1fc803dc6bf2c1246a21fac27
7
- data.tar.gz: 4f199963c86259bb5a210dca09aa1af2b83c9489308afd200986d6d5c13f32d3479fb2eeaad19c397882359dd3ef16892dc7449860879e2a71fdbf8f73e34943
6
+ metadata.gz: 2a7bda8f0a427b7a93d42230c32226c578b4ae4aab9b2974bf1095d1f77d368faa8c409e41375cf5d378ed4a915b359ce12e74559c7f963a2a9d791a165f3232
7
+ data.tar.gz: ba9adb7220623345536d5080e658a524daebd914f3c64d94f83652e3d42fbdb240da9a08367ee42dde196adfc2152553b4133bd330d3a007052bba42b156aed5
@@ -1,6 +1,51 @@
1
1
  # Change Log
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
+ ## [1.4.0] - 2020-07-xx
5
+
6
+ ### Added
7
+ ### Changed
8
+ - change abilities to align with ecoPortal release `1.5.0`
9
+ - remove some patches on `ecoportal-api`
10
+ - removed patch method `Ecoportal::API::V1::Person#sync`
11
+ ### Fixed
12
+ - `Eco::CSV#parse` and `Eco::CSV#read` should use the proper `:encoding` when it's `bom`
13
+
14
+ ## [1.3.18] - 2020-07-08
15
+
16
+ ### Added
17
+ ### Changed
18
+ ### Fixed
19
+ - the `update` case was missing the code to use the `default_usergroup`
20
+
21
+
22
+ ## [1.3.17] - 2020-07-06
23
+
24
+ ### Added
25
+ ### Changed
26
+ - the `hris` case should not only include as `leavers` those that have account, but anyone that leaves
27
+ * as we could have active people with no account
28
+ ### Fixed
29
+ - `Eco::API::Session::Batch::Errors#errors`: fix error for empty `body` on response
30
+
31
+ ## [1.3.16] - 2020-06-26
32
+
33
+ ### Added
34
+ - `Eco::API::Common::People::Entries`, `#entry` & `#find` should allow for `strict` search (added parameter)
35
+ ### Changed
36
+ - upgraded `ecoportal-api` gem dependency to minimum version `0.5.7`
37
+ - this includes the removal of some patches
38
+ - some gems update
39
+ ### Fixed
40
+ - patched preferences (`kiosk` preferences should default to `nil`)
41
+
42
+ ## [1.3.15] - 2020-06-11
43
+
44
+ ### Added
45
+ - default usecase to export to `csv` (`-detailed`) now includes `"Supervisor Name"` column
46
+ ### Changed
47
+ ### Fixed
48
+
4
49
  ## [1.3.14] - 2020-06-10
5
50
 
6
51
  ### Added
@@ -22,16 +22,16 @@ Gem::Specification.new do |s|
22
22
  #s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
23
23
  s.require_paths = ["lib"]
24
24
 
25
- s.add_development_dependency "bundler", "~> 2.0.1"
26
- s.add_development_dependency "rspec", "~> 3", ">= 3.8"
25
+ s.add_development_dependency "bundler", "~> 2.1", ">= 2.1.3"
26
+ s.add_development_dependency "rspec", "~> 3", ">= 3.9"
27
27
  s.add_development_dependency "rake", "~> 12.3.0"
28
28
  s.add_development_dependency "yard", "~> 0.9", ">= 0.9.18"
29
29
  s.add_development_dependency "redcarpet", "~> 3.5", ">= 3.5.0"
30
30
 
31
- s.add_dependency 'ecoportal-api', '~> 0.5', '>= 0.5.6'
32
- s.add_dependency 'aws-sdk-s3', '~> 1.30', '>= 1.30.1'
33
- s.add_dependency 'aws-sdk-ses', '~> 1.14', '>= 1.14.0'
34
- s.add_dependency 'dotenv', '~> 2.6', '>= 2.6.0'
31
+ s.add_dependency 'ecoportal-api', '~> 0.5', '>= 0.5.9'
32
+ s.add_dependency 'aws-sdk-s3', '~> 1', '>= 1.64.0'
33
+ s.add_dependency 'aws-sdk-ses', '~> 1', '>= 1.29.0'
34
+ s.add_dependency 'dotenv', '~> 2.7', '>= 2.7.0'
35
35
  s.add_dependency 'net-sftp', '~> 2.1', '>= 2.1.2'
36
36
 
37
37
  end
@@ -50,23 +50,28 @@ module Eco
50
50
  end
51
51
 
52
52
  # Search function to find an `entry` based on one of different options
53
- def entry(id: nil, external_id: nil, email: nil)
53
+ def entry(id: nil, external_id: nil, email: nil, strict: false)
54
54
  init_caches
55
55
  pers = nil
56
56
  pers = @by_id[id]&.first if id
57
57
  pers = @by_external_id[external_id&.strip]&.first if !pers && !external_id.to_s.strip.empty?
58
- pers = @by_email[email&.downcase.strip]&.first if !pers && !email.to_s.strip.empty?
59
- pers = @by_external_id[email&.downcase.strip]&.first if !pers && !email.to_s.strip.empty?
58
+
59
+ # strict prevents taking existing user for searched person with same email
60
+ # specially useful if the organisation ensures all have external id (no need for email search)
61
+ if !pers && (!strict || external_id.to_s.strip.empty?)
62
+ pers = @by_email[email&.downcase.strip]&.first if !pers && !email.to_s.strip.empty?
63
+ pers = @by_external_id[email&.downcase.strip]&.first if !pers && !email.to_s.strip.empty?
64
+ end
60
65
  pers
61
66
  end
62
67
 
63
68
  # Search function to find an `entry` based on one of different options
64
69
  # see Eco::API::Common::People::Entries#entry
65
- def find(object)
70
+ def find(object, strict: false)
66
71
  id = object.respond_to?("id")? object.send("id") : nil
67
72
  external_id = object.respond_to?("external_id")? object.send("external_id") : nil
68
73
  email = object.respond_to?("email")? object.send("email") : nil
69
- entry(id: id, external_id: external_id, email: email)
74
+ entry(id: id, external_id: external_id, email: email, strict: strict)
70
75
  end
71
76
 
72
77
  def exclude(object)
@@ -1,6 +1,2 @@
1
- require 'ecoportal/api'
2
- require_relative 'ecoportal_api/base_model'
3
- require_relative 'ecoportal_api/external_people'
4
1
  require_relative 'ecoportal_api/external_person'
5
2
  require_relative 'ecoportal_api/internal_person'
6
- require_relative 'ecoportal_api/account_preferences'
@@ -3,10 +3,6 @@ module Ecoportal
3
3
  class V1
4
4
  class Person
5
5
 
6
- def sync
7
- consolidate!
8
- end
9
-
10
6
  def reset_details!
11
7
  doc["details"] = JSON.parse(original_doc["details"])
12
8
  end
@@ -5,6 +5,9 @@
5
5
  "reports": "view",
6
6
  "organization": null,
7
7
  "people": null,
8
+ "person_core": null,
9
+ "person_account": null,
10
+ "person_details": null,
8
11
  "pages": "view",
9
12
  "page_editor": null,
10
13
  "registers": "view"
@@ -14,7 +17,9 @@
14
17
  "data": "view",
15
18
  "reports": "view",
16
19
  "organization": null,
17
- "people": "attach",
20
+ "person_core": "attach",
21
+ "person_account": null,
22
+ "person_details": "view",
18
23
  "pages": "create",
19
24
  "page_editor": "basic",
20
25
  "registers": "view"
@@ -24,7 +29,9 @@
24
29
  "data": "update",
25
30
  "reports": "edit",
26
31
  "organization": "view",
27
- "people": "view",
32
+ "person_core": "view_people_manager",
33
+ "person_account": "view",
34
+ "person_details": "view",
28
35
  "pages": "create",
29
36
  "page_editor": "intermediate",
30
37
  "registers": "view"
@@ -34,7 +41,9 @@
34
41
  "data": "administrate",
35
42
  "reports": "administrate",
36
43
  "organization": "administrate",
37
- "people": "edit",
44
+ "person_core": "edit",
45
+ "person_account": "edit",
46
+ "person_details": "edit_private",
38
47
  "pages": "administrate",
39
48
  "page_editor": "advanced",
40
49
  "registers": "dashboard"
@@ -3,7 +3,9 @@
3
3
  "data": [null, "view", "update", "administrate", "implement"],
4
4
  "reports": [null, "view", "edit", "administrate"],
5
5
  "organization": [null, "view", "administrate", "implement"],
6
- "people": [null, "attach", "view", "view_private", "edit", "dashboard"],
6
+ "person_core": [null, "attach", "view_people_manager", "create", "edit", "dashboard"],
7
+ "person_account": [null, "view", "create", "edit"],
8
+ "person_details": [null, "view", "edit_public", "view_private", "edit_private"],
7
9
  "pages": [null, "view", "update", "create", "administrate"],
8
10
  "page_editor": [null, "basic", "intermediate", "advanced", "implement"],
9
11
  "registers": [null, "view", "dashboard", "administrate", "implement"]
@@ -69,13 +69,15 @@ module Eco
69
69
 
70
70
  def errors
71
71
  entries.each_with_object([]) do |entry, arr|
72
- if errs = status[entry].body["errors"]
73
- errs.each do |msg|
74
- arr.push({
75
- type: klass = Eco::API::Error.get_type(msg),
76
- err: klass.new(err_msg: msg, entry: entry, session: session),
77
- entry: entry
78
- })
72
+ if body = status[entry].body
73
+ if errs = body["errors"]
74
+ errs.each do |msg|
75
+ arr.push({
76
+ type: klass = Eco::API::Error.get_type(msg),
77
+ err: klass.new(err_msg: msg, entry: entry, session: session),
78
+ entry: entry
79
+ })
80
+ end
79
81
  end
80
82
  end
81
83
  end
@@ -69,7 +69,7 @@ module Eco
69
69
  if session.tagtree
70
70
  person.account.default_tag = session.tagtree.default_tag(*person.filter_tags)
71
71
  else
72
- tags = person.filter_tags
72
+ tags = person.filter_tags || []
73
73
  person.account.default_tag = tags.first unless tags.length > 1
74
74
  end
75
75
  end
@@ -11,17 +11,18 @@ module Eco
11
11
  supers = session.job_group("post").new("supers", usecase: usecase, type: :update, sets: :core)
12
12
  leavers = session.job_group("post").new("leavers", usecase: usecase, type: :update, sets: :account)
13
13
 
14
- people.users.each_with_index do |person, i|
15
- if !entries.find(person)
14
+ strict_search = session.config.people.strict_search? && (!options[:search]&.key?(:strict) || options.dig(:search, :strict))
15
+ pgs = session.policy_groups
16
+
17
+ people.each_with_index do |person, i|
18
+ if !entries.find(person, strict: strict_search)
16
19
  leavers.add(person) do |person|
17
20
  person.supervisor_id = nil
18
- person.account = nil
21
+ person.account = nil if person.account
19
22
  end
20
23
  end
21
24
  end
22
25
 
23
- strict_search = session.config.people.strict_search? && (!options[:search]&.key?(:strict) || options.dig(:search, :strict))
24
- pgs = session.policy_groups
25
26
 
26
27
  if session.config.people.default_usergroup?
27
28
  def_id = pgs.to_id(session.config.people.default_usergroup)
@@ -84,7 +85,7 @@ module Eco
84
85
  if session.tagtree
85
86
  person.account.default_tag = session.tagtree.default_tag(*person.filter_tags)
86
87
  else
87
- tags = person.filter_tags
88
+ tags = person.filter_tags || []
88
89
  person.account.default_tag = tags.first unless tags.length > 1
89
90
  end
90
91
  end
@@ -30,8 +30,12 @@ module Eco
30
30
  update = session.job_group("main").new("update", usecase: usecase, type: :update, sets: :account)
31
31
 
32
32
  people.each_with_index do |person, i|
33
- #next unless person.id == "5c527ba63f7690001243f5b2"
34
- person.account.default_tag = session.tagtree.default_tag(*person.filter_tags)
33
+ if session.tagtree
34
+ person.account.default_tag = session.tagtree.default_tag(*person.filter_tags)
35
+ else
36
+ tags = person.filter_tags || []
37
+ person.account.default_tag = tags.first unless tags.length > 1
38
+ end
35
39
  update.add(person)
36
40
  end
37
41
 
@@ -42,7 +42,7 @@ module Eco
42
42
  csv << session.new_entry(person, dependencies: deps).to_hash.values
43
43
  end
44
44
  end
45
- true
45
+ exit(0)
46
46
  end
47
47
  end
48
48
 
@@ -24,21 +24,31 @@ module Eco
24
24
  CSV.open(file, "w") do |csv|
25
25
  deps = {"supervisor_id" => {people: people}}
26
26
  header = session.new_entry(people.first, dependencies: deps).to_hash.keys
27
+ header += ["Subordinates"]
28
+ header += ["Supervisor Name"]
27
29
  header += abilities
28
30
  header += ["Login Methods"] if login_providers.any_optional?
29
- header += ["Subordinates"]
30
31
  header += ["Landing Page"]
31
32
 
32
33
  csv << header
33
34
  people.each do |person|
34
35
  data = session.new_entry(person, dependencies: deps).to_hash.values
36
+
37
+ data.push(person.subordinates)
38
+ super_id = person.supervisor_id
39
+ if supervisor = people.person(id: super_id, external_id: super_id)
40
+ data.push(supervisor.name)
41
+ else
42
+ data.push("")
43
+ end
44
+
35
45
  person_abilities = (person.account && person.account.permissions_custom) || {}
36
46
  data += abilities.map {|key| person_abilities[key] || "no access"}
47
+
37
48
  if login_providers.any_optional?
38
49
  logins = (person.account && person.account.login_provider_ids) || []
39
50
  data.push(login_providers.to_name(logins).join("|"))
40
51
  end
41
- data.push(person.subordinates)
42
52
 
43
53
  if person.account && landing_id = person.account.landing_page_id
44
54
  data.push(landing_id)
@@ -47,7 +57,7 @@ module Eco
47
57
  csv << data
48
58
  end
49
59
  end
50
- true
60
+ exit(0)
51
61
  end
52
62
  end
53
63
 
@@ -12,6 +12,10 @@ module Eco
12
12
  strict_search = session.config.people.strict_search? && (!options[:search]&.key?(:strict) || options.dig(:search, :strict))
13
13
  pgs = session.policy_groups
14
14
 
15
+ if session.config.people.default_usergroup?
16
+ def_id = pgs.to_id(session.config.people.default_usergroup)
17
+ end
18
+
15
19
  entries.each.with_index do |entry, i|
16
20
  if person = people.find(entry, strict: strict_search)
17
21
 
@@ -37,6 +41,7 @@ module Eco
37
41
  entry.set_details(person) unless options.dig(:exclude, :details)
38
42
 
39
43
  unless options.dig(:exclude, :account)
44
+ add_account = !person.account
40
45
  ini_pg_ids = person.account&.policy_group_ids || []
41
46
 
42
47
  account_excluded = []
@@ -68,7 +73,7 @@ module Eco
68
73
  if session.tagtree
69
74
  person.account.default_tag = session.tagtree.default_tag(*person.filter_tags)
70
75
  else
71
- tags = person.filter_tags
76
+ tags = person.filter_tags || []
72
77
  person.account.default_tag = tags.first unless tags.length > 1
73
78
  end
74
79
  end
@@ -77,7 +77,7 @@ module Eco
77
77
  if session.tagtree
78
78
  person.account.default_tag = session.tagtree.default_tag(*person.filter_tags)
79
79
  else
80
- tags = person.filter_tags
80
+ tags = person.filter_tags || []
81
81
  person.account.default_tag = tags.first unless tags.length > 1
82
82
  end
83
83
  end
@@ -71,7 +71,7 @@ module Eco
71
71
  end
72
72
 
73
73
  def encoding(path)
74
- has_bom?(path) ? "bom|utf-8" : "utf-8"
74
+ has_bom?(path) ? "bom" : "utf-8"
75
75
  end
76
76
 
77
77
  def script_subfolder
@@ -1,3 +1,3 @@
1
1
  module Eco
2
- VERSION = "1.3.14"
2
+ VERSION = "1.4.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eco-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.14
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Segura
@@ -16,14 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.0.1
19
+ version: '2.1'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 2.1.3
20
23
  type: :development
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
- version: 2.0.1
29
+ version: '2.1'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 2.1.3
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: rspec
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -33,7 +39,7 @@ dependencies:
33
39
  version: '3'
34
40
  - - ">="
35
41
  - !ruby/object:Gem::Version
36
- version: '3.8'
42
+ version: '3.9'
37
43
  type: :development
38
44
  prerelease: false
39
45
  version_requirements: !ruby/object:Gem::Requirement
@@ -43,7 +49,7 @@ dependencies:
43
49
  version: '3'
44
50
  - - ">="
45
51
  - !ruby/object:Gem::Version
46
- version: '3.8'
52
+ version: '3.9'
47
53
  - !ruby/object:Gem::Dependency
48
54
  name: rake
49
55
  requirement: !ruby/object:Gem::Requirement
@@ -107,7 +113,7 @@ dependencies:
107
113
  version: '0.5'
108
114
  - - ">="
109
115
  - !ruby/object:Gem::Version
110
- version: 0.5.6
116
+ version: 0.5.9
111
117
  type: :runtime
112
118
  prerelease: false
113
119
  version_requirements: !ruby/object:Gem::Requirement
@@ -117,67 +123,67 @@ dependencies:
117
123
  version: '0.5'
118
124
  - - ">="
119
125
  - !ruby/object:Gem::Version
120
- version: 0.5.6
126
+ version: 0.5.9
121
127
  - !ruby/object:Gem::Dependency
122
128
  name: aws-sdk-s3
123
129
  requirement: !ruby/object:Gem::Requirement
124
130
  requirements:
125
131
  - - "~>"
126
132
  - !ruby/object:Gem::Version
127
- version: '1.30'
133
+ version: '1'
128
134
  - - ">="
129
135
  - !ruby/object:Gem::Version
130
- version: 1.30.1
136
+ version: 1.64.0
131
137
  type: :runtime
132
138
  prerelease: false
133
139
  version_requirements: !ruby/object:Gem::Requirement
134
140
  requirements:
135
141
  - - "~>"
136
142
  - !ruby/object:Gem::Version
137
- version: '1.30'
143
+ version: '1'
138
144
  - - ">="
139
145
  - !ruby/object:Gem::Version
140
- version: 1.30.1
146
+ version: 1.64.0
141
147
  - !ruby/object:Gem::Dependency
142
148
  name: aws-sdk-ses
143
149
  requirement: !ruby/object:Gem::Requirement
144
150
  requirements:
145
- - - ">="
146
- - !ruby/object:Gem::Version
147
- version: 1.14.0
148
151
  - - "~>"
149
152
  - !ruby/object:Gem::Version
150
- version: '1.14'
153
+ version: '1'
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: 1.29.0
151
157
  type: :runtime
152
158
  prerelease: false
153
159
  version_requirements: !ruby/object:Gem::Requirement
154
160
  requirements:
155
- - - ">="
156
- - !ruby/object:Gem::Version
157
- version: 1.14.0
158
161
  - - "~>"
159
162
  - !ruby/object:Gem::Version
160
- version: '1.14'
163
+ version: '1'
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: 1.29.0
161
167
  - !ruby/object:Gem::Dependency
162
168
  name: dotenv
163
169
  requirement: !ruby/object:Gem::Requirement
164
170
  requirements:
165
171
  - - ">="
166
172
  - !ruby/object:Gem::Version
167
- version: 2.6.0
173
+ version: 2.7.0
168
174
  - - "~>"
169
175
  - !ruby/object:Gem::Version
170
- version: '2.6'
176
+ version: '2.7'
171
177
  type: :runtime
172
178
  prerelease: false
173
179
  version_requirements: !ruby/object:Gem::Requirement
174
180
  requirements:
175
181
  - - ">="
176
182
  - !ruby/object:Gem::Version
177
- version: 2.6.0
183
+ version: 2.7.0
178
184
  - - "~>"
179
185
  - !ruby/object:Gem::Version
180
- version: '2.6'
186
+ version: '2.7'
181
187
  - !ruby/object:Gem::Dependency
182
188
  name: net-sftp
183
189
  requirement: !ruby/object:Gem::Requirement
@@ -247,9 +253,6 @@ files:
247
253
  - lib/eco/api/common/session/sftp.rb
248
254
  - lib/eco/api/common/version_patches.rb
249
255
  - lib/eco/api/common/version_patches/ecoportal_api.rb
250
- - lib/eco/api/common/version_patches/ecoportal_api/account_preferences.rb
251
- - lib/eco/api/common/version_patches/ecoportal_api/base_model.rb
252
- - lib/eco/api/common/version_patches/ecoportal_api/external_people.rb
253
256
  - lib/eco/api/common/version_patches/ecoportal_api/external_person.rb
254
257
  - lib/eco/api/common/version_patches/ecoportal_api/internal_person.rb
255
258
  - lib/eco/api/common/version_patches/exception.rb
@@ -1,51 +0,0 @@
1
- module Ecoportal
2
- module API
3
- class Internal
4
- class Preferences
5
- [
6
- :show_sidebar,
7
- :show_shortcuts,
8
- :show_coming_soon,
9
- :show_recently_visited_forms,
10
- :show_tasks,
11
- ].each do |field|
12
- key = field.to_s
13
- define_method(field) do
14
- if doc.key?(key)
15
- doc[key]
16
- else
17
- true
18
- end
19
- end
20
- define_method("#{field}=") do |value|
21
- doc[key] = !!value
22
- end
23
- end
24
-
25
- [
26
- :kiosk_enabled,
27
- :kiosk_workflow_message,
28
- :kiosk_create_button_label,
29
- :kiosk_create_button_help,
30
- :kiosk_return_button_label,
31
- :kiosk_return_button_help,
32
- :kiosk_dashboard_button_label,
33
- :kiosk_dashboard_button_help
34
- ].each do |field|
35
- key = field.to_s
36
- define_method(field) do
37
- if doc.key?(key)
38
- doc[key]
39
- else
40
- nil
41
- end
42
- end
43
- define_method("#{field}=") do |value|
44
- doc[key] = !!value
45
- end
46
- end
47
-
48
- end
49
- end
50
- end
51
- end
@@ -1,27 +0,0 @@
1
- module Ecoportal
2
- module API
3
- module Common
4
- class BaseModel
5
-
6
- attr_reader :initial_doc
7
-
8
- def initialize(doc = {}, parent: self, key: nil)
9
- @_parent = parent
10
- @_key = key
11
- if !_parent || !_key
12
- @doc = doc
13
- @original_doc = JSON.parse(@doc.to_json)
14
- @initial_doc = JSON.parse(@doc.to_json)
15
- end
16
- end
17
-
18
- def initial_doc
19
- raise UnlinkedModel.new unless linked?
20
- return @initial_doc if is_root?
21
- _parent.initial_doc.dig(*[_key].flatten)
22
- end
23
-
24
- end
25
- end
26
- end
27
- end
@@ -1,38 +0,0 @@
1
- module Ecoportal
2
- module API
3
- class V1
4
- class People
5
-
6
- def job
7
- operation = Common::BatchOperation.new("/people", person_class, logger: client.logger)
8
- yield operation
9
- # The batch operation is responsible for logging the output
10
- job_id = create_job(operation)
11
- status = wait_for_job_completion(job_id)
12
-
13
- if status&.complete?
14
- operation.process_response job_result(job_id, operation)
15
- else
16
- raise "Job `#{job_id}` not complete. Probably timeout after #{JOB_TIMEOUT + 120} seconds. Current status: #{status}"
17
- end
18
- end
19
-
20
- private
21
-
22
- def wait_for_job_completion(job_id)
23
- # timeout library is evil. So we make poor-man timeout.
24
- # https://jvns.ca/blog/2015/11/27/why-rubys-timeout-is-dangerous-and-thread-dot-raise-is-terrifying/
25
- before = Time.now
26
- while true
27
- status = job_status(job_id)
28
- break status if status.complete?
29
- break status if Time.now >= before + (JOB_TIMEOUT + 120)
30
- sleep(DELAY_STATUS_CHECK)
31
- status
32
- end
33
- end
34
-
35
- end
36
- end
37
- end
38
- end