eco-helpers 2.7.23 → 2.7.25

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +19 -5
  3. data/lib/eco/api/common/people/person_entry.rb +2 -1
  4. data/lib/eco/api/common/session/base_session.rb +1 -0
  5. data/lib/eco/api/common/session/helpers/prompt_user.rb +3 -1
  6. data/lib/eco/api/common/session/helpers.rb +0 -9
  7. data/lib/eco/api/common/session/logger.rb +2 -0
  8. data/lib/eco/api/microcases/account_excluded.rb +2 -0
  9. data/lib/eco/api/microcases/append_usergroups.rb +4 -6
  10. data/lib/eco/api/microcases/core_excluded.rb +2 -1
  11. data/lib/eco/api/microcases/fix_default_group.rb +13 -14
  12. data/lib/eco/api/microcases/people_cache.rb +10 -3
  13. data/lib/eco/api/microcases/people_load.rb +21 -7
  14. data/lib/eco/api/microcases/people_refresh.rb +11 -3
  15. data/lib/eco/api/microcases/people_search.rb +24 -10
  16. data/lib/eco/api/microcases/person_update.rb +8 -4
  17. data/lib/eco/api/microcases/preserve_default_tag.rb +9 -9
  18. data/lib/eco/api/microcases/preserve_policy_groups.rb +14 -14
  19. data/lib/eco/api/microcases/refresh_default_tag.rb +11 -12
  20. data/lib/eco/api/microcases/s3upload_targets.rb +3 -2
  21. data/lib/eco/api/microcases/set_account.rb +6 -7
  22. data/lib/eco/api/microcases/strict_search.rb +0 -1
  23. data/lib/eco/api/microcases/take_email_from_account.rb +46 -27
  24. data/lib/eco/api/microcases/with_each.rb +35 -23
  25. data/lib/eco/api/microcases/with_each_leaver.rb +1 -1
  26. data/lib/eco/api/microcases/with_each_present.rb +6 -2
  27. data/lib/eco/api/microcases/with_each_starter.rb +7 -3
  28. data/lib/eco/api/microcases/with_each_subordinate.rb +0 -1
  29. data/lib/eco/api/microcases/with_supervisor.rb +0 -1
  30. data/lib/eco/api/microcases.rb +0 -2
  31. data/lib/eco/api/organization/login_providers.rb +23 -5
  32. data/lib/eco/api/session.rb +1 -1
  33. data/lib/eco/cli_default/input.rb +17 -14
  34. data/lib/eco/cli_default/options.rb +41 -23
  35. data/lib/eco/cli_default/people.rb +50 -12
  36. data/lib/eco/cli_default/people_filters.rb +1 -1
  37. data/lib/eco/cli_default/workflow.rb +4 -0
  38. data/lib/eco/data/files/helpers.rb +1 -0
  39. data/lib/eco/version.rb +1 -1
  40. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1d522c29136b4722235f8dbf8349d7328ba7ebe90f77d5fecf15a03a049cc8fe
4
- data.tar.gz: b2529b04d22fcc9f013366c07a5bb7905c8d6154af97c4d235fafc1f0bf6452b
3
+ metadata.gz: f48b7df545da0ca3acf06e577b40cb29cf52efd58d9ee3de743609c9e829c2df
4
+ data.tar.gz: 6e14955bfb6ab3d824dbc5e11d899c30a1059e1a2b37931e6970461753e2d892
5
5
  SHA512:
6
- metadata.gz: 822b1359de0c56118ed2e8e564a54c1119a2bb7597373c029cc72e3f808b3fbd94853a8eced013033613f77b0cfb0c47983e4e03e60e928e30bb6084096d9250
7
- data.tar.gz: f32a7ad2a927015c1a2a1b0642f379c1014231db7a2aea00187bf690584a738c7f6770ba361422eeecbf097f2b760c6c6ee502b8c6ca5d790354cef13bf58f26
6
+ metadata.gz: fe73ff0a71b790e686ca6bd58c553c2643cc71c99c02dd0572cc1acd29b20891a992a5edf1caa96e3d99cf622deac1ef060067f2ac3763cbc48ba1d93bfad7d5
7
+ data.tar.gz: 41a6f87ed1b0dfb5ad3b1fee16afb44d9d0ff8ab7ad6aabc59167003837434ecff523e0f177b7d15a96be6b8044e918084d9eeaade05b33c18bac736a4c11810
data/CHANGELOG.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
- ## [2.7.24] - 2024-07-xx
5
+ ## [2.7.26] - 2024-08-xx
6
6
 
