eco-helpers 2.0.13 → 2.0.18
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/CHANGELOG.md +87 -2
- data/eco-helpers.gemspec +6 -4
- data/lib/eco-helpers.rb +2 -0
- data/lib/eco/api/common/base_loader.rb +14 -0
- data/lib/eco/api/common/people/default_parsers/date_parser.rb +11 -1
- data/lib/eco/api/common/people/default_parsers/login_providers_parser.rb +1 -1
- data/lib/eco/api/common/people/default_parsers/policy_groups_parser.rb +11 -11
- data/lib/eco/api/common/people/person_entry.rb +9 -2
- data/lib/eco/api/common/people/supervisor_helpers.rb +27 -0
- data/lib/eco/api/common/session/file_manager.rb +2 -2
- data/lib/eco/api/common/session/mailer.rb +0 -1
- data/lib/eco/api/common/session/s3_uploader.rb +0 -1
- data/lib/eco/api/common/session/sftp.rb +0 -1
- data/lib/eco/api/common/version_patches/exception.rb +8 -4
- data/lib/eco/api/error.rb +5 -3
- data/lib/eco/api/microcases.rb +3 -1
- data/lib/eco/api/microcases/append_usergroups.rb +0 -1
- data/lib/eco/api/microcases/people_cache.rb +2 -2
- data/lib/eco/api/microcases/people_load.rb +2 -2
- data/lib/eco/api/microcases/people_refresh.rb +2 -2
- data/lib/eco/api/microcases/people_search.rb +6 -6
- data/lib/eco/api/microcases/preserve_default_tag.rb +23 -0
- data/lib/eco/api/microcases/preserve_filter_tags.rb +28 -0
- data/lib/eco/api/microcases/preserve_policy_groups.rb +30 -0
- data/lib/eco/api/microcases/set_account.rb +0 -1
- data/lib/eco/api/organization.rb +1 -0
- data/lib/eco/api/organization/people.rb +7 -0
- data/lib/eco/api/organization/people_analytics.rb +60 -0
- data/lib/eco/api/organization/presets_factory.rb +116 -93
- data/lib/eco/api/organization/presets_integrity.json +58 -0
- data/lib/eco/api/organization/presets_values.json +5 -4
- data/lib/eco/api/policies/default_policies/99_user_access_policy.rb +0 -30
- data/lib/eco/api/session.rb +1 -20
- data/lib/eco/api/session/batch.rb +23 -7
- data/lib/eco/api/session/batch/job.rb +3 -0
- data/lib/eco/api/session/config.rb +16 -15
- data/lib/eco/api/session/config/api.rb +4 -0
- data/lib/eco/api/session/config/apis.rb +80 -0
- data/lib/eco/api/session/config/files.rb +7 -0
- data/lib/eco/api/session/config/people.rb +3 -19
- data/lib/eco/api/usecases/default_cases.rb +4 -1
- data/lib/eco/api/usecases/default_cases/abstract_policygroup_abilities_case.rb +161 -0
- data/lib/eco/api/usecases/default_cases/analyse_people_case.rb +76 -0
- data/lib/eco/api/usecases/default_cases/codes_to_tags_case.rb +2 -3
- data/lib/eco/api/usecases/default_cases/reset_landing_page_case.rb +11 -1
- data/lib/eco/api/usecases/default_cases/restore_db_case.rb +1 -2
- data/lib/eco/api/usecases/default_cases/supers_cyclic_identify_case.rb +72 -0
- data/lib/eco/api/usecases/default_cases/supers_hierarchy_case.rb +59 -0
- data/lib/eco/api/usecases/default_cases/to_csv_case.rb +104 -26
- data/lib/eco/api/usecases/default_cases/to_csv_detailed_case.rb +62 -36
- data/lib/eco/cli.rb +0 -10
- data/lib/eco/cli/config/default/options.rb +19 -17
- data/lib/eco/cli/config/default/people_filters.rb +3 -3
- data/lib/eco/cli/config/default/usecases.rb +77 -25
- data/lib/eco/cli/config/default/workflow.rb +12 -3
- data/lib/eco/cli/config/help.rb +1 -0
- data/lib/eco/cli/config/options_set.rb +106 -13
- data/lib/eco/cli/config/use_cases.rb +33 -33
- data/lib/eco/cli/scripting/args_helpers.rb +30 -3
- data/lib/eco/data.rb +1 -0
- data/lib/eco/data/crypto/encryption.rb +3 -3
- data/lib/eco/data/files/directory.rb +28 -20
- data/lib/eco/data/files/helpers.rb +6 -4
- data/lib/eco/data/fuzzy_match.rb +119 -0
- data/lib/eco/data/fuzzy_match/array_helpers.rb +75 -0
- data/lib/eco/data/fuzzy_match/chars_position_score.rb +37 -0
- data/lib/eco/data/fuzzy_match/ngrams_score.rb +73 -0
- data/lib/eco/data/fuzzy_match/pairing.rb +102 -0
- data/lib/eco/data/fuzzy_match/result.rb +67 -0
- data/lib/eco/data/fuzzy_match/results.rb +53 -0
- data/lib/eco/data/fuzzy_match/score.rb +44 -0
- data/lib/eco/data/fuzzy_match/stop_words.rb +35 -0
- data/lib/eco/data/fuzzy_match/string_helpers.rb +69 -0
- data/lib/eco/version.rb +1 -1
- metadata +86 -10
- data/lib/eco/api/microcases/refresh_abilities.rb +0 -19
- data/lib/eco/api/organization/presets_reference.json +0 -59
- data/lib/eco/api/usecases/default_cases/refresh_abilities_case.rb +0 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 678fc1c610a5aafd8321a74367a6aaca67aa70bf159f638209b45da0361bb575
|
4
|
+
data.tar.gz: 280a74a3a3877c5d58bfbe84d0f6a8f8b6f8eda5c68f376fea87522b03a59e42
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30c74c7aa8b7f59a4610cb4da804714a165a095d6280b756dcec17df37a81f2b5438a7178cc279750e5f97a43ae6d0041e464d9ed7965af39c39fc71ce4efc99
|
7
|
+
data.tar.gz: 1abe7f74b0a0452565c1add7778086030372f63912fe2c6279a2d40eb9f908d07746421507241d4905bbdf546e944899fa0f63fa3e3fe086caf1663c83a2624d
|
data/CHANGELOG.md
CHANGED
@@ -1,14 +1,99 @@
|
|
1
1
|
# Change Log
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
|
4
|
+
## [2.0.18] - 2021-05-25
|
5
|
+
|
6
|
+
### Added
|
7
|
+
- **`-one-off`** option to not having to type the `-api-key` every time you launch one-off scripts
|
8
|
+
- `-api-key` will store the key to the `./.env_one_off` file (supports update and multi-environment)
|
9
|
+
|
10
|
+
### Changed
|
11
|
+
### Fixed
|
12
|
+
- patched `Exception#patch_full_message` to do not enter into a cyclic error rescue
|
13
|
+
- also rescue on `workflow.rescue`
|
14
|
+
|
15
|
+
## [2.0.17] - 2021-05-25
|
16
|
+
|
17
|
+
Specific changes due to eP **release `1.5.9.70`** (_Policy Group Abilities_)
|
18
|
+
- And some improvements as well as new tools
|
19
|
+
|
20
|
+
### Added
|
21
|
+
- `Eco::API::Organization::PresetsFactory` added integrity validation for `person_abilities` ability
|
22
|
+
- `Eco::API::Organization::PresetsFactory`
|
23
|
+
- `#validate`: returns an `Array` with all the errors that a `permissions_custom` has
|
24
|
+
- `#valid?`: checks if a `permissions_custom` is valid
|
25
|
+
- `Eco::API::Organization::PeopleAnalytics`: a **helper** class to identify things in the People Manager and provide mitigation action methods to resolve them.
|
26
|
+
- Added dependencies to `fuzzy_match`, `amatch` and `jaro_winkler` **gems**
|
27
|
+
- `Eco::Data::FuzzyMatch` with string match helpers and a set of home-made generic libs.
|
28
|
+
- `Eco::API::Organization::PeopleAnalytics` to launch analysis on the People Manager
|
29
|
+
- `Eco::API::UseCases::DefaultCases::AnalysePeople` invokable via `-analyse-people`
|
30
|
+
- **new** -> a way to define a hierarchy of options (at least of 1 Level)
|
31
|
+
- `API::CLI::Config::OptionsSet`
|
32
|
+
- `API::CLI::Config::UseCases::CaseConfig`
|
33
|
+
- Integrated the new feature to the `--help` command and methods.
|
34
|
+
- **Usecase** `Eco::API::UseCases::DefaultCases::ResetLandingPageCase` added parameter to specify `-page-id`
|
35
|
+
- `Eco::API::Common::BaseLoader` new shortcut methods `#micro` (_MicroCases_), `#session` and `#config`
|
36
|
+
- At this stage of the execution workflow it uses `ASSETS.session`
|
37
|
+
- **Important note**: when the `#parser` or `#serializer` are called the `ASSETS.session` might already be linked to the specific invoked environment
|
38
|
+
- New method helpers in `Ecoporta::API::MicroCases`
|
39
|
+
- `preserve_filter_tags`, `preserve_default_tag` and `preserve_policy_groups`
|
40
|
+
|
41
|
+
### Changed
|
42
|
+
- upgraded dependency on `ecoportal-api` and `ecoportal-api-v2`
|
43
|
+
- **removed** `Eco::API::MicroCases#refresh_abilities`
|
44
|
+
- `Eco::API::MicroCases#set_account` **removed** `refresh_abilities`
|
45
|
+
- `Eco::API::MicroCases#append_usergroups` **removed** `refresh_abilities`
|
46
|
+
- **removed** _usecase_ `Eco::API::UseCases::DefaultCases::RefreshAbilitiesCase` (`-refresh-abilities`)
|
47
|
+
- `Eco::API::Policies::DefaultPolicies::UserAccess`: **removed** `refresh_abilities`
|
48
|
+
- **removed** `Eco::API::Session#new_preset`
|
49
|
+
- `Eco::API::Organization::PresetsFactory`
|
50
|
+
- **removed** `rspecs`
|
51
|
+
- `.new`: **removed** parameters `presets_custom` & `presets_map`
|
52
|
+
- **removed** constants `DEFAULT_CUSTOM`, and `DEFAULT_MAP`
|
53
|
+
- **removed** private methods `#presets_custom` and `#presets_map`
|
54
|
+
- **changed** private method `#compile` receives directly an array of `permissions_custom`
|
55
|
+
- `Eco::API::Session::Config` **removed** methods `#presets_custom=` & `presets_map=`
|
56
|
+
- `Eco::API::Session::Config::People` **removed** methods `#presets_custom=`, `#presets_map=`,`#presets_custom` & `#presets_map`
|
57
|
+
- **removed** `eco/api/organization/presets_reference.json`
|
58
|
+
- **moved** case-specific options to only be active when the user case is previously invoked in the command line.
|
59
|
+
|
60
|
+
### Fixed
|
61
|
+
- **handle** `Ecoportal::API:Errors::TimeOut` in `Eco::API::Session::Batch` by offering to retry.
|
62
|
+
|
63
|
+
## [2.0.16] - 2021-05-04
|
64
|
+
|
65
|
+
### Added
|
66
|
+
- Use case `Eco::API::UseCases::DefaultCases::SupersCyclicIdentify`, invokable via `-identify-cyclic-supers`
|
67
|
+
- Use case `Eco::API::UseCases::DefaultCases::AbstractPolicyGroupAbilities`, invokable via `-abstract-policygroup-abilities`
|
68
|
+
- Option to run `one-off` scripts, without org configurations:
|
69
|
+
1. `-api-key INTERNAL_API_KEY`
|
70
|
+
2. `-enviro [live|pre.dev]`
|
71
|
+
3. `-org NAME_OF_ORG`
|
72
|
+
|
73
|
+
## [2.0.15] - 2021-04-29
|
74
|
+
|
75
|
+
### Added
|
76
|
+
- Use case `Eco::API::UseCases::DefaultCases::SupersHierarchy`, invokable via `-supers-hierarchy`
|
77
|
+
### Fixed
|
78
|
+
- `eco/cli/config/default/workflow.rb` prevent `rescue` looping
|
79
|
+
|
80
|
+
## [2.0.14] - 2021-04-15
|
81
|
+
|
82
|
+
### Added
|
83
|
+
- `Eco::API::UseCases::DefaultCases::ToCsvCase` added option `-internal-names` to avoid overriding data on export
|
84
|
+
- `Eco::API::Common::People::PersonEntry#mapped_entry` exposed method for raw `csv` generation
|
85
|
+
- `Eco::API::Organization::PresetsFactory` added integrity validation for `person_*` abilities
|
86
|
+
- `Eco::API::Session::Batch::Job` more debug info on erron handlers
|
87
|
+
|
88
|
+
### Fixed
|
89
|
+
- `Eco::API::Error.get_type` was almost always matching `Eco::API::Error::Unclassified` -> fixed
|
90
|
+
|
4
91
|
## [2.0.13] - 2021-03-31
|
5
92
|
|
6
93
|
### Added
|
7
94
|
- Stats on the `Eco::API::Session::Batch`
|
8
95
|
- Allow to inherit and re-use the `Eco::API::UseCases::DefaultCase::HrisCase`
|
9
96
|
|
10
|
-
### Changed
|
11
|
-
|
12
97
|
### Fixed
|
13
98
|
- Ensure auto-loading for `Eco::API::UseCases`
|
14
99
|
|
data/eco-helpers.gemspec
CHANGED
@@ -24,17 +24,19 @@ Gem::Specification.new do |spec|
|
|
24
24
|
#spec.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
25
25
|
spec.require_paths = ["lib"]
|
26
26
|
|
27
|
-
spec.add_development_dependency "bundler", ">= 2.2.
|
27
|
+
spec.add_development_dependency "bundler", ">= 2.2.17", "< 2.3"
|
28
28
|
spec.add_development_dependency "rspec", ">= 3.10.0", "< 3.11"
|
29
29
|
spec.add_development_dependency "rake", ">= 13.0.3", "< 13.1"
|
30
30
|
spec.add_development_dependency "yard", ">= 0.9.26", "< 0.10"
|
31
31
|
spec.add_development_dependency "redcarpet", ">= 3.5.1", "< 3.6"
|
32
32
|
|
33
|
-
spec.add_dependency 'ecoportal-api', '>= 0.8.
|
34
|
-
spec.add_dependency 'ecoportal-api-v2', '>= 0.8.
|
33
|
+
spec.add_dependency 'ecoportal-api', '>= 0.8.3', '< 0.9'
|
34
|
+
spec.add_dependency 'ecoportal-api-v2', '>= 0.8.7', '< 0.9'
|
35
35
|
spec.add_dependency 'aws-sdk-s3', '>= 1.83.0', '< 2'
|
36
36
|
spec.add_dependency 'aws-sdk-ses', '>= 1.36.0', '< 2'
|
37
37
|
spec.add_dependency 'dotenv', '>= 2.7.6', '< 2.8'
|
38
38
|
spec.add_dependency 'net-sftp', '>= 3.0.0', '< 3.1'
|
39
|
-
|
39
|
+
spec.add_dependency 'fuzzy_match', '>= 2.1.0', '< 2.2'
|
40
|
+
spec.add_dependency 'amatch', '>= 0.4.0', '< 0.5'
|
41
|
+
spec.add_dependency 'jaro_winkler', '>= 1.5.4', '< 1.6'
|
40
42
|
end
|
data/lib/eco-helpers.rb
CHANGED
@@ -6,7 +6,7 @@ class Eco::API::Common::People::DefaultParsers::DateParser < Eco::API::Common::L
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def serializer(value, deps)
|
9
|
-
value.is_a?(Array) ? value.map { |d|
|
9
|
+
value.is_a?(Array) ? value.map { |d| serialize_date(d) } : serialize_date(value)
|
10
10
|
end
|
11
11
|
|
12
12
|
private
|
@@ -19,4 +19,14 @@ class Eco::API::Common::People::DefaultParsers::DateParser < Eco::API::Common::L
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
+
def serialize_date(value)
|
23
|
+
return value if value.is_a?(String)
|
24
|
+
begin
|
25
|
+
value && value.strftime('%Y-%m-%d')
|
26
|
+
rescue
|
27
|
+
nil
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
|
22
32
|
end
|
@@ -1,31 +1,31 @@
|
|
1
1
|
class Eco::API::Common::People::DefaultParsers::PolicyGroupsParser < Eco::API::Common::Loaders::Parser
|
2
2
|
attribute "policy_group_ids"
|
3
|
+
parsing_phase :final
|
3
4
|
|
4
5
|
def parser(hash, deps)
|
5
|
-
policy_group_ids = []
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
policy_group_ids = hash["policy_group_ids"] || []
|
7
|
+
policy_group_ids.map do |name|
|
8
|
+
policy_groups.to_id(name&.downcase.strip)
|
9
|
+
end.compact.tap do |pg_names|
|
10
|
+
pg_names.push(default_id) if pg_names.empty?
|
10
11
|
end
|
11
|
-
policy_group_ids.empty?? default_id : policy_group_ids.join("|")
|
12
12
|
end
|
13
13
|
|
14
14
|
def serializer(person, deps)
|
15
15
|
ids = person&.account&.policy_group_ids || []
|
16
16
|
ids.map do |id|
|
17
17
|
policy_groups.to_name(id)
|
18
|
-
end.compact
|
18
|
+
end.compact
|
19
19
|
end
|
20
20
|
|
21
21
|
private
|
22
22
|
|
23
|
-
def
|
24
|
-
@
|
23
|
+
def default_id
|
24
|
+
@default_id ||= policy_groups.to_id(config.people.default_usergroup)
|
25
25
|
end
|
26
26
|
|
27
|
-
def
|
28
|
-
@
|
27
|
+
def policy_groups
|
28
|
+
@policy_groups ||= config.policy_groups
|
29
29
|
end
|
30
30
|
|
31
31
|
end
|
@@ -57,6 +57,11 @@ module Eco
|
|
57
57
|
@internal_entry
|
58
58
|
end
|
59
59
|
|
60
|
+
# @return [Hash] entry `Hash` with **internal** attribute names, but **external** types and values.
|
61
|
+
def mapped_entry
|
62
|
+
@mapped_entry
|
63
|
+
end
|
64
|
+
|
60
65
|
# @note values ready to be set to a person.
|
61
66
|
# @return [Hash] entry `Hash` with **internal** attribute names, values and types.
|
62
67
|
def final_entry
|
@@ -205,7 +210,6 @@ module Eco
|
|
205
210
|
# @param exclude [String, Array<String>] account properties that should not be set/changed to the person.
|
206
211
|
def set_account(person, exclude: nil)
|
207
212
|
person.account = {} if !person.account
|
208
|
-
person.account.permissions_preset = nil unless person.account.permissions_preset = "custom"
|
209
213
|
scoped_attrs = @emap.account_attrs - into_a(exclude)
|
210
214
|
@final_entry.slice(*scoped_attrs).each do |attr, value|
|
211
215
|
set_part(person.account, attr, value)
|
@@ -285,7 +289,10 @@ module Eco
|
|
285
289
|
# @param internal_entry [Hash] entry with **internal** names and values, but **external** types.
|
286
290
|
# @return [Hash] entry with **internal** names and **external** values and types.
|
287
291
|
def _mapped_serializing(internal_entry)
|
288
|
-
internal_entry.merge(_serialize_values(internal_entry, :internal))
|
292
|
+
mapped_hash = internal_entry.merge(_serialize_values(internal_entry, :internal))
|
293
|
+
model_attrs = @person_parser.all_model_attrs - ["send_invites"]
|
294
|
+
aux_hash = mapped_hash.slice(*model_attrs)
|
295
|
+
merge_missing_attrs(aux_hash, mapped_hash)
|
289
296
|
end
|
290
297
|
|
291
298
|
# Parsing helper that just **parses the values** that have a parser/serializer defined.
|
@@ -15,6 +15,7 @@ module Eco
|
|
15
15
|
# Reorders as follows:
|
16
16
|
# 1. supervisors, people with no supervisor or where their supervisor not present
|
17
17
|
# 2. subordinates
|
18
|
+
# @return [Array<Entry>] `values` sorted by supervisors/subordinates
|
18
19
|
def sort_by_supervisors(values, supervisors_first: true)
|
19
20
|
raise "Expected non hash Enumerable. Given: #{values.class}" if values.is_a?(Hash)
|
20
21
|
return [] unless values && values.is_a?(Enumerable)
|
@@ -32,6 +33,32 @@ module Eco
|
|
32
33
|
roam.call(supervisors_tree(values))
|
33
34
|
end
|
34
35
|
|
36
|
+
# Identifies all the cyclic supervisor chains
|
37
|
+
# @note as `supervisors_tree` will have any entry involved in a cycle at the top, it just checks all the top entries against their offspring
|
38
|
+
# @return [Array<Array>] the sets of entries that are cyclic
|
39
|
+
def identify_cyclic_chains(values)
|
40
|
+
raise "Expected non hash Enumerable. Given: #{values.class}" if values.is_a?(Hash)
|
41
|
+
return [] unless values && values.is_a?(Enumerable)
|
42
|
+
|
43
|
+
identify = Proc.new do |top_sup, offspring, chain = [top_sup]|
|
44
|
+
next [] if offspring.empty?
|
45
|
+
offspring.each_with_object([]) do |(sup, subordinates), set|
|
46
|
+
break set unless set.empty?
|
47
|
+
if top_sup.supervisor_id == sup.id
|
48
|
+
set.concat(chain, [sup])
|
49
|
+
else
|
50
|
+
set = identify.call(top_sup, subordinates, chain | [sup])
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
supervisors_tree(values).each_with_object([]) do |(top_sup, offspring), sets|
|
56
|
+
if (set = identify.call(top_sup, offspring)) && !set.empty?
|
57
|
+
sets.push(set)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
35
62
|
def tree_to_str(tree, lev: 0)
|
36
63
|
raise "Required Hash tree structure. Given: #{tree.class}" unless tree.is_a?(Hash)
|
37
64
|
"".tap do |str|
|
@@ -20,8 +20,8 @@ module Eco
|
|
20
20
|
begin
|
21
21
|
@dir = Eco::Data::Files::Directory.new(value)
|
22
22
|
@dir_path = @dir.create
|
23
|
-
rescue
|
24
|
-
logger.error("could not create or make any sense of directory '#{value}'")
|
23
|
+
rescue Exception => e
|
24
|
+
logger.error("could not create or make any sense of directory '#{value}': #{e.to_s}")
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -1,9 +1,13 @@
|
|
1
1
|
class ::Exception
|
2
2
|
def patch_full_message
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
begin
|
4
|
+
msg = []
|
5
|
+
msg << "\n#{backtrace.first} \n#{message} (#{self.class.to_s})"
|
6
|
+
backtrace[1..-1].each_with_index {|bt, i| msg << "#{" "*8}#{i+1}: from #{bt}"}
|
7
|
+
msg.join("\n")
|
8
|
+
rescue Exception => e
|
9
|
+
puts "Something is wrong with 'patch_full_message': #{e}"
|
10
|
+
end
|
7
11
|
end
|
8
12
|
end
|
9
13
|
|
data/lib/eco/api/error.rb
CHANGED
@@ -80,6 +80,7 @@ module Eco
|
|
80
80
|
next 1 if k1 < k2
|
81
81
|
0
|
82
82
|
end.tap do |siblings|
|
83
|
+
siblings.delete(Unclassified)
|
83
84
|
if direct
|
84
85
|
siblings.reject! do |si|
|
85
86
|
siblings.any? {|s| si < s}
|
@@ -96,17 +97,18 @@ module Eco
|
|
96
97
|
err_msg =~ @match
|
97
98
|
end
|
98
99
|
|
99
|
-
def get_type(err_msg)
|
100
|
+
def get_type(err_msg, first: true)
|
100
101
|
type = nil
|
101
102
|
descendants(direct: true).reverse.each do |klass|
|
102
103
|
if klass.err_match?(err_msg)
|
103
104
|
type = klass
|
104
105
|
if klass.descendants?(direct: true)
|
105
|
-
type = klass.get_type(err_msg) || type
|
106
|
+
type = klass.get_type(err_msg, first: false) || type
|
106
107
|
end
|
107
108
|
end
|
108
109
|
end
|
109
|
-
type
|
110
|
+
return type unless first
|
111
|
+
type || Unclassified
|
110
112
|
end
|
111
113
|
|
112
114
|
def known_err_class?(klass)
|
data/lib/eco/api/microcases.rb
CHANGED
@@ -19,7 +19,9 @@ require_relative 'microcases/people_cache'
|
|
19
19
|
require_relative 'microcases/people_load'
|
20
20
|
require_relative 'microcases/people_refresh'
|
21
21
|
require_relative 'microcases/people_search'
|
22
|
-
require_relative 'microcases/
|
22
|
+
require_relative 'microcases/preserve_filter_tags'
|
23
|
+
require_relative 'microcases/preserve_default_tag'
|
24
|
+
require_relative 'microcases/preserve_policy_groups'
|
23
25
|
require_relative 'microcases/set_account'
|
24
26
|
require_relative 'microcases/set_core_with_supervisor'
|
25
27
|
require_relative 'microcases/set_core'
|
@@ -9,9 +9,9 @@ module Eco
|
|
9
9
|
|
10
10
|
start = Time.now
|
11
11
|
people = session.batch.get_people
|
12
|
-
secs = Time.now - start
|
12
|
+
secs = (Time.now - start).round(3)
|
13
13
|
cnt = people.count
|
14
|
-
per_sec = (cnt.to_f / secs).
|
14
|
+
per_sec = (cnt.to_f / secs).round(2)
|
15
15
|
logger.info("Loaded #{cnt} people in #{secs} seconds (#{per_sec} people/sec)")
|
16
16
|
|
17
17
|
file = file_manager.save_json(people, filename, :timestamp)
|
@@ -34,9 +34,9 @@ module Eco
|
|
34
34
|
|
35
35
|
start = Time.now
|
36
36
|
session.batch.get_people.tap do |people|
|
37
|
-
secs = Time.now - start
|
37
|
+
secs = (Time.now - start).round(3)
|
38
38
|
cnt = people.count
|
39
|
-
per_sec = (cnt.to_f / secs).
|
39
|
+
per_sec = (cnt.to_f / secs).round(2)
|
40
40
|
logger.info("Loaded #{cnt} people in #{secs} seconds (#{per_sec} people/sec)")
|
41
41
|
|
42
42
|
if modifier.include?(:save) && people && people.length > 0
|