eco-helpers 2.4.2 → 2.4.4
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 +23 -1
- data/lib/eco/api/microcases/take_email_from_account.rb +26 -5
- data/lib/eco/api/organization/tag_tree.rb +28 -3
- data/lib/eco/api/session.rb +1 -1
- data/lib/eco/api/usecases/ooze_samples/register_update_case.rb +2 -2
- data/lib/eco/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c2d5e728987bee135ac2297b0a84858dfb14eab79b3decebc59ced1a74ccc4a
|
4
|
+
data.tar.gz: b906c449d80dbc1440c1b7e7d91565bad53409167cae3c07b0788870f842cf5e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e7a9781490f01e1d9ffafdec19179d492d760c9dca676e2e6f2771b61a8f422d5c9f481bb03c71563c91df97b72f89cee0e8aa664be42dcf1dd5d99576177add
|
7
|
+
data.tar.gz: 44eed6e779b8ffdfdc1bea5913090713cc15dba649b7c2eddc9f333a8be67f92afa1ec6e1d06b0c31bcf2b29d062b92cac26c7c53b07404e50d089ae56698202
|
data/CHANGELOG.md
CHANGED
@@ -1,12 +1,34 @@
|
|
1
1
|
# Change Log
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
|
4
|
-
## [2.4.
|
4
|
+
## [2.4.5] - 2023-03-xx
|
5
5
|
|
6
6
|
### Added
|
7
7
|
### Changed
|
8
8
|
### Fixed
|
9
9
|
|
10
|
+
## [2.4.4] - 2023-03-29
|
11
|
+
|
12
|
+
### Added
|
13
|
+
- `Eco::API:Organization::TagTree`
|
14
|
+
- Added **methods** `#each` and `#all_nodes` allow to loop through all nodes
|
15
|
+
- Added `parent` to refer to the parent node.
|
16
|
+
|
17
|
+
### Changed
|
18
|
+
- `Eco::API:Organization::TagTree` made **Enumerable**
|
19
|
+
|
20
|
+
### Fixed
|
21
|
+
- `Eco:API::Session#live_tree` pass `enviro`
|
22
|
+
- `Eco::API::UseCases::OozeSamples::RegisterUpdateCase`
|
23
|
+
- Fix typo on error message.
|
24
|
+
|
25
|
+
## [2.4.3] - 2023-03-23
|
26
|
+
|
27
|
+
### Fixed
|
28
|
+
- `Eco::API::MicroCases#take_email_from_account` it was failing at the very (when restoring the original account)
|
29
|
+
- Comes from back-end issue. Adding account with preferences.kiosk_enabled would return:
|
30
|
+
- `{"errors"=>["account > preferences > kiosk_enabled is an unknown field"]}`
|
31
|
+
|
10
32
|
## [2.4.2] - 2023-03-17
|
11
33
|
|
12
34
|
### Fixed
|
@@ -36,27 +36,33 @@ module Eco
|
|
36
36
|
return false if dest_email.to_s.strip.empty?
|
37
37
|
end
|
38
38
|
|
39
|
-
account_json =
|
39
|
+
account_json = _take_email_account_json(account)
|
40
40
|
person.email = account_email
|
41
41
|
|
42
42
|
if success = _take_email_remove_account!(person, context: context)
|
43
43
|
if success = _take_email_acquire_account!(person, target_email, account: {}, context: context)
|
44
44
|
if success = _take_email_email_free_up!(person, dest_email: dest_email, context: context)
|
45
45
|
if success = _take_email_remove_account!(person, context: context)
|
46
|
+
# Bring back the original account
|
46
47
|
if success = _take_email_acquire_account!(person, account_email, account: account_json, context: context)
|
48
|
+
success = true
|
47
49
|
person.email = target_email
|
48
50
|
end
|
49
51
|
end
|
50
52
|
else # free up target email
|
51
53
|
# restore
|
52
|
-
|
53
|
-
|
54
|
+
reverted = false
|
55
|
+
if reverted ||= _take_email_remove_account!(person, context: context)
|
56
|
+
reverted ||= _take_email_acquire_account!(person, account_email, account: account_json, context: context)
|
54
57
|
end
|
58
|
+
puts "Could not revert back to the original account #{person.identify}" unless reverted
|
55
59
|
success = false
|
56
60
|
end
|
57
61
|
else # aquire other account
|
58
62
|
# restore
|
59
|
-
_take_email_acquire_account!(person, account_email, account: account_json, context: context)
|
63
|
+
unless _take_email_acquire_account!(person, account_email, account: account_json, context: context)
|
64
|
+
puts "Could not bring back the original account we want to update the email to '#{target_email}' #{person.identify}"
|
65
|
+
end
|
60
66
|
success = false
|
61
67
|
end
|
62
68
|
end
|
@@ -65,6 +71,21 @@ module Eco
|
|
65
71
|
|
66
72
|
private
|
67
73
|
|
74
|
+
def _take_email_account_json(account)
|
75
|
+
JSON.parse(account.to_json).tap do |hash|
|
76
|
+
hash.delete("user_id")
|
77
|
+
hash.delete("permissions_merged")
|
78
|
+
hash.delete("permissions_preset")
|
79
|
+
hash.delete("prefilter")
|
80
|
+
if pref = hash["preferences"]
|
81
|
+
hash["preferences"] = pref.reject do |attr, value|
|
82
|
+
attr.start_with?("kiosk")
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
# Bring the account of the `target_email` taken, so we can change the email of this account
|
68
89
|
def _take_email_acquire_account!(person, target_email, account: {}, context: "Session")
|
69
90
|
person.account = account
|
70
91
|
person.account.send_invites = false
|
@@ -72,6 +93,7 @@ module Eco
|
|
72
93
|
micro.person_update!(person, reason: "bring account with email '#{target_email}'", context: context)
|
73
94
|
end
|
74
95
|
|
96
|
+
# Free up the email (`target_email`) of the account that has it taken to `dest_email`
|
75
97
|
def _take_email_email_free_up!(person, dest_email:, target_email: nil, context: "Session")
|
76
98
|
target_email ||= person.email
|
77
99
|
person.email = dest_email.is_a?(Proc)? dest_email.call(target_email) : dest_email
|
@@ -83,7 +105,6 @@ module Eco
|
|
83
105
|
person.account = nil
|
84
106
|
micro.person_update!(person, reason: "remove account", context: context)
|
85
107
|
end
|
86
|
-
|
87
108
|
end
|
88
109
|
end
|
89
110
|
end
|
@@ -7,10 +7,13 @@ module Eco
|
|
7
7
|
alias_method :tag, :id
|
8
8
|
attr_accessor :name
|
9
9
|
|
10
|
+
attr_reader :parent
|
10
11
|
attr_reader :nodes, :children_count
|
11
12
|
attr_reader :depth, :path
|
12
13
|
attr_reader :enviro
|
13
14
|
|
15
|
+
include Enumerable
|
16
|
+
|
14
17
|
# @example Node format:
|
15
18
|
# {"tag": "NODE NAME", "nodes": subtree}
|
16
19
|
# @example Tree/subtree format:
|
@@ -21,8 +24,9 @@ module Eco
|
|
21
24
|
# ]}]
|
22
25
|
# tree = TagTree.new(tree.to_json)
|
23
26
|
# @param tagtree [String] representation of the tagtree in json.
|
24
|
-
def initialize(tagtree = [], name: nil, id: nil, depth: -1, path: [], enviro: nil)
|
25
|
-
@depth
|
27
|
+
def initialize(tagtree = [], name: nil, id: nil, depth: -1, path: [], parent: nil, enviro: nil)
|
28
|
+
@depth = depth
|
29
|
+
@parent = parent
|
26
30
|
|
27
31
|
case tagtree
|
28
32
|
when String
|
@@ -48,7 +52,7 @@ module Eco
|
|
48
52
|
@path.push(@id) unless top?
|
49
53
|
|
50
54
|
@nodes = @row_nodes.map do |cnode|
|
51
|
-
TagTree.new(cnode, depth: depth + 1, path: @path.dup, enviro: @enviro)
|
55
|
+
TagTree.new(cnode, depth: depth + 1, path: @path.dup, parent: self, enviro: @enviro)
|
52
56
|
end
|
53
57
|
|
54
58
|
init_hashes
|
@@ -59,6 +63,27 @@ module Eco
|
|
59
63
|
self.class.new(as_json)
|
60
64
|
end
|
61
65
|
|
66
|
+
# Iterate through all the nodes of this tree
|
67
|
+
# @yield [node] do some stuff with one of the nodes of the tree
|
68
|
+
# @yieldparam node [Eco::API::Organization::TagTree] a node of the tree
|
69
|
+
# @return [Enumerable<Eco::API::Organization::TagTree>]
|
70
|
+
def each(&block)
|
71
|
+
return to_enum(:each) unless block
|
72
|
+
all_nodes.each(&block)
|
73
|
+
end
|
74
|
+
|
75
|
+
# All actual nodes of this tree
|
76
|
+
# @note order is that of the parent to child relationships
|
77
|
+
# @return [Array[]]
|
78
|
+
def all_nodes(&block)
|
79
|
+
[].tap do |all_nodes|
|
80
|
+
all_nodes.push(self) unless top?
|
81
|
+
nodes.each do |node|
|
82
|
+
all_nodes.concat(node.all_nodes)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
62
87
|
# @return [Array] with the differences
|
63
88
|
def diff(tagtree, differences: {}, level: 0, **options)
|
64
89
|
require 'hashdiff'
|
data/lib/eco/api/session.rb
CHANGED
@@ -109,7 +109,7 @@ class Eco::API::UseCases::OozeSamples::RegisterUpdateCase < Eco::API::UseCases::
|
|
109
109
|
if dirty?(pending)
|
110
110
|
msg = "Inconsistent search results. "
|
111
111
|
msg << "Launching update on '#{object_reference(pending)}' to be able to queue it back"
|
112
|
-
|
112
|
+
logger.warn msg
|
113
113
|
update_ooze(pending)
|
114
114
|
end
|
115
115
|
end
|
@@ -118,7 +118,7 @@ class Eco::API::UseCases::OozeSamples::RegisterUpdateCase < Eco::API::UseCases::
|
|
118
118
|
yield(ooz)
|
119
119
|
else
|
120
120
|
@non_retrieved_oozes += 1
|
121
|
-
|
121
|
+
logger.warn "Could not get page #{page_result.id}"
|
122
122
|
end
|
123
123
|
end
|
124
124
|
update_oozes
|
data/lib/eco/version.rb
CHANGED