7
7
  ### Added
8
8
 
@@ -10,6 +10,24 @@ All notable changes to this project will be documented in this file.
10
10
 
11
11
  ### Fixed
12
12
 
13
+ ## [2.7.25] - 2024-08-01
14
+
15
+ ### Added
16
+
17
+ - `Eco::API::Organization::LoginProviders#to_id`
18
+ - added support for `:magic_link` and `:magiclink`
19
+
20
+ ### Changed
21
+
22
+ - `-get-partial` switches to full people download when it the input file surpases `MAX_GET_PARTIAL`
23
+
24
+ ## [2.7.24] - 2024-07-30
25
+
26
+ ### Fixed
27
+
28
+ - `Eco::API::Common::People::PersonEntry#set_core`
29
+ - Exclude setting `id` (should invariably be set via back-end only)
30
+
13
31
  ## [2.7.23] - 2024-07-29
14
32
 
15
33
  ### Fixed
@@ -18,8 +36,6 @@ All notable changes to this project will be documented in this file.
18
36
 
19
37
  ## [2.7.22] - 2024-07-26
20
38
 
21
- ### Added
22
-
23
39
  ### Changed
24
40
 
25
41
  - Patch on exception: to show cause
@@ -27,8 +43,6 @@ All notable changes to this project will be documented in this file.
27
43
  - `load_json` prevent avoidable memory leaks
28
44
  - `save_json` prevent avoidable memory leaks
29
45
 
30
- ### Fixed
31
-
32
46
  ## [2.7.21] - 2024-07-13
33
47
 
34
48
  ### Added
@@ -211,7 +211,8 @@ module Eco
211
211
  # @param person [Ecoportal::API::V1::Person] the person we want to set the core values to.
212
212
  # @param exclude [String, Array<String>] core attributes that should not be set/changed to the person.
213
213
  def set_core(person, exclude: nil)
214
- scoped_attrs = @emap.core_attrs(@final_entry) - into_a(exclude)
214
+ scoped_attrs = @emap.core_attrs(@final_entry) - into_a(exclude)
215
+ scoped_attrs -= ['id']
215
216
  @final_entry.slice(*scoped_attrs).each do |attr, value|
216
217
  set_part(person, attr, value)
217
218
  rescue StandardError => e
@@ -8,6 +8,7 @@ module Eco
8
8
  alias_method :enviro, :environment
9
9
 
10
10
  include Session::Helpers
11
+ include Eco::Language::AuxiliarLogger
11
12
 
12
13
  def initialize(env)
13
14
  msg = "Expected object Eco::API::Common::Session::Environment. Given: #{env.class}"
@@ -7,12 +7,13 @@ module Eco
7
7
  # Prompts user for input with option for default on timeout.
8
8
  def prompt_user(question, default:, explanation: "", timeout: nil)
9
9
  require 'timeout'
10
- response = \
10
+ response =
11
11
  if config.run_mode_remote?
12
12
  default
13
13
  else
14
14
  puts explanation
15
15
  print "#{question} "
16
+
16
17
  if timeout
17
18
  begin
18
19
  Timeout::timeout(timeout) { STDIN.gets.chop }
@@ -24,6 +25,7 @@ module Eco
24
25
  end
25
26
  end
26
27
  return response unless block_given?
28
+
27
29
  yield(response)
28
30
  end
29
31
  end
@@ -5,24 +5,15 @@ module Eco
5
5
  module Common
6
6
  module Session
7
7
  module Helpers
8
-
9
8
  class << self
10
9
  def included(base)
11
10
  base.send(:include, InstanceMethods)
12
- base.extend(ClassMethods)
13
11
  end
14
12
  end
15
13
 
16
-
17
- module ClassMethods
18
-
19
- end
20
-
21
14
  module InstanceMethods
