eco-helpers 1.3.7 → 1.3.8

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: 11b634b1d49337b52fe8d6a04876d706c14e44059410c77801d780a59c2d6276
4
- data.tar.gz: 0fdc891abd28dd93339509f1b0d46a265f7754a1dfcc9eba9ff85ae8a1e6dd2e
3
+ metadata.gz: 4eb9a6d4fc09ab97362ab384856a32562c1f61321277e2537f1cc6859a5a4d54
4
+ data.tar.gz: 550fd9ce9a7510dca05bbcd80c153d7c114a25798e5d5af89059351db13f4b7d
5
5
  SHA512:
6
- metadata.gz: 536f7e54656a444baf0d83213691127f194dd91ce3f45ff91bea7fae441eb7a69b8af0cc41c4a45d8edd08159daf8fa423331bad0fd9f918e0d4b7612fbfd84d
7
- data.tar.gz: c93ef5b4e097999eccaf356be4fea1332e215355e71edf272d6ccf340baa1ac2025df645654b374bc5bbbb26919ebe98a10ab261c0a60eb94dfea16f406364c3
6
+ metadata.gz: ef1c26368f22e5b06ead30ab4aeb042d337fbfb5cd2b68369aa1407350993e38109e7cfde86295e046fcbcc5295a87a97da3cefd91873460cd7a3e535471afb1
7
+ data.tar.gz: 84f36840162ec228b41a923476aae26917ab1254c4c4e86e848b9b276ea84f0e1a33a69f9c0e8c15497262cebfd99151b91a6dd7a2b7779105096ee97593285d
data/CHANGELOG.md ADDED
@@ -0,0 +1,35 @@
1
+ # Change Log
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ ## [1.3.8] - 2020-05-DD (Unreleased)
5
+
6
+ ### Added
7
+
8
+ - this change log file
9
+ - `config.people.default_usergroup`, when defined, will have effect on usecases: `create`, `upsert` and `hris`
10
+ * on account creation, if the input file did not specify `policy_group_ids`
11
+
12
+ ### Changed
13
+
14
+ - `policy` callback to receive new parameter with the `Batch::Job` that it is currently processing/checking
15
+
16
+ **Example of usage**
17
+
18
+ ```ruby
19
+ ASSETS.config.policies do |policies|
20
+ policies.define("update-status") do |people, session, options, policy, job|
21
+ if job.type == :create
22
+ people.each do |person|
23
+ person.details["status"] = "Active" if person.details
24
+ end
25
+ end
26
+ if job.name == "leavers"
27
+ person.details["status"] = "Inactive" if person.details
28
+ end
29
+ end
30
+ end
31
+ ```
32
+
33
+ ### Fixed
34
+
35
+ - `reinvite` `:sync` native usecase (`-reinvite-from`): should skip people with no account.
@@ -106,6 +106,10 @@ module Eco
106
106
  @internal_entry.key?("filter_tags")
107
107
  end
108
108
 
109
+ def policy_group_ids?
110
+ @internal_entry.key?("policy_group_ids")
111
+ end
112
+
109
113
  def default_tag?
110
114
  @internal_entry.key?("default_tag")
111
115
  end
@@ -113,7 +117,7 @@ module Eco
113
117
  def default_tag
114
118
  @internal_entry["default_tag"]
115
119
  end
116
-
120
+
117
121
  # Provides a reference of this person.
118
122
  # @return [String] string summary of this person identity.
119
123
  def to_s(options)
@@ -14,11 +14,12 @@ module Eco
14
14
  end
15
15
  end
16
16
 
17
- def launch(people:, session:, options: {})
17
+ def launch(people:, session:, job:, options: {})
18
18
 
19
19
  args = {
20
20
  people: people,
21
21
  session: session,
22
+ job: job,
22
23
  options: options
23
24
  }
24
25
 
@@ -229,7 +229,7 @@ module Eco
229
229
  people(pre_queue).tap do |entries|
230
230
  policies = session.config.policies
231
231
  unless policies.empty? || options.dig(:skip, :api_policies)
232
- policies.launch(people: entries, session: session, options: options)
232
+ policies.launch(people: entries, session: session, options: options, job: self)
233
233
  end
234
234
  end
235
235
  end
@@ -71,6 +71,10 @@ module Eco
71
71
  self["default_usergroup"]
72
72
  end
73
73
 
74
+ def default_usergroup?
75
+ !!self["default_usergroup"]
76
+ end
77
+
74
78
  def default_schema=(name)
75
79
  self["default_schema"] = name
76
80
  end
@@ -79,6 +83,10 @@ module Eco
79
83
  self["default_schema"]
80
84
  end
81
85
 
86
+ def default_schema?
87
+ !!self["default_schema"]
88
+ end
89
+
82
90
  def presets_custom=(file)
