eco-helpers 3.0.37 → 3.1.1
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/.rubocop.yml +1 -0
- data/CHANGELOG.md +116 -1
- data/lib/eco/api/common/loaders/base.rb +2 -2
- data/lib/eco/api/common/loaders/case_base.rb +2 -0
- data/lib/eco/api/common/loaders/config/block.rb +78 -0
- data/lib/eco/api/common/loaders/config/workflow/mailer.rb +39 -7
- data/lib/eco/api/common/loaders/config.rb +3 -26
- data/lib/eco/api/common/loaders/error_handler.rb +2 -0
- data/lib/eco/api/common/loaders/parser.rb +1 -4
- data/lib/eco/api/common/people/entries.rb +23 -6
- data/lib/eco/api/common/people/entry_factory.rb +1 -1
- data/lib/eco/api/common/people/person_entry.rb +104 -27
- data/lib/eco/api/common/people/person_parser.rb +50 -16
- data/lib/eco/api/common/people/supervisor_helpers.rb +12 -6
- data/lib/eco/api/common/session/base_session.rb +75 -81
- data/lib/eco/api/common/session/environment.rb +49 -55
- data/lib/eco/api/common/session/file_manager.rb +132 -135
- data/lib/eco/api/common/session/helpers/prompt_user.rb +23 -30
- data/lib/eco/api/common/session/helpers.rb +10 -15
- data/lib/eco/api/common/session/logger/cache.rb +89 -96
- data/lib/eco/api/common/session/logger/channels.rb +24 -32
- data/lib/eco/api/common/session/logger/log.rb +38 -46
- data/lib/eco/api/common/session/logger.rb +50 -54
- data/lib/eco/api/common/session/mailer/aws_provider.rb +63 -71
- data/lib/eco/api/common/session/mailer/provider_base.rb +43 -48
- data/lib/eco/api/common/session/mailer/sendgrid_provider.rb +101 -109
- data/lib/eco/api/common/session/mailer.rb +78 -83
- data/lib/eco/api/common/session/s3_uploader.rb +132 -138
- data/lib/eco/api/common/session/sftp.rb +202 -208
- data/lib/eco/api/common.rb +0 -3
- data/lib/eco/api/custom/mailer.rb +4 -2
- data/lib/eco/api/error/handlers.rb +1 -1
- data/lib/eco/api/microcases/people/apply_changes/set_core/core_excluded.rb +8 -2
- data/lib/eco/api/microcases/people/manage/search.rb +1 -1
- data/lib/eco/api/organization/people/similarity.rb +3 -3
- data/lib/eco/api/session/batch/base_policy.rb +42 -27
- data/lib/eco/api/session/batch/launcher/mode_size.rb +6 -1
- data/lib/eco/api/session/batch/launcher.rb +16 -3
- data/lib/eco/api/session/config/api.rb +4 -3
- data/lib/eco/api/session/config/apis/one_off.rb +1 -1
- data/lib/eco/api/session/config/files.rb +13 -12
- data/lib/eco/api/session/config/workflow.rb +1 -373
- data/lib/eco/api/session/config.rb +30 -9
- data/lib/eco/api/usecases/base_case/model.rb +6 -6
- data/lib/eco/api/usecases/base_case.rb +1 -1
- data/lib/eco/api/usecases/cli.rb +1 -1
- data/lib/eco/api/usecases/default/locations/tagtree_extract_case.rb +8 -9
- data/lib/eco/api/usecases/default_cases/to_csv_case.rb +4 -1
- data/lib/eco/api/usecases/graphql/samples/location/command/dsl.rb +2 -2
- data/lib/eco/api/usecases/lib/base/env.rb +21 -23
- data/lib/eco/api/usecases/lib/files/file_pattern.rb +41 -14
- data/lib/eco/api/usecases/lib/files/input_file.rb +110 -0
- data/lib/eco/api/usecases/lib/files/sftp.rb +5 -2
- data/lib/eco/api/usecases/lib/files.rb +1 -0
- data/lib/eco/api/usecases/lib/locations/base.rb +23 -0
- data/lib/eco/api/usecases/lib/locations/mapping.rb +94 -0
- data/lib/eco/api/usecases/lib/locations.rb +7 -0
- data/lib/eco/api/usecases/lib/people/base.rb +20 -0
- data/lib/eco/api/usecases/lib/people.rb +6 -0
- data/lib/eco/api/usecases/lib.rb +2 -0
- data/lib/eco/api/usecases/ooze_cases.rb +1 -1
- data/lib/eco/api/usecases/ooze_samples/register_export_case.rb +1 -0
- data/lib/eco/api/usecases/ooze_samples/register_update_case.rb +1 -0
- data/lib/eco/api/usecases/samples/drivers/sftp_sample.rb +2 -0
- data/lib/eco/api/usecases/samples/drivers/url_pull_sample.rb +8 -2
- data/lib/eco/api/usecases/service/sftp/with_target_config.rb +0 -33
- data/lib/eco/api/usecases/service/sftp.rb +7 -1
- data/lib/eco/api/usecases/use_case.rb +3 -2
- data/lib/eco/api/usecases/workflow.rb +5 -0
- data/lib/eco/api/usecases.rb +12 -5
- data/lib/eco/cli/scripting/args_helpers.rb +1 -9
- data/lib/eco/cli_default/options.rb +98 -68
- data/lib/eco/cli_default/workflow/end.rb +22 -0
- data/lib/eco/cli_default/workflow/launch_jobs.rb +14 -0
- data/lib/eco/cli_default/workflow/load/data.rb +27 -0
- data/lib/eco/cli_default/workflow/load/input.rb +28 -0
- data/lib/eco/cli_default/workflow/load.rb +13 -0
- data/lib/eco/cli_default/workflow/options.rb +10 -0
- data/lib/eco/cli_default/workflow/post_launch.rb +65 -0
- data/lib/eco/cli_default/workflow/report.rb +17 -0
- data/lib/eco/cli_default/workflow/rescued_exception.rb +21 -0
- data/lib/eco/cli_default/workflow/usecases.rb +23 -0
- data/lib/eco/cli_default/workflow.rb +24 -180
- data/lib/eco/data/count_trace.rb +51 -0
- data/lib/eco/data/files/content.rb +39 -0
- data/lib/eco/data/files/directory.rb +78 -45
- data/lib/eco/data/files/encoding.rb +12 -21
- data/lib/eco/data/files/file_pattern.rb +15 -8
- data/lib/eco/data/files/folder.rb +196 -0
- data/lib/eco/data/files/relative_path.rb +54 -0
- data/lib/eco/data/files/timestamp.rb +18 -0
- data/lib/eco/data/files.rb +46 -5
- data/lib/eco/data/fuzzy_match.rb +1 -1
- data/lib/eco/data/hashes/array_diff.rb +11 -5
- data/lib/eco/data/hashes/diff_result/meta.rb +12 -4
- data/lib/eco/data/locations/node_diff/accessors.rb +1 -1
- data/lib/eco/data/mapper.rb +5 -1
- data/lib/eco/data.rb +1 -0
- data/lib/eco/language/delegation/delegating_missing.rb +1 -1
- data/lib/eco/language/delegation/delegating_missing_const.rb +1 -1
- data/lib/eco/language/delegation/delegating_missing_on_class.rb +1 -1
- data/lib/eco/language/delegation/for_delegator/delegated_class.rb +1 -1
- data/lib/eco/language/klass/auto_loader.rb +129 -0
- data/lib/eco/language/klass/builder.rb +6 -6
- data/lib/eco/language/klass/const.rb +19 -0
- data/lib/eco/language/klass/helpers_built.rb +3 -1
- data/lib/eco/language/klass/hierarchy.rb +5 -1
- data/lib/eco/language/klass/naming.rb +5 -2
- data/lib/eco/language/klass/resolver.rb +21 -6
- data/lib/eco/language/klass/uid.rb +12 -0
- data/lib/eco/language/klass/when_inherited.rb +30 -6
- data/lib/eco/language/klass.rb +5 -2
- data/lib/eco/language/methods/access_modifier.rb +23 -0
- data/lib/eco/language/methods/instance_method_helpers.rb +6 -1
- data/lib/eco/language/methods.rb +1 -0
- data/lib/eco/language/models/hierarchy.rb +41 -0
- data/lib/eco/language/models/workflow.rb +385 -0
- data/lib/eco/language/models.rb +2 -1
- data/lib/eco/version.rb +1 -1
- metadata +31 -7
- data/lib/eco/api/common/class_auto_loader.rb +0 -114
- data/lib/eco/api/common/class_helpers.rb +0 -9
- data/lib/eco/api/common/class_hierarchy.rb +0 -45
- data/lib/eco/data/files/helpers.rb +0 -152
- data/lib/eco/language/models/class_helpers.rb +0 -136
@@ -1,213 +1,207 @@
|
|
1
|
-
module Eco
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
keys: fetch_key_files,
|
159
|
-
keys_only: true
|
160
|
-
})
|
161
|
-
end
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
|
-
def windows_basename(remote_fullname)
|
166
|
-
dir_sep = /[\\\/]/
|
167
|
-
patr_re = /[<>:\\\/|?*]/
|
168
|
-
|
169
|
-
parts = remote_fullname.split(dir_sep).map do |node|
|
170
|
-
node.gsub(patr_re, '_')
|
171
|
-
end
|
172
|
-
|
173
|
-
local_fullname = File.join(*parts)
|
174
|
-
File.basename(local_fullname)
|
175
|
-
end
|
176
|
-
|
177
|
-
def logger
|
178
|
-
@enviro&.logger ||
|
179
|
-
(defined?(super)? super : ::Logger.new(IO::NULL))
|
180
|
-
end
|
181
|
-
|
182
|
-
def config
|
183
|
-
@enviro.config || {}
|
184
|
-
end
|
185
|
-
|
186
|
-
def fetch_host
|
187
|
-
config.sftp.host || ENV['SFTP_HOST']
|
188
|
-
end
|
189
|
-
|
190
|
-
def fetch_user
|
191
|
-
config.sftp.user || ENV['SFTP_USERNAME']
|
192
|
-
end
|
193
|
-
|
194
|
-
def password?
|
195
|
-
!!fetch_password
|
196
|
-
end
|
197
|
-
|
198
|
-
def fetch_password
|
199
|
-
config.sftp.password || ENV['SFTP_PASSWORD']
|
200
|
-
end
|
201
|
-
|
202
|
-
def fetch_key_files
|
203
|
-
[config.sftp.key_file || ENV['SFTP_KEY_FILE']]
|
204
|
-
end
|
205
|
-
|
206
|
-
def fetch_base_path
|
207
|
-
config.sftp.base_path || ENV['SFTP_BASE_PATH']
|
208
|
-
end
|
1
|
+
module Eco::API::Common::Session
|
2
|
+
class SFTP
|
3
|
+
include Eco::Language::AuxiliarLogger
|
4
|
+
|
5
|
+
def initialize(enviro:)
|
6
|
+
invalid_env = enviro && !enviro.is_a?(Eco::API::Common::Session::Environment)
|
7
|
+
raise "Required Environment object (enviro:). Given: #{enviro}" if invalid_env
|
8
|
+
|
9
|
+
@enviro = enviro
|
10
|
+
end
|
11
|
+
|
12
|
+
def host
|
13
|
+
@host ||= fetch_host
|
14
|
+
end
|
15
|
+
|
16
|
+
# @see Net::SFTP::Session
|
17
|
+
def sftp_session
|
18
|
+
require "net/sftp"
|
19
|
+
|
20
|
+
@sftp_session ||= Net::SFTP.start(
|
21
|
+
host,
|
22
|
+
fetch_user,
|
23
|
+
**session_options
|
24
|
+
)
|
25
|
+
rescue StandardError => err
|
26
|
+
log(:error) {
|
27
|
+
"Could not open SFTP session. Possible misconfiguration: #{err}"
|
28
|
+
}
|
29
|
+
raise
|
30
|
+
end
|
31
|
+
|
32
|
+
# @see Net::SFTP::Operations::Dir#entries
|
33
|
+
def entries(path)
|
34
|
+
sftp_session.dir.entries(path).sort_by(&:name)
|
35
|
+
end
|
36
|
+
|
37
|
+
# **Files** of the remote directory.
|
38
|
+
# @see Net::SFTP::Operations::Dir#entries
|
39
|
+
# @param path [String] remote directory `path`
|
40
|
+
# @param pattern [Regexp] if given, filters by using this pattern
|
41
|
+
# @return [Array<Net::SFTP::Protocol::V01::Name>]
|
42
|
+
def files(path, pattern: nil)
|
43
|
+
entries = entries(path).select(&:file?)
|
44
|
+
return entries unless pattern
|
45
|
+
|
46
|
+
entries.select {|remote_file| remote_file.name =~ pattern}
|
47
|
+
end
|
48
|
+
|
49
|
+
# **Folders** of the remote directory.
|
50
|
+
# @see Net::SFTP::Operations::Dir#entries
|
51
|
+
# @param path [String] remote directory `path`
|
52
|
+
# @param pattern [Regexp] if given, filters by using this pattern
|
53
|
+
# @return [Array<Net::SFTP::Protocol::V01::Name>]
|
54
|
+
def folders(path, pattern: nil)
|
55
|
+
entries = entries(path).select(&:directory?)
|
56
|
+
return entries unless pattern
|
57
|
+
|
58
|
+
entries.select {|remote_file| remote_file.name =~ pattern}
|
59
|
+
end
|
60
|
+
|
61
|
+
# @see Net::SFTP::Session#rename
|
62
|
+
def move(fullname_source, fullname_dest, flags = 0x0001, override: true, &callback)
|
63
|
+
sftp_session.rename!(fullname_source, fullname_dest, flags, &callback)
|
64
|
+
|
65
|
+
true
|
66
|
+
rescue Net::SFTP::StatusException => err
|
67
|
+
case err.code
|
68
|
+
when Net::SFTP::Constants::StatusCodes::FX_FILE_ALREADY_EXISTS
|
69
|
+
log(:waning) {
|
70
|
+
msg = "Remote file '#{fullname_dest}' already exists."
|
71
|
+
msg << "Overriding..." if override
|
72
|
+
}
|
73
|
+
|
74
|
+
if override
|
75
|
+
sftp_session.remove(fullname_dest)
|
76
|
+
# sftp_session.rename!(fullname_source, fullname_dest, flags, &callback)
|
77
|
+
move(fullname_source, fullname_dest, flags, override: false, &callback)
|
78
|
+
end
|
79
|
+
when Net::SFTP::Constants::StatusCodes::FX_PERMISSION_DENIED, Net::SFTP::Constants::StatusCodes::FX_WRITE_PROTECT
|
80
|
+
log(:error) {
|
81
|
+
"Not allowed to rename '#{fullname_source}' to '#{fullname_dest}'"
|
82
|
+
}
|
83
|
+
when Net::SFTP::Constants::StatusCodes::FX_NO_SUCH_FILE
|
84
|
+
log(:error) { "Remote file '#{fullname_source}' does not exist"}
|
85
|
+
when Net::SFTP::Constants::StatusCodes::FX_NO_SUCH_PATH
|
86
|
+
log(:error) { err }
|
87
|
+
else
|
88
|
+
msg = "Error when trying to move file '#{fullname_source}' to '#{fullname_dest}'"
|
89
|
+
log(:error) { "#{msg}\n#{err}" }
|
90
|
+
# raise err, msg, err.backtrace
|
91
|
+
end
|
92
|
+
|
93
|
+
false
|
94
|
+
end
|
95
|
+
|
96
|
+
# Downloads the files specified to a local folder
|
97
|
+
# @see Net::SFTP::Operations::Download
|
98
|
+
# @param files [String, Array<String>] full path to remote file(s) to be downloaded
|
99
|
+
# @param local_folder [String] local destination folder (`"."` if not specified)
|
100
|
+
# @return [Array<String>] list of created files
|
101
|
+
def download(files, local_folder: nil, &block)
|
102
|
+
puts 'Creating local files:'
|
103
|
+
created_files = []
|
104
|
+
|
105
|
+
[files].flatten.compact.map do |fullname|
|
106
|
+
basename = windows_basename(fullname)
|
107
|
+
dest_fullname = File.join(local_folder || '.', basename)
|
108
|
+
puts " * #{dest_fullname}"
|
109
|
+
created_files << dest_fullname
|
110
|
+
sftp_session.download(fullname, dest_fullname)
|
111
|
+
end.each(&:wait)
|
112
|
+
|
113
|
+
# run SSH event loop while dw.active?
|
114
|
+
created_files.tap { created_files.each(&block) }
|
115
|
+
end
|
116
|
+
|
117
|
+
# Upload a file to the specific `remote_folder`
|
118
|
+
# @return [String, FalseClass] on success returns the remote file path.
|
119
|
+
def upload(local_file, remote_folder:, gid: nil)
|
120
|
+
return false unless local_file && File.exist?(local_file)
|
121
|
+
|
122
|
+
dest_file = "#{remote_folder}/#{File.basename(local_file)}"
|
123
|
+
res = sftp_session.upload!(local_file, dest_file)
|
124
|
+
|
125
|
+
unless gid.nil?
|
126
|
+
attrs = sftp_session.stat!(dest_file)
|
127
|
+
unless gid == attrs.gid
|
128
|
+
flags = {permissions: 0o660, uid: attrs.uid, gid: gid}
|
129
|
+
_stat_res = sftp_session.setstat!(dest_file, flags)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
log(:info) {
|
134
|
+
"Uploaded '#{local_file}' as '#{dest_file}' (#{res})"
|
135
|
+
}
|
136
|
+
|
137
|
+
dest_file
|
138
|
+
rescue StandardError
|
139
|
+
log(:error) {
|
140
|
+
"Could not upload file '#{dest_file}' (#{res})"
|
141
|
+
}
|
142
|
+
raise
|
143
|
+
end
|
144
|
+
|
145
|
+
private
|
146
|
+
|
147
|
+
def session_options
|
148
|
+
{
|
149
|
+
non_interactive: true
|
150
|
+
}.tap do |opts|
|
151
|
+
if password?
|
152
|
+
opts.merge!({password: fetch_password})
|
153
|
+
else
|
154
|
+
opts.merge!({
|
155
|
+
keys: fetch_key_files,
|
156
|
+
keys_only: true
|
157
|
+
})
|
209
158
|
end
|
210
159
|
end
|
211
160
|
end
|
161
|
+
|
162
|
+
def windows_basename(remote_fullname)
|
163
|
+
dir_sep = /[\\\/]/
|
164
|
+
patr_re = /[<>:\\\/|?*]/
|
165
|
+
|
166
|
+
parts = remote_fullname.split(dir_sep).map do |node|
|
167
|
+
node.gsub(patr_re, '_')
|
168
|
+
end
|
169
|
+
|
170
|
+
local_fullname = File.join(*parts)
|
171
|
+
File.basename(local_fullname)
|
172
|
+
end
|
173
|
+
|
174
|
+
def logger
|
175
|
+
@enviro&.logger ||
|
176
|
+
(defined?(super)? super : ::Logger.new(IO::NULL))
|
177
|
+
end
|
178
|
+
|
179
|
+
def config
|
180
|
+
@enviro.config || {}
|
181
|
+
end
|
182
|
+
|
183
|
+
def fetch_host
|
184
|
+
config.sftp.host || ENV['SFTP_HOST']
|
185
|
+
end
|
186
|
+
|
187
|
+
def fetch_user
|
188
|
+
config.sftp.user || ENV['SFTP_USERNAME']
|
189
|
+
end
|
190
|
+
|
191
|
+
def password?
|
192
|
+
!!fetch_password
|
193
|
+
end
|
194
|
+
|
195
|
+
def fetch_password
|
196
|
+
config.sftp.password || ENV['SFTP_PASSWORD']
|
197
|
+
end
|
198
|
+
|
199
|
+
def fetch_key_files
|
200
|
+
[config.sftp.key_file || ENV['SFTP_KEY_FILE']]
|
201
|
+
end
|
202
|
+
|
203
|
+
def fetch_base_path
|
204
|
+
config.sftp.base_path || ENV['SFTP_BASE_PATH']
|
205
|
+
end
|
212
206
|
end
|
213
207
|
end
|
data/lib/eco/api/common.rb
CHANGED
@@ -6,9 +6,6 @@ module Eco
|
|
6
6
|
end
|
7
7
|
|
8
8
|
require_relative 'common/version_patches'
|
9
|
-
require_relative 'common/class_helpers'
|
10
|
-
require_relative 'common/class_auto_loader'
|
11
|
-
require_relative 'common/class_hierarchy'
|
12
9
|
require_relative 'common/class_meta_basics'
|
13
10
|
require_relative 'common/loaders'
|
14
11
|
require_relative 'common/session'
|
@@ -4,7 +4,9 @@
|
|
4
4
|
# ORG = 'Org Name'
|
5
5
|
# end
|
6
6
|
class Eco::API::Custom::Mailer < Eco::API::Common::Loaders::Workflow::Mailer
|
7
|
-
|
7
|
+
include Eco::Language::Klass::WhenInherited
|
8
8
|
|
9
|
-
when_inherited
|
9
|
+
when_inherited do |subclass|
|
10
|
+
config_apply!(on: subclass, all: true)
|
11
|
+
end
|
10
12
|
end
|
@@ -10,7 +10,7 @@ module Eco
|
|
10
10
|
end
|
11
11
|
|
12
12
|
# @param klass_err [Eco::API::Error] the specific error class that triggers this handler.
|
13
|
-
def on(klass_err, type: :error_handler,
|
13
|
+
def on(klass_err, type: :error_handler, &block)
|
14
14
|
Eco::API::Error.validate_err_class(klass_err)
|
15
15
|
raise 'Expected block but not given' unless block
|
16
16
|
|
@@ -5,8 +5,14 @@ module Eco
|
|
5
5
|
module ApplyChanges
|
6
6
|
module SetCore
|
7
7
|
module CoreExcluded
|
8
|
-
CAN_EXCLUDE_CREATION = %w[
|
9
|
-
|
8
|
+
CAN_EXCLUDE_CREATION = %w[
|
9
|
+
filter_tags archived
|
10
|
+
contractor_organization_id
|
11
|
+
].freeze
|
12
|
+
CAN_EXCLUDE_UPDATE = %w[
|
13
|
+
name external_id email
|
14
|
+
filter_tags contractor_organization_id
|
15
|
+
].freeze
|
10
16
|
|
11
17
|
# @note by default `supervisor_id` is always excluded.
|
12
18
|
# @param person [Ecoportal::API::V1::Person] the person we want to update, carrying the changes to be done.
|
@@ -22,7 +22,7 @@ module Eco
|
|
22
22
|
people = session.batch.search(data, silent: silent).then do |status|
|
23
23
|
secs = (Time.now - start).round(3)
|
24
24
|
|
25
|
-
Eco::API::Organization::People.new(status.people).tap do |people|
|
25
|
+
Eco::API::Organization::People.new(status.people).tap do |people|
|
26
26
|
cnt = people.count
|
27
27
|
per_sec = (cnt.to_f / secs).round(2)
|
28
28
|
|
@@ -47,7 +47,7 @@ module Eco
|
|
47
47
|
# Generates a new object with same config but different base `data`.
|
48
48
|
# @return [Eco::API::Organization::People::Similarity]
|
49
49
|
def newFrom(data) # rubocop:disable Naming/MethodName
|
50
|
-
super
|
50
|
+
super.tap do |simil|
|
51
51
|
simil.threshold = threshold
|
52
52
|
simil.order = order
|
53
53
|
simil.attribute = attribute
|
@@ -186,7 +186,7 @@ module Eco
|
|
186
186
|
# Launches a reanalyis on `analysed` based on `options`
|
187
187
|
# @param analysed [Hash] where the _keys_ are the people `id`s and the _values_ the `Eco::Data::FuzzyMatch::Results`
|
188
188
|
def rearrange(analysed, **options)
|
189
|
-
with_analysed(analysed) do |
|
189
|
+
with_analysed(analysed) do |_person, results|
|
190
190
|
results.relevant_results(**options)
|
191
191
|
end
|
192
192
|
end
|
@@ -219,7 +219,7 @@ module Eco
|
|
219
219
|
total = analysed.count
|
220
220
|
i = 1
|
221
221
|
|
222
|
-
with_analysed(analysed) do |
|
222
|
+
with_analysed(analysed) do |_person, results|
|
223
223
|
print_progress('Reanalysing by ignoring matching words', total, i)
|
224
224
|
i += 1
|
225
225
|
ignore_same_words_score(results, **options)
|