22
15
  include Helpers::PromptUser
23
-
24
16
  end
25
-
26
17
  end
27
18
  end
28
19
  end
@@ -21,6 +21,7 @@ module Eco
21
21
  logger.formatter = format_proc(console: false) do |severity, datetime, msg, formatted_msg|
22
22
  cache.add(severity, datetime, msg, formatted_msg)
23
23
  end
24
+
24
25
  logger.level = file_level
25
26
  end
26
27
  end
@@ -54,6 +55,7 @@ module Eco
54
55
  log_file = @enviro.file_manager.dir.file(log_file) if @enviro
55
56
  FileManager.create_directory(log_file, includes_file: true)
56
57
  end
58
+
57
59
  log_file
58
60
  end
59
61
  end
@@ -10,9 +10,11 @@ module Eco
10
10
  if options.dig(:exclude, :policy_groups)
11
11
  account_excluded.push("policy_group_ids")
12
12
  end
13
+
13
14
  if options.dig(:exclude, :default_tag)
14
15
  account_excluded.push("default_tag")
15
16
  end
17
+
16
18
  if options.dig(:exclude, :login_providers)
17
19
  account_excluded.push("login_provider_ids")
18
20
  end
@@ -6,13 +6,11 @@ module Eco
6
6
  # @param person [Ecoportal::API::V1::Person] the person we want to update, carrying the changes to be done.
7
7
  # @param options [Hash] the options.
8
8
  def append_usergroups(entry, person, options)
9
- unless options.dig(:exclude, :account)
10
- if person.account
11
- person.account.policy_group_ids |= entry.policy_group_ids
12
- end
13
- end
14
- end
9
+ return if options.dig(:exclude, :account)
10
+ return unless person.account
15
11
 
12
+ person.account.policy_group_ids |= entry.policy_group_ids
13
+ end
16
14
  end
17
15
  end
18
16
  end
@@ -7,7 +7,8 @@ module Eco
7
7
  # @return [Array<String>] the core parameters that should not be included.
8
8
  def core_excluded(person, options)
9
9
  ["supervisor_id"].tap do |core_excluded|
10
- can_exclude = person.new?? ["filter_tags"] : ["name", "external_id", "email", "filter_tags"]
10
+ can_exclude = person.new?? ["filter_tags"] : %w[name external_id email filter_tags]
11
+
11
12
  exclusions = can_exclude.select do |attr|
12
13
  options.dig(:exclude, attr.to_sym)
13
14
  end
@@ -6,29 +6,28 @@ module Eco
6
6
  # @param person [Ecoportal::API::V1::Person] the person we want to update, carrying the changes to be done.
7
7
  # @param options [Hash] the options.
8
8
  def fix_default_group(entry, person, options)
9
- unless options.dig(:exclude, :account)
10
- unless options.dig(:exclude, :policy_groups) && !person.new?
11
- end_pg_ids = person.account.policy_group_ids
9
+ return if options.dig(:exclude, :account)
10
+ return if options.dig(:exclude, :policy_groups) && !person.new?
12
11
 
13
- if person.account_added? && __def_usergroup_id && !entry.policy_group_ids?
14
- # on account creation, if missing policy_group_ids column in the input
15
- # use default_usergroup, if it's defined
16
- end_pg_ids = [__def_usergroup_id]
17
- end
12
+ end_pg_ids = person.account.policy_group_ids
18
13
 
19
- person.account.policy_group_ids = end_pg_ids
20
- end
14
+ if person.account_added? && __def_usergroup_id && !entry.policy_group_ids?
15
+ # on account creation, if missing policy_group_ids column in the input
16
+ # use default_usergroup, if it's defined
17
+ end_pg_ids = [__def_usergroup_id]
21
18
  end
19
+
20
+ person.account.policy_group_ids = end_pg_ids
22
21
  end
23
22
 
24
23
  private
25
24
 
26
25
  def __def_usergroup_id
27
- @def_usergroup_id ||= if session.config.people.default_usergroup?
28
- session.policy_groups.to_id(session.config.people.default_usergroup)
29
- end
26
+ @__def_usergroup_id ||=
27
+ if session.config.people.default_usergroup?
28
+ session.policy_groups.to_id(session.config.people.default_usergroup)
29
+ end
30
30
  end