83
91
  self["presets_custom"] = file
84
92
  end
@@ -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
  session.logger.error("Entry(#{i}) - this person (id: '#{person.id}') already exists: #{entry.to_s(:identify)}")
@@ -34,15 +38,31 @@ module Eco
34
38
  entry.set_details(person) unless options.dig(:exclude, :details)
35
39
 
36
40
  unless options.dig(:exclude, :account)
37
- ini_pg_ids = person.account&.policy_group_ids || []
38
- entry.set_account(person)
41
+ add_account = !person.account
42
+ ini_pg_ids = person.account&.policy_group_ids || []
43
+
44
+ account_excluded = []
45
+ account_excluded.push("policy_group_ids") if options.dig(:exclude, :policy_groups) && !create
46
+
47
+ entry.set_account(person, exclude: account_excluded)
39
48
 
40
49
  person.account&.send_invites = options[:send_invites] if options.key?(:send_invites)
41
50
 
42
- person.account.policy_group_ids = pgs.user_pg_ids(
43
- initial: ini_pg_ids,
44
- final: person.account.policy_group_ids
45
- )
51
+ unless options.dig(:exclude, :policy_groups) && !create
52
+ end_pg_ids = person.account.policy_group_ids || []
53
+
54
+ unless entry.policy_group_ids? && !add_account && !def_id
55
+ # on account creation, if missing policy_group_ids column in the input
56
+ # use default_usergroup, if it's defined
57
+ end_pg_ids = [def_id]
58
+ end
59
+
60
+ # avoid false updates by preserving the original order
61
+ person.account.policy_group_ids = pgs.user_pg_ids(
62
+ initial: ini_pg_ids,
63
+ final: end_pg_ids
64
+ )
65
+ end
46
66
 
47
67
  person.account.permissions_custom = session.new_preset(person)
48
68
 
@@ -9,11 +9,11 @@ module Eco
9
9
  creation = session.job_group("main").new("create", usecase: usecase, type: :create, sets: [:core, :details, :account])
10
10
  update = session.job_group("main").new("update", usecase: usecase, type: :update, sets: [:core, :details, :account])
11
11
  supers = session.job_group("post").new("supers", usecase: usecase, type: :update, sets: :core)
12
- remove = session.job_group("post").new("remove_account", usecase: usecase, type: :update, sets: :account)
12
+ leavers = session.job_group("post").new("leavers", usecase: usecase, type: :update, sets: :account)
13
13
 
14
14
  people.users.each_with_index do |person, i|
15
15
  if !entries.find(person)
16
- remove.add(person) do |person|
16
+ leavers.add(person) do |person|
17
17
  person.supervisor_id = nil
18
18
  person.account = nil
19
19
  end
@@ -23,6 +23,10 @@ module Eco
23
23
  strict_search = session.config.people.strict_search? && (!options[:search]&.key?(:strict) || options.dig(:search, :strict))
24
24
  pgs = session.policy_groups
25
25
 
26
+ if session.config.people.default_usergroup?
27
+ def_id = pgs.to_id(session.config.people.default_usergroup)
28
+ end
29
+
26
30
  entries.each_with_index do |entry, i|
27
31
  person = people.find(entry, strict: strict_search)
28
32
  person = session.new_person if create = !person
@@ -48,7 +52,8 @@ module Eco
48
52
  entry.set_details(person) unless options.dig(:exclude, :details)
49
53
 
50
54
  unless options.dig(:exclude, :account)
51
- ini_pg_ids = person.account&.policy_group_ids || []
55
+ add_account = !person.account
56
+ ini_pg_ids = person.account&.policy_group_ids || []
52
57
 
53
58
  account_excluded = []
54
59
  account_excluded.push("policy_group_ids") if options.dig(:exclude, :policy_groups) && !create
@@ -58,9 +63,18 @@ module Eco
58
63
  person.account.send_invites = options[:send_invites] if options.key?(:send_invites)
59
64
 
60
65
  unless options.dig(:exclude, :policy_groups) && !create
66
+ end_pg_ids = person.account.policy_group_ids || []
67
+
68
+ unless entry.policy_group_ids? && !add_account && !def_id
69
+ # on account creation, if missing policy_group_ids column in the input
70
+ # use default_usergroup, if it's defined
71
+ end_pg_ids = [def_id]
72
+ end
73
+
74
+ # avoid false updates by preserving the original order
61
75
  person.account.policy_group_ids = pgs.user_pg_ids(
62
76
  initial: ini_pg_ids,
63
- final: person.account.policy_group_ids
77
+ final: end_pg_ids
64
78
  )
65
79
  end
66
80
 
@@ -22,13 +22,15 @@ module Eco
22
22
 
23
23
  entries.each_with_index do |entry, i|
