naranya_ecm-sdk 0.0.52 → 0.0.53
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/naranya_ecm-sdk/version.rb +1 -1
- data/lib/naranya_ecm/models/content.rb +13 -11
- data/lib/naranya_ecm/rest/associations.rb +6 -6
- data/lib/naranya_ecm/rest/finder_methods.rb +1 -1
- data/lib/naranya_ecm/rest/model.rb +44 -13
- data/lib/naranya_ecm/rest/persistence.rb +2 -5
- data/lib/naranya_ecm/rest/relation.rb +2 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ca18ddb2dee136305ec964bd7a4e21e85aca031
|
4
|
+
data.tar.gz: cae662085784a09b9c704738d75440c7a70ab164
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46ac57df6f1d22a4fa44f925235422aa2b4cd3c45522f395e4fb8618fee235df56846ec57323b32b6e85ff8fc75821fb36f363fd1f452073142fcdeab93642a1
|
7
|
+
data.tar.gz: 52458768d9951bad05c4d1aebf5ddeed03a1ec847c4521bc7f34f3a93381a4ff3d6079bd5e2da7bf3338afa449b98325c8f86de7f4b94dbe0af86fe8fd46c0b7
|
@@ -12,7 +12,7 @@ module NaranyaEcm
|
|
12
12
|
#
|
13
13
|
# In order to create a Content Unit, the Content Object should contain at least the following attributes:
|
14
14
|
# * <tt>lifecycle_name:</tt> Indicates whether the Content object follows a <tt>simple</tt> lifecycle, a <tt>validatable</tt> lifecycle (can't publish without some sort of editorial validation first), or any other significant lifecycle.
|
15
|
-
# * <tt>title_translations:</tt> At least one localized title is required. This attribute is a Hash-like object, requiring the locale name as a key, and the localized string as value.
|
15
|
+
# * <tt>title_translations:</tt> At least one localized title is required. This attribute is a Hash-like object, requiring the locale name as a key, and the localized string as value.
|
16
16
|
# * <tt>author:</tt> This string represents the name of the author of the content.
|
17
17
|
#
|
18
18
|
# === Other significant attributes
|
@@ -97,7 +97,7 @@ module NaranyaEcm
|
|
97
97
|
# :attr: description_translations
|
98
98
|
#
|
99
99
|
# Hash-like containing all the description translations.
|
100
|
-
|
100
|
+
|
101
101
|
##
|
102
102
|
# :attr: content_rating
|
103
103
|
#
|
@@ -139,7 +139,7 @@ module NaranyaEcm
|
|
139
139
|
#
|
140
140
|
# A list of ContentVersion objects corresponding to changes in a versionable content.
|
141
141
|
has_many :versions, class_name: :ContentVersion
|
142
|
-
|
142
|
+
|
143
143
|
##
|
144
144
|
# :attr: current_version
|
145
145
|
# :category: Associations
|
@@ -160,7 +160,7 @@ module NaranyaEcm
|
|
160
160
|
#
|
161
161
|
# A list of MediaResource objects associated directly to the Content.
|
162
162
|
has_many :media_resources, class_name: :MediaResource, inverse_of: :content
|
163
|
-
|
163
|
+
|
164
164
|
###############################################################
|
165
165
|
# StateMachine:
|
166
166
|
include AASM
|
@@ -186,7 +186,7 @@ module NaranyaEcm
|
|
186
186
|
# accept => true or false
|
187
187
|
#
|
188
188
|
# Triggers the <tt>accept</tt> event.
|
189
|
-
|
189
|
+
|
190
190
|
##
|
191
191
|
# :method: accept!
|
192
192
|
# :call-seq:
|
@@ -200,7 +200,7 @@ module NaranyaEcm
|
|
200
200
|
# reject => true or false
|
201
201
|
#
|
202
202
|
# Triggers the <tt>reject</tt> event, which starts the Content transition to an <tt>:rejected</tt> state.
|
203
|
-
|
203
|
+
|
204
204
|
##
|
205
205
|
# :method: reject!
|
206
206
|
# :call-seq:
|
@@ -214,7 +214,7 @@ module NaranyaEcm
|
|
214
214
|
# publish => true or false
|
215
215
|
#
|
216
216
|
# Triggers the <tt>publish</tt> event, which starts the Content transition to a <tt>:published</tt> state.
|
217
|
-
|
217
|
+
|
218
218
|
##
|
219
219
|
# :method: publish!
|
220
220
|
# :call-seq:
|
@@ -228,7 +228,7 @@ module NaranyaEcm
|
|
228
228
|
# deactivate => true or false
|
229
229
|
#
|
230
230
|
# Triggers the <tt>deactivate</tt> event, which starts the Content transition to a <tt>:deactivated</tt> state.
|
231
|
-
|
231
|
+
|
232
232
|
##
|
233
233
|
# :method: deactivate!
|
234
234
|
# :call-seq:
|
@@ -285,7 +285,7 @@ module NaranyaEcm
|
|
285
285
|
def simple_lifecycle?
|
286
286
|
self.lifecycle_name == 'simple'
|
287
287
|
end
|
288
|
-
|
288
|
+
|
289
289
|
##
|
290
290
|
# :method: validatable_lifecycle?
|
291
291
|
# :call-seq:
|
@@ -300,8 +300,10 @@ module NaranyaEcm
|
|
300
300
|
|
301
301
|
# Validates that at least one title translation exists.
|
302
302
|
def at_least_one_title_translation_must_exist
|
303
|
-
|
303
|
+
unless title_translations.present? && title_translations.keys.any?
|
304
|
+
errors.add :title_translations, "must have at least one translation"
|
305
|
+
end
|
304
306
|
end
|
305
|
-
|
307
|
+
|
306
308
|
end
|
307
309
|
end
|
@@ -10,7 +10,7 @@ module NaranyaEcm::Rest
|
|
10
10
|
given_class_name = "#{@klass.name.deconstantize}::#{given_class_name}" if given_class_name.is_a?(Symbol)
|
11
11
|
given_class_name.constantize
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
def initialize(klass, name, options = {})
|
15
15
|
@klass, @name = klass, name
|
16
16
|
|
@@ -23,7 +23,7 @@ module NaranyaEcm::Rest
|
|
23
23
|
@options = options.with_indifferent_access
|
24
24
|
|
25
25
|
klass.send :attr_accessor, name
|
26
|
-
|
26
|
+
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
@@ -60,7 +60,7 @@ module NaranyaEcm::Rest
|
|
60
60
|
relation = AssociationRelation.new(reflection.associated_class, reflection.foreign_key, self.id)
|
61
61
|
|
62
62
|
relation.load new_value unless new_value.nil?
|
63
|
-
|
63
|
+
|
64
64
|
instance_variable_set "@#{name}".to_sym, relation
|
65
65
|
end
|
66
66
|
end
|
@@ -98,8 +98,8 @@ module NaranyaEcm::Rest
|
|
98
98
|
klass.send :define_method, "#{name}=".to_sym do |new_value|
|
99
99
|
reflection = self.class.reflect_on_association(name)
|
100
100
|
foreign_key_name = reflection.foreign_key
|
101
|
-
|
102
|
-
new_value = reflection.associated_class.
|
101
|
+
|
102
|
+
new_value = reflection.associated_class.new new_value if new_value.is_a? Hash
|
103
103
|
raise "Type Mismatch on #{self.class.name} ##{name}= #{new_value.inspect}" unless new_value.nil? || new_value.class == reflection.associated_class
|
104
104
|
|
105
105
|
self.send "#{foreign_key_name}=".to_sym, new_value.nil? ? nil : new_value.id
|
@@ -152,4 +152,4 @@ module NaranyaEcm::Rest
|
|
152
152
|
end
|
153
153
|
end
|
154
154
|
|
155
|
-
end
|
155
|
+
end
|
@@ -18,7 +18,7 @@ module NaranyaEcm::Rest
|
|
18
18
|
protected
|
19
19
|
|
20
20
|
def find_one(id)
|
21
|
-
found_resource = self.
|
21
|
+
found_resource = self._load_from_fetched_attributes fetch_one(id)
|
22
22
|
found_resource.instance_variable_set("@new_resource", false)
|
23
23
|
found_resource
|
24
24
|
end
|
@@ -157,12 +157,6 @@ module NaranyaEcm::Rest
|
|
157
157
|
.inject({}.with_indifferent_access) { |hash, accessor_name| hash[accessor_name] = self.send accessor_name; hash }
|
158
158
|
end
|
159
159
|
|
160
|
-
def load(params={})
|
161
|
-
params.each do |attr, value|
|
162
|
-
self.public_send("#{attr}=", value)
|
163
|
-
end if params
|
164
|
-
end
|
165
|
-
|
166
160
|
def path
|
167
161
|
"#{self.class.path}/#{self.id}"
|
168
162
|
end
|
@@ -187,13 +181,6 @@ module NaranyaEcm::Rest
|
|
187
181
|
@_fields ||= {}.with_indifferent_access
|
188
182
|
end
|
189
183
|
|
190
|
-
def load(*args)
|
191
|
-
loaded = self.new
|
192
|
-
loaded.load(*args)
|
193
|
-
loaded.changed_attributes.clear
|
194
|
-
loaded
|
195
|
-
end
|
196
|
-
|
197
184
|
def primary_key(name, options = {})
|
198
185
|
attr_accessor name
|
199
186
|
define_attribute_method name
|
@@ -253,6 +240,14 @@ module NaranyaEcm::Rest
|
|
253
240
|
where()
|
254
241
|
end
|
255
242
|
|
243
|
+
protected
|
244
|
+
|
245
|
+
def _load_from_fetched_attributes(*args)
|
246
|
+
loaded = self.new
|
247
|
+
loaded.send :_load_from_fetched_attributes!, *args
|
248
|
+
loaded
|
249
|
+
end
|
250
|
+
|
256
251
|
end
|
257
252
|
|
258
253
|
# Returns +true+ if the resource is read only.
|
@@ -273,6 +268,42 @@ module NaranyaEcm::Rest
|
|
273
268
|
|
274
269
|
private
|
275
270
|
|
271
|
+
def _load_from_fetched_attributes!(params={})
|
272
|
+
if params
|
273
|
+
|
274
|
+
association_dictionary = self.class.send(:associations).inject({}) do |hash, keyval|
|
275
|
+
key, val = keyval
|
276
|
+
hash[key] = val.associated_class
|
277
|
+
hash
|
278
|
+
end
|
279
|
+
|
280
|
+
nested_attributes = params.slice *association_dictionary.keys
|
281
|
+
self_attributes = params.reject { |k,v| nested_attributes.keys.include? k }
|
282
|
+
|
283
|
+
loaded_associations = nested_attributes.inject({}) do |hash, keyval|
|
284
|
+
association_name, association_attributes = keyval
|
285
|
+
association_class = association_dictionary[association_name]
|
286
|
+
|
287
|
+
hash[association_name] = if association_attributes.is_a?(Array)
|
288
|
+
association_attributes.map do |x|
|
289
|
+
association_class.send :_load_from_fetched_attributes, x
|
290
|
+
end
|
291
|
+
else
|
292
|
+
association_class.send :_load_from_fetched_attributes, association_attributes
|
293
|
+
end
|
294
|
+
hash
|
295
|
+
end
|
296
|
+
|
297
|
+
# Set the given params and the inflated association params:
|
298
|
+
self_attributes.merge(loaded_associations).each do |attr, value|
|
299
|
+
self.public_send("#{attr}=", value)
|
300
|
+
end
|
301
|
+
|
302
|
+
changed_attributes.clear
|
303
|
+
end
|
304
|
+
@new_resource = false
|
305
|
+
end
|
306
|
+
|
276
307
|
def init_internals
|
277
308
|
@readonly = false
|
278
309
|
@destroyed = false
|
@@ -253,9 +253,7 @@ module NaranyaEcm::Rest
|
|
253
253
|
|
254
254
|
def reload
|
255
255
|
response = NContent::SDK::RESTClient.get "#{path}.json"
|
256
|
-
|
257
|
-
load(response.body)
|
258
|
-
@new_resource = false
|
256
|
+
send :_load_from_fetched_attributes!, response.body
|
259
257
|
true
|
260
258
|
end
|
261
259
|
|
@@ -292,8 +290,7 @@ module NaranyaEcm::Rest
|
|
292
290
|
)
|
293
291
|
end
|
294
292
|
|
295
|
-
|
296
|
-
@new_resource = false
|
293
|
+
send :_load_from_fetched_attributes!, response.body
|
297
294
|
true
|
298
295
|
rescue UnprocessableEntity => e
|
299
296
|
self.load_server_errors(e.response.body)
|
@@ -42,8 +42,7 @@ module NaranyaEcm::Rest
|
|
42
42
|
|
43
43
|
@elements = given_list.map do |element|
|
44
44
|
if element.is_a?(Hash)
|
45
|
-
loaded_element = @klass.
|
46
|
-
loaded_element.instance_variable_set("@new_resource", false)
|
45
|
+
loaded_element = @klass.send :_load_from_fetched_attributes, element
|
47
46
|
loaded_element
|
48
47
|
else
|
49
48
|
element
|
@@ -58,7 +57,7 @@ module NaranyaEcm::Rest
|
|
58
57
|
|
59
58
|
def materialize!
|
60
59
|
@elements = fetch_from_server.map do |s|
|
61
|
-
resource = klass.
|
60
|
+
resource = klass.send :_load_from_fetched_attributes, s
|
62
61
|
resource.instance_variable_set("@new_resource", false)
|
63
62
|
resource
|
64
63
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: naranya_ecm-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.53
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roberto Quintanilla
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|