31
-
32
31
  end
33
32
  end
34
33
  end
@@ -5,17 +5,24 @@ module Eco
5
5
  # @param filename [String] the name of the file where the data should be cached.
6
6
  # @return [Eco::API::Organization::People] the `People` object with the data.
7
7
  def people_cache(filename = enviro.config.people.cache)
8
- logger.info("Going to get all the people via API")
8
+ log(:info) { "Going to get all the people via API" }
9
9
 
10
10
  start = Time.now
11
11
  people = session.batch.get_people
12
12
  secs = (Time.now - start).round(3)
13
13
  cnt = people.count
14
14
  per_sec = (cnt.to_f / secs).round(2)
15
- logger.info("Loaded #{cnt} people in #{secs} seconds (#{per_sec} people/sec)")
15
+
16
+ log(:info) {
17
+ "Loaded #{cnt} people in #{secs} seconds (#{per_sec} people/sec)"
18
+ }
16
19
 
17
20
  file = file_manager.save_json(people, filename, :timestamp)
18
- logger.info("#{people.length} people loaded and saved locally to #{file}.")
21
+
22
+ log(:info) {
23
+ "#{people.length} people loaded and saved locally to #{file}."
24
+ }
25
+
19
26
  Eco::API::Organization::People.new(people)
20
27
  end
21
28
  end
@@ -4,7 +4,7 @@ module Eco
4
4
  # Helper to load `People` that works in different phases:
5
5
  # 1. first tries to get the newest cached file that follows `filename` pattern
6
6
  # - if not the newest, it tries to find the specific filename
7
- # 2. if it succeeds to identif a cached file, it loads it
7
+ # 2. if it succeeds to identify a cached file, it loads it
8
8
  # - if it fails, it tries to get people from the server
9
9
  # @note
10
10
  # - `filename` will be relative to the working directory (the one of the session `enviro` set by the user).
@@ -25,27 +25,37 @@ module Eco
25
25
 
26
26
  if file
27
27
  file_manager.load_json(file).tap do |people|
28
- logger.info("#{people&.length} people loaded from file #{file}") if people.is_a?(Array)
28
+ next unless people.is_a?(Array)
29
+
30
+ log(:info) {
31
+ "#{people&.length} people loaded from file #{file}"
32
+ }
29
33
  end
30
34
  else
31
- logger.error("could not find the file #{file_manager.dir.file(filename)}")
35
+ log(:error) {
36
+ "could not find the file #{file_manager.dir.file(filename)}"
37
+ }
38
+
32
39
  exit unless modifier.include?(:api)
33
40
 
34
41
  people_load(modifier: modifier - %i[newest file])
35
42
  end
36
43
  when modifier.include?(:api)
37
- logger.info("Going to get all the people via API (load)")
44
+ log(:info) { "Going to get all the people via API (load)" }
38
45
 
39
46
  start = Time.now
40
47
  session.batch.get_people.tap do |people|
41
48
  secs = (Time.now - start).round(3)
42
49
  cnt = people.count
43
50
  per_sec = (cnt.to_f / secs).round(2)
44
- logger.info("Loaded #{cnt} people in #{secs} seconds (#{per_sec} people/sec)")
51
+
52
+ log(:info) {
53
+ "Loaded #{cnt} people in #{secs} seconds (#{per_sec} people/sec)"
54
+ }
45
55
 
46
56
  if modifier.include?(:save) && people && people.length.positive?
47
57
  file = file_manager.save_json(people, filename, :timestamp)
48
- logger.info("#{people.length} people saved to file #{file}.")
58
+ log(:info) { "#{people.length} people saved to file #{file}." }
49
59
  end
50
60
  end
51
61
  end.then do |people|
@@ -59,7 +69,11 @@ module Eco
59
69
  if newest
60
70
  # search input file based on pattern (in case the name has a timestamp)
61
71
  file_manager.dir.newest_file(file: filename).tap do |file|
62
- logger.info("previous file found: #{file}") if file
72
+ next unless file
73
+
74
+ log(:info) {
75
+ "previous file found: #{file}"
76
+ }
63
77
  end