24
24
  if person = people.find(entry, strict: strict_search)
25
- person.account.send_invites = true
26
- invite.add(person)
25
+ if person.account
26
+ person.account.send_invites = true
27
+ invite.add(person)
28
+ end
27
29
  else
28
30
  session.logger.error("Entry(#{i}) - this person does not exist: #{entry.to_s(:identify)}")
29
31
  end
30
32
  end
31
-
33
+
32
34
  end
33
35
  end
34
36
 
@@ -10,7 +10,7 @@ module Eco
10
10
  supers = session.job_group("post").new("supers", usecase: usecase, type: :update, sets: :core)
11
11
 
12
12
  strict_search = session.config.people.strict_search? && (!options[:search]&.key?(:strict) || options.dig(:search, :strict))
13
- pgs = session.policy_groups
13
+ pgs = session.policy_groups
14
14
 
15
15
  entries.each.with_index do |entry, i|
16
16
  if person = people.find(entry, strict: strict_search)
@@ -47,6 +47,7 @@ module Eco
47
47
  person.account.send_invites = options[:send_invites] if options.key?(:send_invites)
48
48
 
49
49
  unless options.dig(:exclude, :policy_groups)
50
+ # avoid false updates by preserving the original order
50
51
  person.account.policy_group_ids = pgs.user_pg_ids(
51
52
  initial: ini_pg_ids,
52
53
  final: person.account.policy_group_ids
@@ -13,6 +13,10 @@ module Eco
13
13
  strict_search = session.config.people.strict_search? && (!options[:search]&.key?(:strict) || options.dig(:search, :strict))
14
14
  pgs = session.policy_groups
15
15
 
16
+ if session.config.people.default_usergroup?
17
+ def_id = pgs.to_id(session.config.people.default_usergroup)
18
+ end
19
+
16
20
  entries.each_with_index do |entry, i|
17
21
  person = people.find(entry, strict: strict_search)
18
22
  person = session.new_person if create = !person
@@ -41,7 +45,8 @@ module Eco
41
45
  entry.set_details(person) unless options.dig(:exclude, :details)
42
46
 
43
47
  unless options.dig(:exclude, :account)
44
- ini_pg_ids = person.account&.policy_group_ids || []
48
+ add_account = !person.account
49
+ ini_pg_ids = person.account&.policy_group_ids || []
45
50
 
46
51
  account_excluded = []
47
52
  account_excluded.push("policy_group_ids") if options.dig(:exclude, :policy_groups) && !create
@@ -51,9 +56,18 @@ module Eco
51
56
  person.account.send_invites = options[:send_invites] if options.key?(:send_invites)
52
57
 
53
58
  unless options.dig(:exclude, :policy_groups) && !create
59
+ end_pg_ids = person.account.policy_group_ids || []
60
+
61
+ unless entry.policy_group_ids? && !add_account && !def_id
62
+ # on account creation, if missing policy_group_ids column in the input
63
+ # use default_usergroup, if it's defined
64
+ end_pg_ids = [def_id]
65
+ end
66
+
67
+ # avoid false updates by preserving the original order
54
68
  person.account.policy_group_ids = pgs.user_pg_ids(
55
69
  initial: ini_pg_ids,
56
- final: person.account.policy_group_ids
70
+ final: end_pg_ids
57
71
  )
58
72
  end
59
73
 
@@ -25,10 +25,8 @@ module Eco
25
25
  # @param usecase [Eco::API::UseCases::UseCase] target usecase
26
26
  # @return [Eco::API::UseCases::UseCaseIO]
27
27
  def new(usecase:, **kargs)
28
- default = {
29
- usecase: usecase,
30
- job: @job
31
- }
28
+ default = { usecase: usecase }
29
+ default.merge!(job: @job) if @job
32
30
  super(**default.merge(kargs))
33
31
  end
34
32
 
@@ -53,12 +51,10 @@ module Eco
53
51
  def params(keyed: false)
54
52
  super(keyed: keyed).tap do |res|
55
53
  if keyed
56
- res.merge!({
57
- usecase: usecase,
58
- job: @job
59
- })
54
+ res.merge!(usecase: usecase)
55
+ res.merge!(job: @job) if @job
60
56
  else
61
- res.push(usecase).push(@job)
57
+ res.push(usecase).push(@job) if @job
62
58
  end
63
59
  end
64
60
  end
data/lib/eco/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Eco
2
- VERSION = "1.3.7"
2
+ VERSION = "1.3.8"
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.7
4
+ version: 1.3.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Segura
@@ -208,6 +208,7 @@ files:
208
208
  - ".gitignore"
209
209
  - ".rspec"
210
210
  - ".yardopts"
211
+ - CHANGELOG.md
211
212
  - Gemfile
212
213
  - README.md
213
214
  - Rakefile