change_manager 0.1.5 → 0.2.0
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/app/jobs/change_manager/begin_change.rb +4 -1
- data/app/models/change_manager/change.rb +12 -0
- data/app/services/change_manager/local_manager.rb +5 -0
- data/app/services/change_manager/manager.rb +10 -11
- data/config/change_manager_config.yaml +1 -0
- data/config/change_types.yaml +0 -47
- data/lib/change_manager/version.rb +1 -1
- data/spec/services/change_manager/manager_spec.rb +5 -5
- data/spec/testapp/log/test.log +1247 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eaef00e1eb69b31268ab24e359ea02a343db52c6
|
4
|
+
data.tar.gz: 66624dafb2f25dd2f1000dee0db38302ba065b16
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4c6e6dc30d5565d0a67b89ea76a31746f169700b7e7a1156526eb60c523e7d3e0c2eeced999e19f5a539ab60868bb93a4a141c381fdd342cd5f9d160cfeb67f4
|
7
|
+
data.tar.gz: cc12a9ede04b38dedd74d274d3f83b7baad529e5c03703342496483cf2ec8a426e4603d9c9725c242f1f119a23bea8a852b82b4bf73789961dcf143651d30880
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'yaml'
|
1
2
|
module ChangeManager
|
2
3
|
class BeginChange
|
3
4
|
def self.queue
|
@@ -5,7 +6,9 @@ module ChangeManager
|
|
5
6
|
end
|
6
7
|
|
7
8
|
def self.perform(change_id)
|
8
|
-
|
9
|
+
puts 'job started'
|
10
|
+
config ||= YAML.load_file(File.join(Curate::Engine.root, 'config/change_manager_config.yml'))
|
11
|
+
config['manager_class'].constantize.process_change(change_id)
|
9
12
|
end
|
10
13
|
end
|
11
14
|
end
|
@@ -37,6 +37,18 @@ module ChangeManager
|
|
37
37
|
self.notified
|
38
38
|
end
|
39
39
|
|
40
|
+
def is_group_change?
|
41
|
+
self.change_type == 'added_to_group' || self.change_type == 'removed_from_group'
|
42
|
+
end
|
43
|
+
|
44
|
+
def is_delegate_change?
|
45
|
+
self.change_type == 'added_as_delegate' || self.change_type == 'removed_as_delegate'
|
46
|
+
end
|
47
|
+
|
48
|
+
def is_editor_change?
|
49
|
+
self.change_type == 'added_as_editor' || self.change_type == 'removed_as_editor'
|
50
|
+
end
|
51
|
+
|
40
52
|
def inverse_of?(possible_inverse_change)
|
41
53
|
@change_types ||= YAML.load_file(File.join(ChangeManager::Engine.root, 'config/change_types.yaml'))
|
42
54
|
if self.context == possible_inverse_change.context
|
@@ -1,12 +1,12 @@
|
|
1
1
|
module ChangeManager
|
2
|
-
|
3
|
-
def
|
2
|
+
module Manager
|
3
|
+
def queue_change(owner, change_type, context, target)
|
4
4
|
change_id = Change.new_change(owner, change_type, context, target)
|
5
|
-
|
6
|
-
Resque.enqueue_in(5.minutes, ChangeManager::BeginChange, change_id)
|
5
|
+
Resque.enqueue(ChangeManager::BeginChange, change_id)
|
6
|
+
# Resque.enqueue_in(5.minutes, ChangeManager::BeginChange, change_id)
|
7
7
|
end
|
8
8
|
|
9
|
-
def
|
9
|
+
def process_change(change_id)
|
10
10
|
unless Change.find(change_id).cancelled?
|
11
11
|
change = Change.find change_id
|
12
12
|
verified_changes = process_changes change
|
@@ -14,12 +14,11 @@ module ChangeManager
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
|
18
|
-
def self.process_changes(change)
|
17
|
+
def process_changes(change)
|
19
18
|
cancel_all_changes(group_similar_changes(change.owner, change.target))
|
20
19
|
end
|
21
20
|
|
22
|
-
def
|
21
|
+
def group_similar_changes(owner, target)
|
23
22
|
similar_changes = Change.where(owner: owner, target: target, cancelled: false)
|
24
23
|
if similar_changes.length > 1
|
25
24
|
cancel_inverse_changes(similar_changes)
|
@@ -27,7 +26,7 @@ module ChangeManager
|
|
27
26
|
return similar_changes
|
28
27
|
end
|
29
28
|
|
30
|
-
def
|
29
|
+
def cancel_inverse_changes(similar_changes)
|
31
30
|
similar_changes.each do |change|
|
32
31
|
similar_changes.each do |next_change|
|
33
32
|
if change.inverse_of?(next_change)
|
@@ -41,14 +40,14 @@ module ChangeManager
|
|
41
40
|
return similar_changes
|
42
41
|
end
|
43
42
|
|
44
|
-
def
|
43
|
+
def cancel_all_changes(verified_changes)
|
45
44
|
verified_changes.each do |change|
|
46
45
|
change.cancel
|
47
46
|
end
|
48
47
|
verified_changes
|
49
48
|
end
|
50
49
|
|
51
|
-
def
|
50
|
+
def notify(changes)
|
52
51
|
mailer = ChangeManager::NotificationMailer
|
53
52
|
if mailer.send_email(mailer.construct_email(changes))
|
54
53
|
changes.each do |change|
|
@@ -0,0 +1 @@
|
|
1
|
+
manager_class: LocalManager
|
data/config/change_types.yaml
CHANGED
@@ -22,50 +22,3 @@ removed_from_group:
|
|
22
22
|
print: removed_from_group
|
23
23
|
inverse: added_to_group
|
24
24
|
human_readable: Removed from a group
|
25
|
-
|
26
|
-
# added_as_delegate:
|
27
|
-
# - added_as_delegate
|
28
|
-
# - inverse: removed_as_delegate
|
29
|
-
# - Added as a delegate
|
30
|
-
# removed_as_delegate:
|
31
|
-
# - removed_as_delegate
|
32
|
-
# - inverse: added_as_delegate
|
33
|
-
# - Removed as a delegate
|
34
|
-
# added_as_editor:
|
35
|
-
# - added_as_editor
|
36
|
-
# - inverse: removed_as_editor
|
37
|
-
# - Added as an editor
|
38
|
-
# removed_as_editor:
|
39
|
-
# - removed_as_editor
|
40
|
-
# - inverse: added_as_editor
|
41
|
-
# - Removed as an editor
|
42
|
-
# added_to_group:
|
43
|
-
# - added_to_group
|
44
|
-
# - inverse: removed_from_group
|
45
|
-
# - Added to a group
|
46
|
-
# removed_from_group:
|
47
|
-
# - removed_from_group
|
48
|
-
# - inverse: added_to_group
|
49
|
-
# - Removed from a group
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
# - added_as_delegate
|
55
|
-
# - removed_as_delegate
|
56
|
-
# - added_as_editor
|
57
|
-
# - removed_as_editor
|
58
|
-
# - added_to_group
|
59
|
-
# - removed_from_group
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
# delegates:
|
64
|
-
# - added_as_delegate
|
65
|
-
# - removed_as_delegate
|
66
|
-
# editors:
|
67
|
-
# - added_as_editor
|
68
|
-
# - removed_as_delegate
|
69
|
-
# groups:
|
70
|
-
# - added_to_group
|
71
|
-
# - removed_from_group
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module ChangeManager
|
4
|
-
describe
|
4
|
+
describe LocalManager do
|
5
5
|
describe '#queue_change' do
|
6
|
-
let(:queued_change) {
|
6
|
+
let(:queued_change) { LocalManager.queue_change('test', 'removed_as_delegate', 'work_id1', 'testemail@gmail.com') }
|
7
7
|
it 'should spawn a background worker' do
|
8
8
|
queued_change.should be_true
|
9
9
|
end
|
@@ -12,15 +12,15 @@ module ChangeManager
|
|
12
12
|
let(:cancelled_change) { FactoryGirl.create(:change, cancelled: true)}
|
13
13
|
let(:change) { FactoryGirl.create(:change) }
|
14
14
|
it 'should do nothing if initial change is cancelled' do
|
15
|
-
|
15
|
+
LocalManager.process_change(cancelled_change.id).should be_nil
|
16
16
|
end
|
17
17
|
it 'should execute if initial change isn\'t cancelled' do
|
18
|
-
|
18
|
+
LocalManager.process_change(change.id).should_not be_nil
|
19
19
|
end
|
20
20
|
end
|
21
21
|
describe '#group_similar_changes:' do
|
22
22
|
let!(:initial_change) { Change.find(Change.new_change('owner', 'added_as_editor', 'work_id1', 'target'))}
|
23
|
-
let(:possible_similar_changes) {
|
23
|
+
let(:possible_similar_changes) { LocalManager.group_similar_changes(initial_change.owner, initial_change.target) }
|
24
24
|
# describe the different changes
|
25
25
|
# unrelated changes (owner and target aren't the same as initial - cancelled doesnt matter)
|
26
26
|
context 'unrelated changes' do
|