64
78
  else
65
79
  file_manager.dir.file(filename, should_exist: true)
@@ -26,17 +26,25 @@ module Eco
26
26
  created = people.length - ini
27
27
  msg = "Going to refresh #{people.length} people with server data"
28
28
  msg += " (including #{created} that were created)" if created.positive?
29
- logger.info(msg)
29
+ log(:info) { msg }
30
30
 
31
31
  start = Time.now
32
32
  entries = session.batch.get_people(people, silent: true)
33
33
  secs = (Time.now - start).round(3)
34
34
  cnt = entries.count
35
35
  per_sec = (cnt.to_f / secs).round(2)
36
- logger.info("Re-loaded #{cnt} people (out of #{people.length}) in #{secs} seconds (#{per_sec} people/sec)")
36
+
37
+ log(:info) {
38
+ "Re-loaded #{cnt} people (out of #{people.length}) in #{secs} seconds (#{per_sec} people/sec)"
39
+ }
37
40
 
38
41
  missing = people.length - entries.length
39
- logger.error("Missed to obtain #{missing} people during the refresh") if missing.positive?
42
+
43
+ if missing.positive?
44
+ log(:error) {
45
+ "Missed to obtain #{missing} people during the refresh"
46
+ }
47
+ end
40
48
 
41
49
  Eco::API::Organization::People.new(entries)
42
50
  end
@@ -10,36 +10,43 @@ module Eco
10
10
  # @param options [Hash] the options.
11
11
  # @param silent [Boolean] `false` if low level search messages should be shown.
12
12
  # @return [Eco::API::Organization::People] the `People` object with the found persons.
13
- def people_search(data, options: {}, silent: true) # rubocop:disable Metrics/AbcSize
14
- session.logger.info("Going to api get #{data.length} entries...")
13
+ def people_search(data, options: {}, silent: true) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
14
+ log(:info) { "Going to api get #{data.length} entries..." }
15
15
 
16
- silent = silent && data.count <= 500
16
+ silent &&= data.count <= 500
17
17
 
18
18
  start = Time.now
19
19
  people = session.batch.search(data, silent: silent).then do |status|
20
20
  secs = (Time.now - start).round(3)
21
+
21
22
  Eco::API::Organization::People.new(status.people).tap do |people| # rubocop:disable Lint/ShadowingOuterLocalVariable
22
23
  cnt = people.count
23
24
  per_sec = (cnt.to_f / secs).round(2)
25
+
24
26
  msg = "... could get #{cnt} people "
25
27
  msg << "(out of #{data.length} entries) in #{secs} seconds (#{per_sec} people/sec)"
26
- session.logger.info(msg)
28
+
29
+ log(:info) { msg }
27
30
  end
28
31
  end
29
32
 
30
33
  # get the supervisors of found people (current supervisors)
31
34
  supers = people_search_prepare_supers_request(people)
32
35
  if supers.length.positive?
33
- session.logger.info(" Going to api get #{supers.length} current supervisors...")
36
+ log(:info) {
37
+ " Going to api get #{supers.length} current supervisors..."
38
+ }
39
+
34
40
  start = Time.now
35
41
  people = session.batch.search(supers, silent: silent).then do |status|
36
42
  secs = (Time.now - start).round(3)
37
43
  found = status.people
38
44
  cnt = found.count
39
45
  per_sec = (cnt.to_f / secs).round(2)
46
+
40
47
  msg = "... could find #{cnt} current supers "
41
48
  msg << "(out of #{supers.length}) in #{secs} seconds (#{per_sec} people/sec)"
42
- session.logger.info(msg)
49
+ log(:info) { msg }
43
50
 
44
51
  people.merge(found, strict: micro.strict_search?(options))
45
52
  end
@@ -48,22 +55,29 @@ module Eco
48
55
  # get the supervisors referred in the input data (future supervisors)
49
56
  supers = people_search_prepare_supers_request(data, people)
50
57
  if supers.length.positive?
51
- session.logger.info(" Going to api get #{supers.length} supervisors as per input entries...")
52
- start = Time.now
58
+ log(:info) {
59
+ " Going to api get #{supers.length} supervisors as per input entries..."
60
+ }
53
61
 
