infopark_reactor 1.8.1 → 1.8.2
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.
- data/README.md +9 -0
- data/lib/reactor/permission.rb +4 -4
- data/lib/reactor/persistence.rb +24 -16
- data/lib/reactor/validations.rb +1 -1
- data/lib/reactor/version.rb +1 -1
- data/lib/reactor/workflow.rb +28 -0
- data/lib/reactor/workflow/standard.rb +2 -2
- metadata +4 -4
data/README.md
CHANGED
|
@@ -70,6 +70,15 @@ much more efficient than the traditional method.
|
|
|
70
70
|
|
|
71
71
|
Permissions are checked also! And your user is automatically set according to `JSESSIONID` cookie.
|
|
72
72
|
|
|
73
|
+
Workflow support is provided together with comments (just pass your comment as string to the relevant method):
|
|
74
|
+
|
|
75
|
+
obj.edit!('draft version created')
|
|
76
|
+
obj.forward!('please add your text')
|
|
77
|
+
# as other user
|
|
78
|
+
obj.take!
|
|
79
|
+
obj.release!('text added and released')
|
|
80
|
+
|
|
81
|
+
|
|
73
82
|
KNOWN BUGS/ISSUES
|
|
74
83
|
=================
|
|
75
84
|
|
data/lib/reactor/permission.rb
CHANGED
|
@@ -27,7 +27,7 @@ module Reactor
|
|
|
27
27
|
# Wraps around Reactor::Persistence::Base#release! and ensures
|
|
28
28
|
# that current user has required permissions to release the object
|
|
29
29
|
# @raise [Reactor::NotPermitted] user lacks neccessary permission
|
|
30
|
-
def release!
|
|
30
|
+
def release!(*args)
|
|
31
31
|
ensure_permission_granted(:release)
|
|
32
32
|
return super
|
|
33
33
|
end
|
|
@@ -35,7 +35,7 @@ module Reactor
|
|
|
35
35
|
# Wraps around Reactor::Persistence::Base#take! and ensures
|
|
36
36
|
# that current user has required permissions to take the object
|
|
37
37
|
# @raise [Reactor::NotPermitted] user lacks neccessary permission
|
|
38
|
-
def take!
|
|
38
|
+
def take!(*args)
|
|
39
39
|
ensure_permission_granted(:take)
|
|
40
40
|
return super
|
|
41
41
|
end
|
|
@@ -43,7 +43,7 @@ module Reactor
|
|
|
43
43
|
# Wraps around Reactor::Persistence::Base#revert! and ensures
|
|
44
44
|
# that current user has required permissions to revert the object
|
|
45
45
|
# @raise [Reactor::NotPermitted] user lacks neccessary permission
|
|
46
|
-
def revert!
|
|
46
|
+
def revert!(*args)
|
|
47
47
|
ensure_permission_granted(:revert)
|
|
48
48
|
return super
|
|
49
49
|
end
|
|
@@ -51,7 +51,7 @@ module Reactor
|
|
|
51
51
|
# Wraps around Reactor::Persistence::Base#edit! and ensures
|
|
52
52
|
# that current user has required permissions to edit the object
|
|
53
53
|
# @raise [Reactor::NotPermitted] user lacks neccessary permission
|
|
54
|
-
def edit!
|
|
54
|
+
def edit!(*args)
|
|
55
55
|
ensure_permission_granted(:edit)
|
|
56
56
|
return super
|
|
57
57
|
end
|
data/lib/reactor/persistence.rb
CHANGED
|
@@ -28,37 +28,41 @@ module Reactor
|
|
|
28
28
|
# 2. the object has already been released
|
|
29
29
|
# 3. object is invalid
|
|
30
30
|
# 4. other error occoured
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
# @param comment [String] comment to leave for the next user
|
|
32
|
+
def release(comment=nil)
|
|
33
|
+
return release!(comment)
|
|
33
34
|
rescue Reactor::Cm::XmlRequestError, ActiveRecord::RecordInvalid, Reactor::NotPermitted, Reactor::AlreadyReleased
|
|
34
35
|
return false
|
|
35
36
|
end
|
|
36
37
|
|
|
37
38
|
# Removes the working version of the object,
|
|
38
39
|
# if it exists
|
|
40
|
+
# @param comment [String] comment to leave for the next user
|
|
39
41
|
# @return [true]
|
|
40
|
-
def revert
|
|
41
|
-
return revert!
|
|
42
|
+
def revert(comment=nil)
|
|
43
|
+
return revert!(comment)
|
|
42
44
|
end
|
|
43
45
|
|
|
44
46
|
# Removes the working version of the object,
|
|
45
47
|
# if it exists
|
|
48
|
+
# @param comment [String] comment to leave for the next user
|
|
46
49
|
# @return [true]
|
|
47
50
|
# @note There is no difference between #revert and #revert!
|
|
48
|
-
def revert!
|
|
49
|
-
crul_obj.revert!
|
|
51
|
+
def revert!(comment=nil)
|
|
52
|
+
crul_obj.revert!(comment)
|
|
50
53
|
reload
|
|
51
54
|
return true
|
|
52
55
|
end
|
|
53
56
|
|
|
54
57
|
# Releases the object. Returns true on succes, can raise exceptions
|
|
58
|
+
# @param comment [String] comment to leave for the next user
|
|
55
59
|
# @raise [Reactor::AlreadyReleased]
|
|
56
60
|
# @raise [ActiveRecord::RecordInvalid] validations failed
|
|
57
61
|
# @raise [Reactor::NotPermitted] current user lacks required permissions
|
|
58
|
-
def release!
|
|
62
|
+
def release!(comment=nil)
|
|
59
63
|
run_callbacks(:release) do
|
|
60
64
|
raise(Reactor::AlreadyReleased) unless self.really_edited?
|
|
61
|
-
crul_obj.release!
|
|
65
|
+
crul_obj.release!(comment)
|
|
62
66
|
reload
|
|
63
67
|
end
|
|
64
68
|
return true
|
|
@@ -70,8 +74,9 @@ module Reactor
|
|
|
70
74
|
# 1. user lacks the permissions
|
|
71
75
|
# 2. the object has not beed edited
|
|
72
76
|
# 3. other error occured
|
|
73
|
-
|
|
74
|
-
|
|
77
|
+
# @param comment [String] comment to leave for the next user
|
|
78
|
+
def take(comment=nil)
|
|
79
|
+
take!(comment)
|
|
75
80
|
return true
|
|
76
81
|
rescue Reactor::Cm::XmlRequestError, Reactor::NotPermitted, Reactor::NoWorkingVersion
|
|
77
82
|
return false
|
|
@@ -79,12 +84,13 @@ module Reactor
|
|
|
79
84
|
|
|
80
85
|
# Makes the current user the editor of the object. Returns true when
|
|
81
86
|
# user is already the editor or take succeded. Raises exceptions
|
|
87
|
+
# @param comment [String] comment to leave for the next user
|
|
82
88
|
# @raise [Reactor::NoWorkingVersion] there is no working version of the object
|
|
83
89
|
# @raise [Reactor::NotPermitted] current user lacks required permissions
|
|
84
|
-
def take!
|
|
90
|
+
def take!(comment=nil)
|
|
85
91
|
raise(Reactor::NoWorkingVersion) unless self.really_edited?
|
|
86
92
|
# TODO: refactor the if condition
|
|
87
|
-
crul_obj.take! if (crul_obj.editor != Reactor::Configuration::xml_access[:username])
|
|
93
|
+
crul_obj.take!(comment) if (crul_obj.editor != Reactor::Configuration::xml_access[:username])
|
|
88
94
|
# neccessary to recalculate #editor
|
|
89
95
|
reload
|
|
90
96
|
return true
|
|
@@ -92,10 +98,11 @@ module Reactor
|
|
|
92
98
|
|
|
93
99
|
# Creates a working version of the object. Returns true on success or when
|
|
94
100
|
# the object already has a working version. Returns false when:
|
|
101
|
+
# @param comment [String] comment to leave for the next user
|
|
95
102
|
# 1. user lacks the permissions
|
|
96
103
|
# 2. other error occured
|
|
97
|
-
def edit
|
|
98
|
-
edit!
|
|
104
|
+
def edit(comment=nil)
|
|
105
|
+
edit!(comment)
|
|
99
106
|
return true
|
|
100
107
|
rescue Reactor::Cm::XmlRequestError, Reactor::NotPermitted
|
|
101
108
|
return false
|
|
@@ -103,9 +110,10 @@ module Reactor
|
|
|
103
110
|
|
|
104
111
|
# Creates a working version of the object. Returns true on success or when
|
|
105
112
|
# the object already has a working version. Raises exceptions
|
|
113
|
+
# @param comment [String] comment to leave for the next user
|
|
106
114
|
# @raise [Reactor::NotPermitted] current user lacks required permissions
|
|
107
|
-
def edit!
|
|
108
|
-
crul_obj.edit! unless self.really_edited?
|
|
115
|
+
def edit!(comment=nil)
|
|
116
|
+
crul_obj.edit!(comment) unless self.really_edited?
|
|
109
117
|
reload
|
|
110
118
|
return true
|
|
111
119
|
end
|
data/lib/reactor/validations.rb
CHANGED
|
@@ -22,7 +22,7 @@ module Reactor
|
|
|
22
22
|
# Wraps around Reactor::Persistence::Base#release! and validates object
|
|
23
23
|
# in :release context before release. Raises exception when invalid.
|
|
24
24
|
# @raise [ActiveRecord::RecordInvalid] validations registered for :release failed
|
|
25
|
-
def release!
|
|
25
|
+
def release!(*args)
|
|
26
26
|
raise(ActiveRecord::RecordInvalid.new(self)) unless valid?(:release)
|
|
27
27
|
return super
|
|
28
28
|
end
|
data/lib/reactor/version.rb
CHANGED
data/lib/reactor/workflow.rb
CHANGED
|
@@ -15,6 +15,34 @@ module Reactor
|
|
|
15
15
|
Empty.new(self)
|
|
16
16
|
end
|
|
17
17
|
end
|
|
18
|
+
|
|
19
|
+
def workflow_comments
|
|
20
|
+
Reactor::Cm::LogEntry.where(:objectId => self.id).map {|entry| Comment.new(entry) }
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
class Comment < Struct.new(:time, :text, :type, :object_id, :receiver, :user)
|
|
25
|
+
def initialize(log_entry)
|
|
26
|
+
super(
|
|
27
|
+
parse_time(log_entry['logTime']),
|
|
28
|
+
log_entry['logText'],
|
|
29
|
+
log_entry['logType'],
|
|
30
|
+
log_entry['objectId'],
|
|
31
|
+
log_entry['receiver'],
|
|
32
|
+
log_entry['userLogin']
|
|
33
|
+
)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def object
|
|
37
|
+
::AbstractObj.find(self.object_id)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
alias obj object
|
|
41
|
+
|
|
42
|
+
protected
|
|
43
|
+
def parse_time(time)
|
|
44
|
+
Time.from_iso(time)
|
|
45
|
+
end
|
|
18
46
|
end
|
|
19
47
|
end
|
|
20
48
|
end
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: infopark_reactor
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 51
|
|
5
5
|
prerelease:
|
|
6
6
|
segments:
|
|
7
7
|
- 1
|
|
8
8
|
- 8
|
|
9
|
-
-
|
|
10
|
-
version: 1.8.
|
|
9
|
+
- 2
|
|
10
|
+
version: 1.8.2
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Tomasz Przedmojski
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date: 2013-
|
|
18
|
+
date: 2013-07-10 00:00:00 +02:00
|
|
19
19
|
default_executable:
|
|
20
20
|
dependencies:
|
|
21
21
|
- !ruby/object:Gem::Dependency
|