eco-helpers 2.2.1 → 2.2.3
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 +14 -2
- data/eco-helpers.gemspec +1 -1
- data/lib/eco/api/common/people/default_parsers/policy_groups_parser.rb +10 -2
- data/lib/eco/api/organization/tag_tree.rb +31 -19
- data/lib/eco/api/session/config/base_config.rb +4 -0
- data/lib/eco/api/session/config/tagtree.rb +10 -4
- data/lib/eco/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ac9d8f190b56ad971ec86e7c51be2d8bce759b7769e11065c7a61e4b26e2c5f2
|
4
|
+
data.tar.gz: b4a0de11bae2d18e4156e4904a5ca051d070c08e8c3c213749ac83acaa326059
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 19cfac22cebdb7a601879a9ce3c6a897c424dceeca2e42c65d8632dcdadd7c49fe239daab17926ae6531e87fe03ca962a42cf0bc815c29c8cf24d8cbbd2fbe73
|
7
|
+
data.tar.gz: 1912c842a4f517f1977024b7337dca4ab648eb77e4d6b30ab5c28fdf1d2381e6e851107d4b1a6693e603133c70b7dd231861ab78d70d0fce5cdcbdc4ed7d6b9c
|
data/CHANGELOG.md
CHANGED
@@ -1,11 +1,23 @@
|
|
1
1
|
# Change Log
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
|
4
|
-
## [2.2.
|
4
|
+
## [2.2.3] - 2023-02-xx
|
5
5
|
|
6
6
|
### Added
|
7
|
+
- Logger info for live tree selected.
|
8
|
+
|
7
9
|
### Changed
|
10
|
+
- `Eco::API::Common::People::DefaultParsers::PolicyGroupsParser`
|
11
|
+
- Should warn of unknown policy groups
|
12
|
+
|
8
13
|
### Fixed
|
14
|
+
- `Eco::API:Organization::TagTree` fix `defaults_tag` scoping
|
15
|
+
|
16
|
+
## [2.2.2] - 2023-02-27
|
17
|
+
|
18
|
+
### Fixed
|
19
|
+
- Typo in GraphQL client (`locationsStructures` should read `locationStructures`)
|
20
|
+
- Multiple typos in new code
|
9
21
|
|
10
22
|
## [2.2.1] - 2023-02-24
|
11
23
|
|
@@ -18,7 +30,7 @@ All notable changes to this project will be documented in this file.
|
|
18
30
|
### Changed
|
19
31
|
- **Patch** `Ecoportal::API::V1::Person::VALID_TAG_REGEX` it now allows for dot `.`
|
20
32
|
- update gem dependencies
|
21
|
-
|
33
|
+
|
22
34
|
## [2.1.12] - 2022-11-30
|
23
35
|
|
24
36
|
### Fixed
|
data/eco-helpers.gemspec
CHANGED
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
|
|
32
32
|
|
33
33
|
spec.add_dependency 'ecoportal-api', '>= 0.8.5', '< 0.9'
|
34
34
|
spec.add_dependency 'ecoportal-api-v2', '>= 1.0.1', '< 1.1'
|
35
|
-
spec.add_dependency 'ecoportal-api-graphql', '>= 0.2.
|
35
|
+
spec.add_dependency 'ecoportal-api-graphql', '>= 0.2.3', '< 0.3'
|
36
36
|
spec.add_dependency 'aws-sdk-s3', '>= 1.83.0', '< 2'
|
37
37
|
spec.add_dependency 'aws-sdk-ses', '>= 1.36.0', '< 2'
|
38
38
|
spec.add_dependency 'dotenv', '>= 2.7.6', '< 2.8'
|
@@ -5,7 +5,12 @@ class Eco::API::Common::People::DefaultParsers::PolicyGroupsParser < Eco::API::C
|
|
5
5
|
def parser(hash, deps)
|
6
6
|
policy_group_ids = hash["policy_group_ids"] || []
|
7
7
|
policy_group_ids.map do |name|
|
8
|
-
policy_groups.to_id(name&.downcase.strip)
|
8
|
+
policy_groups.to_id(name&.downcase.strip).tap do |known|
|
9
|
+
unless !name || known || unknown_pgs.include?(name)
|
10
|
+
unknown_pgs.push(name)
|
11
|
+
logger.warn("Unknown Policy Group: '#{name}'")
|
12
|
+
end
|
13
|
+
end
|
9
14
|
end.compact.tap do |pg_names|
|
10
15
|
pg_names.push(default_id) if pg_names.empty?
|
11
16
|
end
|
@@ -20,6 +25,10 @@ class Eco::API::Common::People::DefaultParsers::PolicyGroupsParser < Eco::API::C
|
|
20
25
|
|
21
26
|
private
|
22
27
|
|
28
|
+
def unknown_pgs
|
29
|
+
unknown_pgs ||= []
|
30
|
+
end
|
31
|
+
|
23
32
|
def default_id
|
24
33
|
@default_id ||= policy_groups.to_id(config.people.default_usergroup)
|
25
34
|
end
|
@@ -27,5 +36,4 @@ class Eco::API::Common::People::DefaultParsers::PolicyGroupsParser < Eco::API::C
|
|
27
36
|
def policy_groups
|
28
37
|
@policy_groups ||= config.policy_groups
|
29
38
|
end
|
30
|
-
|
31
39
|
end
|
@@ -22,6 +22,8 @@ module Eco
|
|
22
22
|
# tree = TagTree.new(tree.to_json)
|
23
23
|
# @param tagtree [String] representation of the tagtree in json.
|
24
24
|
def initialize(tagtree = [], name: nil, id: nil, depth: -1, path: [], enviro: nil)
|
25
|
+
@depth = depth
|
26
|
+
|
25
27
|
case tagtree
|
26
28
|
when String
|
27
29
|
@source = JSON.parse(tagtree)
|
@@ -32,24 +34,22 @@ module Eco
|
|
32
34
|
fatal("Expecting Environment object. Given: #{enviro}") if enviro && !enviro.is_a?(API::Common::Session::Environment)
|
33
35
|
@enviro = enviro
|
34
36
|
|
35
|
-
@depth = depth
|
36
37
|
if @source.is_a?(Array)
|
37
38
|
@id = id
|
38
39
|
@name = name
|
39
|
-
@
|
40
|
+
@row_nodes = @source
|
40
41
|
else
|
41
42
|
@id = @source.values_at('tag', 'id').compact.first&.upcase
|
42
43
|
@name = @source['name']
|
43
|
-
@
|
44
|
+
@row_nodes = @source['nodes'] || []
|
44
45
|
end
|
45
46
|
|
46
47
|
@path = path || []
|
47
48
|
@path.push(@id) unless top?
|
48
49
|
|
49
|
-
@nodes =
|
50
|
-
TagTree.new(cnode, depth:
|
50
|
+
@nodes = @row_nodes.map do |cnode|
|
51
|
+
TagTree.new(cnode, depth: depth + 1, path: @path.dup, enviro: @enviro)
|
51
52
|
end
|
52
|
-
@children_count = @nodes.count
|
53
53
|
|
54
54
|
init_hashes
|
55
55
|
end
|
@@ -84,7 +84,7 @@ module Eco
|
|
84
84
|
|
85
85
|
# @return [Boolean] `true` if there are tags in the node, `false` otherwise.
|
86
86
|
def empty?
|
87
|
-
@
|
87
|
+
@hash_tags.empty?
|
88
88
|
end
|
89
89
|
|
90
90
|
# @return [Integer] the number of locations
|
@@ -94,9 +94,11 @@ module Eco
|
|
94
94
|
|
95
95
|
# @return [Integer] the highest `depth` of all the children.
|
96
96
|
def total_depth
|
97
|
-
@total_depth ||= if
|
98
|
-
deepest_node = nodes.max_by
|
99
|
-
|
97
|
+
@total_depth ||= if has_children?
|
98
|
+
deepest_node = nodes.max_by do |node|
|
99
|
+
node.total_depth
|
100
|
+
end
|
101
|
+
deepest_node.total_depth
|
100
102
|
else
|
101
103
|
depth
|
102
104
|
end
|
@@ -140,10 +142,20 @@ module Eco
|
|
140
142
|
# @return [Array<String>]
|
141
143
|
def leafs
|
142
144
|
tags.select do |tag|
|
143
|
-
node(tag).
|
145
|
+
!node(tag).has_children?
|
144
146
|
end
|
145
147
|
end
|
146
148
|
|
149
|
+
# @return [Integer]
|
150
|
+
def children_count
|
151
|
+
nodes.count
|
152
|
+
end
|
153
|
+
|
154
|
+
# @return [Boolean] it has subnodes
|
155
|
+
def has_children?
|
156
|
+
children_count > 0
|
157
|
+
end
|
158
|
+
|
147
159
|
# Verifies if a tag exists in the tree.
|
148
160
|
# @param key [String] tag to verify.
|
149
161
|
# @return [Boolean]
|
@@ -222,14 +234,14 @@ module Eco
|
|
222
234
|
# @return [String] default tag.
|
223
235
|
def default_tag(*values)
|
224
236
|
values = filter_tags(values)
|
225
|
-
nodes = [];
|
237
|
+
nodes = []; ddepth = -1
|
226
238
|
values.each do |tag|
|
227
239
|
raise("Couldn't find the node of #{tag} in the tag-tree definition") unless cnode = node(tag)
|
228
240
|
|
229
|
-
if cnode.depth >
|
241
|
+
if cnode.depth > ddepth
|
230
242
|
nodes = [cnode]
|
231
|
-
|
232
|
-
elsif cnode.depth ==
|
243
|
+
ddepth = cnode.depth
|
244
|
+
elsif cnode.depth == ddepth
|
233
245
|
nodes.push(cnode)
|
234
246
|
end
|
235
247
|
end
|
@@ -237,9 +249,9 @@ module Eco
|
|
237
249
|
default_tag = nil
|
238
250
|
if nodes.length > 1
|
239
251
|
common = nodes.reduce(self.tags.reverse) {|com, cnode| com & cnode.path.reverse}
|
240
|
-
default_tag = common.first if common.length > 0 &&
|
252
|
+
default_tag = common.first if common.length > 0 && ddepth > 0
|
241
253
|
end
|
242
|
-
default_tag
|
254
|
+
default_tag ||= nodes.first&.tag if (ddepth > 0) || flat?
|
243
255
|
default_tag
|
244
256
|
end
|
245
257
|
|
@@ -258,12 +270,12 @@ module Eco
|
|
258
270
|
def init_hashes
|
259
271
|
@hash_tags = {}
|
260
272
|
@hash_tags[@id] = self unless top?
|
261
|
-
@hash_tags =
|
273
|
+
@hash_tags = nodes.reduce(@hash_tags) do |h,n|
|
262
274
|
h.merge(n.hash)
|
263
275
|
end
|
264
276
|
@hash_paths = {}
|
265
277
|
@hash_paths[@id] = @path unless top?
|
266
|
-
@hash_paths =
|
278
|
+
@hash_paths = nodes.reduce(@hash_paths) do |h,n|
|
267
279
|
h.merge(n.hash_paths)
|
268
280
|
end
|
269
281
|
end
|
@@ -21,23 +21,29 @@ module Eco
|
|
21
21
|
trees = live_trees(enviro: enviro)
|
22
22
|
@live_tree = trees.reject do |tree|
|
23
23
|
tree.empty?
|
24
|
-
end.max
|
24
|
+
end.max do |a,b|
|
25
|
+
a.count <=> b.count
|
26
|
+
end.tap do |tree|
|
27
|
+
if tree
|
28
|
+
logger.info("Live tree in use: '#{tree.name}'")
|
29
|
+
end
|
30
|
+
end
|
25
31
|
end
|
26
32
|
|
27
33
|
# Retrieves all the location structures of the organisation
|
28
34
|
def live_trees(enviro: nil)
|
29
|
-
[].tap do |
|
35
|
+
[].tap do |eco_trees|
|
30
36
|
next unless apis.active_api.version_available?(:graphql)
|
31
37
|
next unless graphql = apis.api(version: :graphql)
|
32
38
|
kargs = {
|
33
39
|
includeArchived: false,
|
34
40
|
includeUnpublished: false
|
35
41
|
}
|
36
|
-
next unless trees = graphql.currentOrganization.
|
42
|
+
next unless trees = graphql.currentOrganization.locationStructures(**kargs)
|
37
43
|
trees.each do |tree|
|
38
44
|
args = { enviro: enviro, id: tree.id, name: tree.name}
|
39
45
|
eco_tree = Eco::API::Organization::TagTree.new(tree.treeify, **args)
|
40
|
-
|
46
|
+
eco_trees.push(eco_tree)
|
41
47
|
end
|
42
48
|
end
|
43
49
|
end
|
data/lib/eco/version.rb
CHANGED
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: 2.2.
|
4
|
+
version: 2.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oscar Segura
|
@@ -156,7 +156,7 @@ dependencies:
|
|
156
156
|
requirements:
|
157
157
|
- - ">="
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version: 0.2.
|
159
|
+
version: 0.2.3
|
160
160
|
- - "<"
|
161
161
|
- !ruby/object:Gem::Version
|
162
162
|
version: '0.3'
|
@@ -166,7 +166,7 @@ dependencies:
|
|
166
166
|
requirements:
|
167
167
|
- - ">="
|
168
168
|
- !ruby/object:Gem::Version
|
169
|
-
version: 0.2.
|
169
|
+
version: 0.2.3
|
170
170
|
- - "<"
|
171
171
|
- !ruby/object:Gem::Version
|
172
172
|
version: '0.3'
|