62
+ start = Time.now
54
63
  people = session.batch.search(supers, silent: silent).then do |status|
55
64
  secs = (Time.now - start).round(3)
56
65
  found = status.people
57
66
  cnt = found.count
58
67
  per_sec = (cnt.to_f / secs).round(2)
68
+
59
69
  msg = "... could find #{cnt} input supers "
60
70
  msg << "(out of #{supers.length}) in #{secs} seconds (#{per_sec} people/sec)"
61
- session.logger.info(msg)
71
+ log(:info) { msg }
72
+
62
73
  people.merge(found, strict: micro.strict_search?(options))
63
74
  end
64
75
  end
65
76
 
66
- session.logger.info("Finally got #{people.length} people (out of #{data.length} entries)")
77
+ log(:info) {
78
+ "Finally got #{people.length} people (out of #{data.length} entries)"
79
+ }
80
+
67
81
  people
68
82
  end
69
83
 
@@ -8,8 +8,11 @@ module Eco
8
8
  # @param reason [String] why are we updating now.
9
9
  # @return [Boolean] `true` if it succeded to update, and `false` otherwise
10
10
  def person_update!(person, context: "Session", reason: "")
11
- logger.debug("#{context}, going to \"#{reason}\".\nPerson: #{person_ref(person)}")
12
- if response = api.people.update(person)
11
+ log(:debug) {
12
+ "#{context}, going to \"#{reason}\".\nPerson: #{person_ref(person)}"
13
+ }
14
+
15
+ if (response = api.people.update(person))
13
16
  if response.success?
14
17
  person.consolidate!
15
18
  true
@@ -17,14 +20,15 @@ module Eco
17
20
  msg = "#{context} Error #{response.status}: #{response.body}\n"
18
21
  msg += " -- Failed to \"#{reason}\".\n"
19
22
  msg += " • Person: #{person_ref(person)}"
20
- logger.error(msg)
23
+ log(:error) { msg }
21
24
  false
22
25
  end
23
26
  else
24
27
  msg = "#{context} Error (connection error)\n"
25
28
  msg += " -- Failed to \"#{reason}\".\n"
26
29
  msg += " • Person: #{person_ref(person)}"
27
- logger.error(msg)
30
+
31
+ log(:error) { msg }
28
32
  false
29
33
  end
30
34
  end
@@ -7,17 +7,17 @@ module Eco
7
7
  # @param person [Ecoportal::API::V1::Person] the person we want to update, carrying the changes to be done.
8
8
  # @param options [Hash] the options.
9
9
  # @return [String] the final value of `default_tag`.
10
- def preserve_default_tag(person, options)
11
- if account = person.account
12
- if account.as_update.key?("default_tag")
13
- if original = person.original_doc.dig("account", "default_tag")
14
- person.account.default_tag = original
15
- end
16
- end
10
+ def preserve_default_tag(person, _options)
11
+ return unless (account = person.account)
12
+
13
+ account.default_tag.tap do
14
+ next unless account.as_update.key?("default_tag")
15
+ next unless (original = person.original_doc.dig("account", "default_tag"))
16
+
17
+ person.account.default_tag = original
18
+ return original
17
19
  end
18
- person.account&.default_tag
19
20
  end
20
-
21
21
  end
22
22
  end
23
23
  end
@@ -8,23 +8,23 @@ module Eco
8
8
  # @param options [Hash] the options.
9
9
  # @param keep_new [Boolean] tells if it should keep the new policy groups or get rid of them.
10
10
  # @return [String] the final value of `policy_group_ids`.
11
- def preserve_policy_groups(person, options, keep_new: false)
12
- if account = person.account
13
- if account.as_update.key?("policy_group_ids")
14
- if original = person.original_doc.dig("account", "policy_group_ids")
15
- unless original.empty?
16
- if keep_new
17
- person.account.policy_group_ids += original
18
- else
19
- person.account.policy_group_ids = original
20
- end
21
- end
22
- end
11
+ def preserve_policy_groups(person, _options, keep_new: false)
12
+ return unless (account = person.account)
13
+
14
+ account.policy_group_ids.tap do
15
+ next unless account.as_update.key?("policy_group_ids")
16
+ next unless (original = person.original_doc.dig("account", "policy_group_ids"))
17
+ next if original.empty?
18
+
19
+ if keep_new
20
+ person.account.policy_group_ids += original
21
+ else
22
+ person.account.policy_group_ids = original
23
23
  end
