infopark_reactor 1.25.2 → 1.27.0.rc8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +25 -0
- data/.rubocop_todo.yml +363 -0
- data/Rakefile +10 -13
- data/app/models/rails_connector/abstract_obj.rb +2 -1
- data/config/routes.rb +0 -1
- data/infopark_reactor.gemspec +16 -15
- data/lib/generators/cm/migration/migration_generator.rb +4 -8
- data/lib/infopark_reactor.rb +43 -69
- data/lib/reactor/already_released.rb +1 -2
- data/lib/reactor/attributes.rb +94 -270
- data/lib/reactor/attributes/date_serializer.rb +23 -16
- data/lib/reactor/attributes/html_serializer.rb +6 -5
- data/lib/reactor/attributes/link_list_extender.rb +10 -8
- data/lib/reactor/attributes/link_list_from_accessor.rb +2 -1
- data/lib/reactor/attributes/link_list_from_attr_values.rb +2 -1
- data/lib/reactor/attributes/link_list_serializer.rb +8 -7
- data/lib/reactor/attributes_handlers.rb +164 -0
- data/lib/reactor/cache/permission.rb +6 -9
- data/lib/reactor/cache/user.rb +3 -6
- data/lib/reactor/cm/attribute.rb +16 -16
- data/lib/reactor/cm/attribute_group.rb +18 -21
- data/lib/reactor/cm/blob_too_small_error.rb +2 -2
- data/lib/reactor/cm/bridge.rb +6 -9
- data/lib/reactor/cm/channel.rb +3 -4
- data/lib/reactor/cm/editorial_group.rb +2 -9
- data/lib/reactor/cm/group.rb +30 -43
- data/lib/reactor/cm/job.rb +77 -0
- data/lib/reactor/cm/language.rb +21 -22
- data/lib/reactor/cm/link.rb +38 -40
- data/lib/reactor/cm/live_group.rb +2 -9
- data/lib/reactor/cm/log_entry.rb +22 -21
- data/lib/reactor/cm/missing_credentials.rb +3 -2
- data/lib/reactor/cm/multi_xml_request.rb +22 -25
- data/lib/reactor/cm/obj.rb +161 -152
- data/lib/reactor/cm/obj_class.rb +52 -51
- data/lib/reactor/cm/object_base.rb +26 -21
- data/lib/reactor/cm/permissions.rb +7 -7
- data/lib/reactor/cm/user.rb +43 -51
- data/lib/reactor/cm/workflow.rb +11 -12
- data/lib/reactor/cm/xml_attribute.rb +10 -19
- data/lib/reactor/cm/xml_markup.rb +7 -10
- data/lib/reactor/cm/xml_multi_request_error.rb +1 -3
- data/lib/reactor/cm/xml_request.rb +21 -29
- data/lib/reactor/cm/xml_request_error.rb +1 -3
- data/lib/reactor/cm/xml_response.rb +8 -16
- data/lib/reactor/cm/xml_single_request_error.rb +3 -5
- data/lib/reactor/configuration.rb +1 -3
- data/lib/reactor/engine.rb +5 -10
- data/lib/reactor/legacy.rb +8 -9
- data/lib/reactor/link/external.rb +8 -5
- data/lib/reactor/link/internal.rb +8 -5
- data/lib/reactor/link/temporary_link.rb +18 -19
- data/lib/reactor/main.rb +11 -15
- data/lib/reactor/migration.rb +52 -47
- data/lib/reactor/no_working_version.rb +1 -2
- data/lib/reactor/not_permitted.rb +1 -2
- data/lib/reactor/permission.rb +36 -38
- data/lib/reactor/persistence.rb +105 -159
- data/lib/reactor/plans/common_attribute.rb +7 -7
- data/lib/reactor/plans/common_attribute_group.rb +6 -6
- data/lib/reactor/plans/common_channel.rb +6 -6
- data/lib/reactor/plans/common_group.rb +7 -14
- data/lib/reactor/plans/common_job.rb +32 -0
- data/lib/reactor/plans/common_obj_class.rb +11 -11
- data/lib/reactor/plans/create_attribute.rb +1 -3
- data/lib/reactor/plans/create_attribute_group.rb +1 -3
- data/lib/reactor/plans/create_channel.rb +2 -3
- data/lib/reactor/plans/create_group.rb +3 -10
- data/lib/reactor/plans/create_job.rb +22 -0
- data/lib/reactor/plans/create_obj.rb +12 -14
- data/lib/reactor/plans/create_obj_class.rb +1 -2
- data/lib/reactor/plans/delete_attribute.rb +1 -3
- data/lib/reactor/plans/delete_attribute_group.rb +2 -4
- data/lib/reactor/plans/delete_channel.rb +4 -4
- data/lib/reactor/plans/delete_group.rb +2 -9
- data/lib/reactor/plans/delete_job.rb +23 -0
- data/lib/reactor/plans/delete_obj.rb +3 -4
- data/lib/reactor/plans/delete_obj_class.rb +1 -2
- data/lib/reactor/plans/prepared.rb +3 -4
- data/lib/reactor/plans/rename_group.rb +4 -11
- data/lib/reactor/plans/rename_obj_class.rb +1 -2
- data/lib/reactor/plans/update_attribute.rb +1 -3
- data/lib/reactor/plans/update_attribute_group.rb +2 -4
- data/lib/reactor/plans/update_group.rb +2 -9
- data/lib/reactor/plans/update_job.rb +27 -0
- data/lib/reactor/plans/update_obj.rb +6 -7
- data/lib/reactor/plans/update_obj_class.rb +0 -2
- data/lib/reactor/rc_independent.rb +0 -1
- data/lib/reactor/session.rb +27 -31
- data/lib/reactor/session/observers.rb +3 -5
- data/lib/reactor/session/user.rb +6 -7
- data/lib/reactor/session_helper/auth_filter.rb +9 -0
- data/lib/reactor/session_helper/auth_helper.rb +24 -0
- data/lib/reactor/session_helper/rsession_helper.rb +16 -0
- data/lib/reactor/session_helper/session_state.rb +31 -0
- data/lib/reactor/streaming_upload.rb +0 -1
- data/lib/reactor/sudo.rb +2 -3
- data/lib/reactor/support/link_matcher.rb +8 -7
- data/lib/reactor/tools/migrator.rb +30 -35
- data/lib/reactor/tools/response_handler/xml_attribute.rb +37 -27
- data/lib/reactor/tools/smart_xml_logger.rb +20 -22
- data/lib/reactor/tools/sower.rb +22 -23
- data/lib/reactor/tools/uploader.rb +12 -17
- data/lib/reactor/tools/versioner.rb +29 -30
- data/lib/reactor/tools/where_query.rb +11 -14
- data/lib/reactor/tools/workflow_generator.rb +26 -28
- data/lib/reactor/tools/xml_attributes.rb +7 -14
- data/lib/reactor/tools/xpath_extractor.rb +2 -1
- data/lib/reactor/validations.rb +20 -16
- data/lib/reactor/version.rb +1 -2
- data/lib/reactor/workflow.rb +10 -33
- data/lib/reactor/workflow/comment.rb +28 -0
- data/lib/reactor/workflow/empty.rb +0 -1
- data/lib/reactor/workflow/standard.rb +4 -3
- data/lib/tasks/cm_migrate.rake +3 -3
- data/lib/tasks/cm_seeds.rake +9 -16
- metadata +81 -39
- data/app/models/rails_connector/abstract_model.rb +0 -7
- data/app/models/rails_connector/attribute.rb +0 -94
- data/app/models/rails_connector/blob_mapping.rb +0 -16
- data/app/models/rails_connector/channel.rb +0 -41
- data/app/models/rails_connector/content.rb +0 -12
- data/app/models/rails_connector/obj_class.rb +0 -158
- data/app/models/rails_connector/obj_class_attr.rb +0 -5
- data/app/models/rails_connector/object_with_meta_data.rb +0 -18
- data/lib/rails_connector/meta/eager_loader.rb +0 -91
- data/lib/reactor/rails_connector_meta.rb +0 -149
- data/lib/reactor/session_helper.rb +0 -72
@@ -1,15 +1,15 @@
|
|
1
|
-
require
|
1
|
+
require "reactor/cm/object_base"
|
2
2
|
|
3
3
|
module Reactor
|
4
4
|
module Cm
|
5
|
-
class AttributeGroup < ObjectBase
|
6
|
-
set_base_name
|
5
|
+
class AttributeGroup < ObjectBase
|
6
|
+
set_base_name "attributeGroup"
|
7
7
|
|
8
8
|
attribute :obj_class, name: :objClass
|
9
9
|
attribute :name
|
10
10
|
attribute :title
|
11
11
|
|
12
|
-
attribute :attributes, :
|
12
|
+
attribute :attributes, except: [:set], type: :list
|
13
13
|
attribute :index
|
14
14
|
|
15
15
|
# virtual attribute!
|
@@ -31,15 +31,13 @@ module Reactor
|
|
31
31
|
|
32
32
|
response = request.execute!
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
return false
|
34
|
+
response.ok?
|
35
|
+
rescue XmlRequestError
|
36
|
+
false
|
38
37
|
end
|
39
38
|
|
40
|
-
|
41
|
-
|
42
|
-
pk = [obj_class, name].join('.')
|
39
|
+
def self.create(obj_class, name, index = nil)
|
40
|
+
pk = [obj_class, name].join(".")
|
43
41
|
attributes = {
|
44
42
|
objClass: obj_class,
|
45
43
|
name: name
|
@@ -50,25 +48,24 @@ module Reactor
|
|
50
48
|
end
|
51
49
|
|
52
50
|
def add_attributes(attributes)
|
53
|
-
add_or_remove_attributes(attributes,
|
51
|
+
add_or_remove_attributes(attributes, "add")
|
54
52
|
end
|
55
53
|
|
56
54
|
def remove_attributes(attributes)
|
57
|
-
add_or_remove_attributes(attributes,
|
55
|
+
add_or_remove_attributes(attributes, "remove")
|
58
56
|
end
|
59
57
|
|
60
58
|
def move_attribute(attribute, index)
|
61
59
|
request = XmlRequest.prepare do |xml|
|
62
60
|
xml.where_key_tag!(base_name, primary_key, primary_key_value)
|
63
61
|
xml.tag!("#{base_name}-moveAttribute") do
|
64
|
-
xml.tag!(
|
62
|
+
xml.tag!("attribute") do
|
65
63
|
xml.text!(attribute.to_s)
|
66
64
|
end
|
67
|
-
xml.tag!(
|
65
|
+
xml.tag!("index") do
|
68
66
|
xml.text!(index.to_s)
|
69
67
|
end
|
70
68
|
end
|
71
|
-
|
72
69
|
end
|
73
70
|
|
74
71
|
response = request.execute!
|
@@ -77,16 +74,17 @@ module Reactor
|
|
77
74
|
end
|
78
75
|
|
79
76
|
def set(attr, value)
|
80
|
-
|
77
|
+
send(:"#{attr}=", value)
|
81
78
|
end
|
82
79
|
|
83
80
|
protected
|
81
|
+
|
84
82
|
def primary_key_value
|
85
|
-
"#{
|
83
|
+
"#{obj_class}.#{name}"
|
86
84
|
end
|
87
85
|
|
88
86
|
def primary_key_value_set(value)
|
89
|
-
a = value.split(
|
87
|
+
a = value.split(".")
|
90
88
|
self.obj_class = a.first
|
91
89
|
self.name = a.last
|
92
90
|
end
|
@@ -96,12 +94,11 @@ module Reactor
|
|
96
94
|
xml.where_key_tag!(base_name, primary_key, primary_key_value)
|
97
95
|
xml.tag!("#{base_name}-#{add_or_remove}Attributes") do
|
98
96
|
attributes.each do |attribute|
|
99
|
-
xml.tag!(
|
97
|
+
xml.tag!("listitem") do
|
100
98
|
xml.text!(attribute)
|
101
99
|
end
|
102
100
|
end
|
103
101
|
end
|
104
|
-
|
105
102
|
end
|
106
103
|
|
107
104
|
response = request.execute!
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module Reactor
|
2
2
|
module Cm
|
3
3
|
class BlobTooSmallError < XmlRequestError
|
4
|
-
def initialize(msg=nil)
|
4
|
+
def initialize(msg = nil)
|
5
5
|
super(msg ||
|
6
|
-
|
6
|
+
"The blob is too small (smaller than tuning.minStreamingDataLength) to get streaming ticket id")
|
7
7
|
end
|
8
8
|
end
|
9
9
|
end
|
data/lib/reactor/cm/bridge.rb
CHANGED
@@ -1,18 +1,17 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
1
|
module Reactor
|
3
2
|
module Cm
|
4
3
|
class Bridge
|
5
4
|
# credit goes to Anton
|
6
5
|
def self.login_for(sessionId)
|
7
6
|
old_username = Reactor::Configuration.xml_access[:username]
|
8
|
-
Reactor::Configuration.xml_access[:username] =
|
7
|
+
Reactor::Configuration.xml_access[:username] = "root"
|
9
8
|
begin
|
10
9
|
response = Reactor::Cm::XmlRequest.prepare do |xml|
|
11
|
-
xml.tag!(
|
10
|
+
xml.tag!("licenseManager-logins")
|
12
11
|
end.execute!
|
13
12
|
login = nil
|
14
|
-
result = response.xpath(
|
15
|
-
result = [result] unless result.
|
13
|
+
result = response.xpath("//licenseManager-logins/listitem")
|
14
|
+
result = [result] unless result.is_a?(Array)
|
16
15
|
result.each do |login_data_element|
|
17
16
|
properties = deserialize_login_data(login_data_element.text)
|
18
17
|
if properties[:sessionId] == sessionId && properties[:interface] == "X"
|
@@ -21,7 +20,7 @@ module Reactor
|
|
21
20
|
end
|
22
21
|
end
|
23
22
|
login
|
24
|
-
rescue => e
|
23
|
+
rescue StandardError => e
|
25
24
|
Rails.logger.error "Login to CM failed! #{e.class}: #{e.message}"
|
26
25
|
nil
|
27
26
|
ensure
|
@@ -29,19 +28,17 @@ module Reactor
|
|
29
28
|
end
|
30
29
|
end
|
31
30
|
|
32
|
-
private
|
33
31
|
def self.deserialize_login_data(serialized_property_list)
|
34
32
|
entry_delimiter = /;\r?\n/
|
35
33
|
no_braces = serialized_property_list[1..(serialized_property_list.rindex(entry_delimiter) - 1)]
|
36
34
|
property_list_lines = no_braces.split(entry_delimiter)
|
37
|
-
property_list_lines.
|
35
|
+
property_list_lines.each_with_object(properties = {}) do |line, map|
|
38
36
|
key, value = line.strip.scan(/^([^=]*) = (.*)$/).first
|
39
37
|
if value[0..0] == '"'
|
40
38
|
value = value[1..(value.length - 2)]
|
41
39
|
value.gsub!(/\\(.)/, '\1')
|
42
40
|
end
|
43
41
|
map[key.to_sym] = value
|
44
|
-
map
|
45
42
|
end
|
46
43
|
properties
|
47
44
|
end
|
data/lib/reactor/cm/channel.rb
CHANGED
@@ -1,17 +1,16 @@
|
|
1
|
-
|
2
|
-
require 'reactor/cm/object_base'
|
1
|
+
require "reactor/cm/object_base"
|
3
2
|
|
4
3
|
module Reactor
|
5
4
|
module Cm
|
6
5
|
class Channel < ObjectBase
|
7
6
|
# Attribute definitions
|
8
|
-
attribute :name, :
|
7
|
+
attribute :name, except: [:set]
|
9
8
|
attribute :title
|
10
9
|
|
11
10
|
primary_key :name
|
12
11
|
|
13
12
|
def self.create(name)
|
14
|
-
super(name, {:name
|
13
|
+
super(name, { name: name })
|
15
14
|
end
|
16
15
|
end
|
17
16
|
end
|
@@ -1,14 +1,10 @@
|
|
1
|
-
|
2
|
-
require 'reactor/cm/group'
|
1
|
+
require "reactor/cm/group"
|
3
2
|
|
4
3
|
module Reactor
|
5
|
-
|
6
4
|
module Cm
|
7
|
-
|
8
5
|
# The EditorialGroup class respects the user management configured in the content manager and
|
9
6
|
# handles all editorial groups. See @Group for further details.
|
10
7
|
class EditorialGroup < Group
|
11
|
-
|
12
8
|
primary_key :name
|
13
9
|
|
14
10
|
protected
|
@@ -19,11 +15,8 @@ module Reactor
|
|
19
15
|
end
|
20
16
|
|
21
17
|
def self.base_name
|
22
|
-
|
18
|
+
"groupProxy"
|
23
19
|
end
|
24
|
-
|
25
20
|
end
|
26
|
-
|
27
21
|
end
|
28
|
-
|
29
22
|
end
|
data/lib/reactor/cm/group.rb
CHANGED
@@ -1,32 +1,27 @@
|
|
1
|
-
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require 'reactor/tools/where_query'
|
1
|
+
require "reactor/cm/xml_request"
|
2
|
+
require "reactor/cm/xml_response"
|
3
|
+
require "reactor/cm/xml_request_error"
|
4
|
+
require "reactor/tools/xml_attributes"
|
5
|
+
require "reactor/tools/response_handler/xml_attribute"
|
6
|
+
require "reactor/tools/where_query"
|
8
7
|
|
9
|
-
require
|
8
|
+
require "reactor/cm/permissions"
|
10
9
|
|
11
10
|
module Reactor
|
12
|
-
|
13
11
|
module Cm
|
14
|
-
|
15
12
|
# The Group class can be used to work with user groups defined or known to the content manager.
|
16
13
|
# It allows you to create, edit and delete groups, handle users and permissions and get the
|
17
14
|
# group meta data. The Group class does not respect the user management defined under
|
18
15
|
# "config/userManagement.xml", but is the basis for class like @EditorialGroup or @LiveGroup
|
19
16
|
# that respect the user management.
|
20
17
|
class Group
|
21
|
-
|
22
18
|
include XmlAttributes
|
23
19
|
extend WhereQuery
|
24
20
|
|
25
21
|
class << self
|
26
|
-
|
27
22
|
# Method returns true if a group with the given +name+ exists, false otherwise.
|
28
23
|
def exists?(name)
|
29
|
-
object = new(:
|
24
|
+
object = new(name: name)
|
30
25
|
|
31
26
|
begin
|
32
27
|
object.send(:get).present?
|
@@ -37,12 +32,12 @@ module Reactor
|
|
37
32
|
|
38
33
|
# Returns all known group names as an array of strings.
|
39
34
|
def all(match = nil)
|
40
|
-
|
35
|
+
where("groupText", match)
|
41
36
|
end
|
42
37
|
|
43
38
|
# See @get.
|
44
39
|
def get(name)
|
45
|
-
object = new(:
|
40
|
+
object = new(name: name)
|
46
41
|
object.send(:get)
|
47
42
|
object
|
48
43
|
end
|
@@ -53,16 +48,15 @@ module Reactor
|
|
53
48
|
object.send(:create)
|
54
49
|
object
|
55
50
|
end
|
56
|
-
|
57
51
|
end
|
58
52
|
|
59
53
|
include Permissions
|
60
54
|
|
61
|
-
attribute :name, :
|
62
|
-
attribute :display_title, :
|
63
|
-
attribute :real_name, :
|
55
|
+
attribute :name, except: [:set]
|
56
|
+
attribute :display_title, name: :displayTitle, only: [:get]
|
57
|
+
attribute :real_name, name: :realName
|
64
58
|
attribute :owner
|
65
|
-
attribute :users, :
|
59
|
+
attribute :users, type: :list
|
66
60
|
|
67
61
|
primary_key :name
|
68
62
|
|
@@ -73,7 +67,7 @@ module Reactor
|
|
73
67
|
|
74
68
|
# Add the given +users+ to the current set of group users.
|
75
69
|
def add_users!(users)
|
76
|
-
users = users.
|
70
|
+
users = users.is_a?(Array) ? users : [users]
|
77
71
|
users = self.users | users
|
78
72
|
|
79
73
|
set_users(users)
|
@@ -81,7 +75,7 @@ module Reactor
|
|
81
75
|
|
82
76
|
# Remove the given +users+ from the current set of group users.
|
83
77
|
def remove_users!(users)
|
84
|
-
users = users.
|
78
|
+
users = users.is_a?(Array) ? users : [users]
|
85
79
|
users = self.users - users
|
86
80
|
|
87
81
|
set_users(users)
|
@@ -90,7 +84,7 @@ module Reactor
|
|
90
84
|
# Set the group users to the given +users+.
|
91
85
|
def set_users!(users)
|
92
86
|
request = XmlRequest.prepare do |xml|
|
93
|
-
xml.where_key_tag!(base_name, self.class.primary_key,
|
87
|
+
xml.where_key_tag!(base_name, self.class.primary_key, name)
|
94
88
|
xml.set_key_tag!(base_name, self.class.xml_attribute(:users).name, users)
|
95
89
|
end
|
96
90
|
|
@@ -102,10 +96,10 @@ module Reactor
|
|
102
96
|
# Saves all settable instance attributes to the Content Manager.
|
103
97
|
def save!
|
104
98
|
request = XmlRequest.prepare do |xml|
|
105
|
-
xml.where_key_tag!(base_name, self.class.primary_key,
|
99
|
+
xml.where_key_tag!(base_name, self.class.primary_key, name)
|
106
100
|
xml.set_tag!(base_name) do
|
107
101
|
self.class.attributes(:set).each do |name, xml_attribute|
|
108
|
-
value =
|
102
|
+
value = send(name)
|
109
103
|
|
110
104
|
xml.value_tag!(xml_attribute.name, value)
|
111
105
|
end
|
@@ -120,7 +114,7 @@ module Reactor
|
|
120
114
|
# Deletes the current group instance.
|
121
115
|
def delete!
|
122
116
|
request = XmlRequest.prepare do |xml|
|
123
|
-
xml.where_key_tag!(base_name, self.class.primary_key,
|
117
|
+
xml.where_key_tag!(base_name, self.class.primary_key, name)
|
124
118
|
xml.delete_tag!(base_name)
|
125
119
|
end
|
126
120
|
|
@@ -134,15 +128,13 @@ module Reactor
|
|
134
128
|
# group. The method returns the new group object.
|
135
129
|
def rename!(name)
|
136
130
|
new_attributes =
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
hash[key] = self.send(key)
|
131
|
+
self.class.attributes.each_with_object({}) do |mapping, hash|
|
132
|
+
key, = mapping
|
141
133
|
|
142
|
-
|
143
|
-
|
134
|
+
hash[key] = send(key)
|
135
|
+
end
|
144
136
|
|
145
|
-
if
|
137
|
+
if delete!
|
146
138
|
new_attributes[:name] = name
|
147
139
|
|
148
140
|
self.class.create(new_attributes)
|
@@ -162,7 +154,7 @@ module Reactor
|
|
162
154
|
end
|
163
155
|
|
164
156
|
def self.base_name
|
165
|
-
|
157
|
+
"group"
|
166
158
|
end
|
167
159
|
|
168
160
|
def initialize(attributes = {})
|
@@ -172,7 +164,7 @@ module Reactor
|
|
172
164
|
# Retrieves a single group matching the name set in the current instance.
|
173
165
|
def get
|
174
166
|
request = XmlRequest.prepare do |xml|
|
175
|
-
xml.where_key_tag!(base_name, self.class.primary_key,
|
167
|
+
xml.where_key_tag!(base_name, self.class.primary_key, name)
|
176
168
|
xml.get_key_tag!(base_name, self.class.xml_attribute_names)
|
177
169
|
end
|
178
170
|
|
@@ -193,7 +185,7 @@ module Reactor
|
|
193
185
|
request = XmlRequest.prepare do |xml|
|
194
186
|
xml.create_tag!(base_name) do |xml|
|
195
187
|
self.class.attributes(:create).each do |name, xml_attribute|
|
196
|
-
value =
|
188
|
+
value = send(name)
|
197
189
|
|
198
190
|
xml.value_tag!(xml_attribute.name, value) if value.present?
|
199
191
|
end
|
@@ -213,18 +205,13 @@ module Reactor
|
|
213
205
|
self.class.attribute_names.each do |name|
|
214
206
|
value = attributes[name]
|
215
207
|
|
216
|
-
if value.present?
|
217
|
-
set_attribute(name, value)
|
218
|
-
end
|
208
|
+
set_attribute(name, value) if value.present?
|
219
209
|
end
|
220
210
|
end
|
221
211
|
|
222
212
|
def set_attribute(name, value) # :nodoc:
|
223
|
-
|
213
|
+
send("#{name}=", value)
|
224
214
|
end
|
225
|
-
|
226
215
|
end
|
227
|
-
|
228
216
|
end
|
229
|
-
|
230
217
|
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require "reactor/cm/object_base"
|
2
|
+
|
3
|
+
module Reactor
|
4
|
+
module Cm
|
5
|
+
class Job < ObjectBase
|
6
|
+
attribute :name, except: [:set]
|
7
|
+
attribute :title
|
8
|
+
attribute :is_active, name: :isActive
|
9
|
+
attribute :comment
|
10
|
+
attribute :exec_login, name: :execLogin
|
11
|
+
attribute :exec_perm, name: :execPerm
|
12
|
+
# This attribute has the following format:
|
13
|
+
# [{:years => ['2001', '2002']}, {:years => ['2002', '2003'], :minutes => ['11', '12']}]
|
14
|
+
attribute :schedule, type: :schedule
|
15
|
+
attribute :script
|
16
|
+
|
17
|
+
primary_key :name
|
18
|
+
|
19
|
+
def self.serialize_attribute_to_xml(xml, xml_attribute, value)
|
20
|
+
if xml_attribute.type.to_sym == :schedule
|
21
|
+
xml.tag!("schedule") do
|
22
|
+
(value || []).each do |schedule_entry|
|
23
|
+
xml.tag!("listitem") do
|
24
|
+
schedule_entry.each do |dim, values|
|
25
|
+
xml.tag!("dictitem") do
|
26
|
+
xml.tag!("key") do
|
27
|
+
xml.text!(dim.to_s)
|
28
|
+
end
|
29
|
+
xml.tag!("value") do
|
30
|
+
values.each do |val|
|
31
|
+
xml.tag!("listitem", val)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
else
|
40
|
+
super(xml, xml_attribute, value)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.create(pk_value, attributes = {})
|
45
|
+
request = XmlRequest.prepare do |xml|
|
46
|
+
xml.create_tag!(base_name) do
|
47
|
+
attributes.merge(name: pk_value).each do |attr_name, attr_value|
|
48
|
+
serialize_attribute_to_xml(xml, xml_attribute(attr_name), attr_value)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
request.execute!
|
54
|
+
|
55
|
+
get(pk_value)
|
56
|
+
end
|
57
|
+
|
58
|
+
def exec
|
59
|
+
simple_commnad("exec")
|
60
|
+
end
|
61
|
+
|
62
|
+
def cancel
|
63
|
+
simple_command("cancel")
|
64
|
+
end
|
65
|
+
|
66
|
+
protected
|
67
|
+
|
68
|
+
def simple_command(cmd_name)
|
69
|
+
request = XmlRequest.prepare do |xml|
|
70
|
+
xml.where_key_tag!(base_name, "name", name)
|
71
|
+
xml.tag!("#{base_name}-#{cmd_name}")
|
72
|
+
end
|
73
|
+
request.execute!
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|