24
+
25
+ return account.policy_group_ids
24
26
  end
25
- person.account&.policy_group_ids
26
27
  end
27
-
28
28
  end
29
29
  end
30
30
  end
@@ -8,20 +8,19 @@ module Eco
8
8
  # @param person [Ecoportal::API::V1::Person] the person we want to update, carrying the changes to be done.
9
9
  # @param options [Hash] the options
10
10
  def refresh_default_tag(entry, person, options)
11
- if person.account
12
- unless options.dig(:exclude, :account)
13
- unless options.dig(:exclude, :filter_tags) || options.dig(:exclude, :default_tag) || entry&.default_tag?
14
- if session.tagtree
15
- person.account.default_tag = session.tagtree.default_tag(*person.filter_tags)
16
- else
17
- tags = person.filter_tags || []
18
- person.account.default_tag = tags.first unless tags.length > 1
19
- end
20
- end
21
- end
11
+ return unless person.account
12
+ return if options.dig(:exclude, :account)
13
+ return if options.dig(:exclude, :filter_tags)
14
+ return if options.dig(:exclude, :default_tag)
15
+ return if entry&.default_tag?
16
+
17
+ if session.tagtree
18
+ person.account.default_tag = session.tagtree.default_tag(*person.filter_tags)
19
+ else
20
+ tags = person.filter_tags || []
21
+ person.account.default_tag = tags.first unless tags.length > 1
22
22
  end
23
23
  end
24
-
25
24
  end
26
25
  end
27
26
  end
@@ -3,14 +3,16 @@ module Eco
3
3
  class MicroCases
4
4
  # Helper to upload target files to `S3`.
5
5
  # @return [Array<String>] the paths in `S3` of the uploaded files.
6
- def s3upload_targets
6
+ def s3upload_targets # rubocop:disable Metrics/AbcSize
7
7
  [].tap do |paths|
8
8
  session.config.s3storage.target_files.each_with_object(paths) do |file, arr|
9
9
  arr.push(session.s3upload(file: file))
10
10
  end
11
+
11
12
  session.config.s3storage.target_directories.each_with_object(paths) do |folder, arr|
12
13
  arr.concat(session.s3upload(directory: folder))
13
14
  end
15
+
14
16
  session.config.s3storage.target_file_patterns.each_with_object(paths) do |pattern, arr|
15
17
  filenames = []
16
18
  case pattern
@@ -33,7 +35,6 @@ module Eco
33
35
  end
34
36
  end
35
37
  end
36
-
37
38
  end
38
39
  end
39
40
  end
@@ -5,15 +5,14 @@ module Eco
5
5
  # @param person [Ecoportal::API::V1::Person] the person we want to update, carrying the changes to be done.
6
6
  # @param options [Hash] the options.
7
7
  def set_account(entry, person, options)
8
- unless options.dig(:exclude, :account)
9
- entry.set_account(person, exclude: micro.account_excluded(person, options))
8
+ return if options.dig(:exclude, :account)
10
9
 
11
- person.account.send_invites = options[:send_invites] if options.key?(:send_invites)
12
- micro.refresh_default_tag(entry, person, options)
13
- micro.fix_default_group(entry, person, options)
14
- end
15
- end
10
+ entry.set_account(person, exclude: micro.account_excluded(person, options))
16
11
 
12
+ person.account.send_invites = options[:send_invites] if options.key?(:send_invites)
13
+ micro.refresh_default_tag(entry, person, options)
14
+ micro.fix_default_group(entry, person, options)
15
+ end
17
16
  end
18
17
  end
19
18
  end
@@ -13,7 +13,6 @@ module Eco
13
13
  soft_option = options.dig(:search, :soft) && !strict_option
14
14
  (strict_config || strict_option) && !soft_option
15
15
  end
16
-
17
16
  end
18
17
  end
19
18
  end