naranya_ecm-sdk 0.0.23 → 0.0.24

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d79823461b0001b4f7559d10806b5d80c9010fcf
4
- data.tar.gz: b8302cc1f957e309f4d7d45e33c1507c4565204d
3
+ metadata.gz: cf20207d60a657eefbe8a9834786b1e4e6bacaf3
4
+ data.tar.gz: 09882c4e68b668d1e9fb5f39f85a0026d2b37d7d
5
5
  SHA512:
6
- metadata.gz: 52cd6c2eb08f9bf803d6a87473fce85c2efd5e39f95f3592f5c371eb88fc32a6f23bf863d0f587301723f442827c371ae4612a87e5c59a482e4dd89c52a8ab0a
7
- data.tar.gz: 8da103e715e0b4484bfd75b1ecaf954269c0406d2c139692bd4511ab3c2506fd75ad8db620d5281af3f63c06cd23de80c4c909141e3ec143d1e7863bd228ecc1
6
+ metadata.gz: e04be8b969c1e197a1cf4eb4b214fe880cc689a6315cb801c7e15d4babf4d7553be6657aab492a213ab07eb243fe2f71d1251aecbfa69c027d015616d6dfa88b
7
+ data.tar.gz: 41e8ed68137abf1344aac612c3dd4085019beac051aca18fa2aa8ccf8285df6b1d7183607f50c43f84a25e8188da3a30ef4058afb961b0bc2c5e4783ee91ff13
@@ -0,0 +1,134 @@
1
+ module AASM
2
+ module Persistence
3
+ module RestPersistence
4
+ # This method:
5
+ #
6
+ # * extends the model with ClassMethods
7
+ # * includes InstanceMethods
8
+ #
9
+ # Adds
10
+ #
11
+ # before_validation :aasm_ensure_initial_state, :on => :create
12
+ #
13
+ # As a result, it doesn't matter when you define your methods - the following 2 are equivalent
14
+ #
15
+ # class Foo < ActiveRecord::Base
16
+ # def aasm_write_state(state)
17
+ # "bar"
18
+ # end
19
+ # include AASM
20
+ # end
21
+ #
22
+ # class Foo < ActiveRecord::Base
23
+ # include AASM
24
+ # def aasm_write_state(state)
25
+ # "bar"
26
+ # end
27
+ # end
28
+ #
29
+ def self.included(base)
30
+ base.send(:include, AASM::Persistence::Base)
31
+ base.extend AASM::Persistence::RestPersistence::ClassMethods
32
+ base.send(:include, AASM::Persistence::RestPersistence::InstanceMethods)
33
+
34
+ base.before_validation(:aasm_ensure_initial_state, :on => :create)
35
+
36
+ # ensure initial aasm state even when validations are skipped
37
+ base.before_create(:aasm_ensure_initial_state)
38
+
39
+ # ensure state is in the list of states
40
+ # base.validate :aasm_validate_states
41
+ end
42
+
43
+ module ClassMethods
44
+
45
+ # def find_in_state(number, state, *args)
46
+ # with_state_scope state do
47
+ # find(number, *args)
48
+ # end
49
+ # end
50
+
51
+ # def count_in_state(state, *args)
52
+ # with_state_scope state do
53
+ # count(*args)
54
+ # end
55
+ # end
56
+
57
+ # def calculate_in_state(state, *args)
58
+ # with_state_scope state do
59
+ # calculate(*args)
60
+ # end
61
+ # end
62
+
63
+ # protected
64
+ # def with_state_scope(state)
65
+ # with_scope :find => {:conditions => ["#{table_name}.#{aasm_column} = ?", state.to_s]} do
66
+ # yield if block_given?
67
+ # end
68
+ # end
69
+ end
70
+
71
+ module InstanceMethods
72
+
73
+ # # Writes <tt>state</tt> to the state column and persists it to the database
74
+ # #
75
+ # # foo = Foo.find(1)
76
+ # # foo.aasm.current_state # => :opened
77
+ # # foo.close!
78
+ # # foo.aasm.current_state # => :closed
79
+ # # Foo.find(1).aasm.current_state # => :closed
80
+ # #
81
+ # # NOTE: intended to be called from an event
82
+ # def aasm_write_state(state)
83
+ # old_value = self.send self.class.aasm_column.to_sym
84
+ # write_attribute(self.class.aasm_column, state.to_s)
85
+
86
+ # unless self.save(:validate => false)
87
+ # write_attribute(self.class.aasm_column, old_value)
88
+ # return false
89
+ # end
90
+
91
+ # true
92
+ # end
93
+
94
+ # # Writes <tt>state</tt> to the state column, but does not persist it to the database
95
+ # #
96
+ # # foo = Foo.find(1)
97
+ # # foo.aasm.current_state # => :opened
98
+ # # foo.close
99
+ # # foo.aasm.current_state # => :closed
100
+ # # Foo.find(1).aasm.current_state # => :opened
101
+ # # foo.save
102
+ # # foo.aasm.current_state # => :closed
103
+ # # Foo.find(1).aasm.current_state # => :closed
104
+ # #
105
+ # # NOTE: intended to be called from an event
106
+ # def aasm_write_state_without_persistence(state)
107
+ # self.off_band_changes["#{self.class.aasm_column}_event"] = transition.event
108
+ # end
109
+
110
+ private
111
+
112
+ def aasm_ensure_initial_state
113
+ send("#{self.class.aasm_column}=", aasm.enter_initial_state.to_s) if send(self.class.aasm_column).blank?
114
+ end
115
+
116
+ def aasm_fire_event(name, options, *args, &block)
117
+ local_success = super
118
+
119
+ if local_success
120
+ data = { name: name, target_type: self.class.name.demodulize, target_id: self.id }
121
+ response = ::NaranyaEcm::Rest::Client.post "/events.json", body: { state_event: data }
122
+ remote_success = response.success?
123
+ unless remote_success
124
+ end
125
+ end
126
+
127
+ local_success && remote_success
128
+ end
129
+
130
+ end # InstanceMethods
131
+
132
+ end
133
+ end
134
+ end
@@ -1,3 +1,3 @@
1
1
  module NaranyaEcm
2
- VERSION = "0.0.23"
2
+ VERSION = "0.0.24"
3
3
  end
@@ -74,7 +74,53 @@ module NaranyaEcm
74
74
  class_name: :MediaResource,
75
75
  inverse_of: :content
76
76
 
77
- include NaranyaEcm::ContentLifecycle
77
+ ###############################################################
78
+ # StateMachine:
79
+ include AASM
80
+ include AASM::Persistence::RestPersistence
81
+
82
+ aasm column: :lifecycle_state do
83
+
84
+ state :draft, initial: true
85
+ state :awaiting_acceptance
86
+ state :accepted
87
+ state :rejected
88
+ state :published
89
+ state :deactivated
90
+
91
+ #########################################
92
+ # Eventos:
93
+
94
+ event :request_an_acceptance_review do
95
+ # Iniciar la transición de :draft a :awaiting_acceptance,
96
+ transitions from: :draft, to: :awaiting_acceptance, guard: :validatable_lifecycle?
97
+ end
98
+
99
+ event :accept do
100
+ # Iniciar la transición de :awaiting_acceptance a :accepted:
101
+ transitions from: :awaiting_acceptance, to: :accepted
102
+ end
103
+
104
+ event :reject do
105
+ # Iniciar la transición de :awaiting_acceptance a :rejected:
106
+ transitions from: :awaiting_acceptance, to: :rejected
107
+ end
108
+
109
+ event :publish do
110
+ # Iniciar la transición de :draft a :published,
111
+ # si el lifecycle es sencillo:
112
+ transitions from: :draft, to: :published, guard: :simple_lifecycle?
113
+ transitions from: :validated, to: :published, guard: :validatable_lifecycle?
114
+ end
115
+
116
+ event :deactivate do
117
+ # Iniciar la transición de :published a :deactivated:
118
+ transitions from: :published, to: :deactivated
119
+ end
120
+ end
121
+
122
+ def simple_lifecycle?; self.lifecycle_name == 'simple'; end
123
+ def validatable_lifecycle?; self.lifecycle_name == 'validatable'; end
78
124
 
79
125
  private
80
126
 
@@ -1,3 +1,6 @@
1
+ require 'aasm'
2
+ require 'aasm/persistence/base'
3
+ require 'aasm/persistence/rest_persistence'
1
4
 
2
5
  module NaranyaEcm
3
6
  class ContentVersion
@@ -51,7 +54,59 @@ module NaranyaEcm
51
54
  # - Icons, Banners, screenshots, gallery images
52
55
  has_many :media_resources, class_name: :MediaResource, inverse_of: :content_version
53
56
 
54
- include NaranyaEcm::ContentLifecycle
57
+ ###############################################################
58
+ # StateMachine:
59
+ include AASM
60
+ include AASM::Persistence::RestPersistence
61
+
62
+ aasm column: :lifecycle_state do
63
+
64
+ state :draft, initial: true
65
+ state :awaiting_acceptance
66
+ state :accepted
67
+ state :rejected
68
+ state :published
69
+ state :superseded
70
+ state :deactivated
71
+
72
+ #########################################
73
+ # Eventos:
74
+
75
+ event :request_an_acceptance_review do
76
+ # Iniciar la transición de :draft a :awaiting_acceptance,
77
+ transitions from: :draft, to: :awaiting_acceptance, guard: :validatable_lifecycle?
78
+ end
79
+
80
+ event :accept do
81
+ # Iniciar la transición de :awaiting_acceptance a :accepted:
82
+ transitions from: :awaiting_acceptance, to: :accepted
83
+ end
84
+
85
+ event :reject do
86
+ # Iniciar la transición de :awaiting_acceptance a :rejected:
87
+ transitions from: :awaiting_acceptance, to: :rejected
88
+ end
89
+
90
+ event :publish do
91
+ # Iniciar la transición de :draft a :published,
92
+ # si el lifecycle es sencillo:
93
+ transitions from: :draft, to: :published, guard: :simple_lifecycle?
94
+ transitions from: :accepted, to: :published, guard: :validatable_lifecycle?
95
+ end
96
+
97
+ event :supersede do
98
+ # Iniciar la transición de :published a :superseded:
99
+ transitions from: :published, to: :superseded
100
+ end
101
+
102
+ event :deactivate do
103
+ # Iniciar la transición de :published a :deactivated:
104
+ transitions from: :published, to: :deactivated
105
+ end
106
+ end
107
+
108
+ def simple_lifecycle?; self.lifecycle_name == 'simple'; end
109
+ def validatable_lifecycle?; self.lifecycle_name == 'validatable'; end
55
110
 
56
111
  end
57
112
  end
@@ -25,9 +25,7 @@ module NaranyaEcm
25
25
  # The list of compatible device operating systems:
26
26
  field :compatible_device_oses, type: Hash, default: -> { {} }
27
27
 
28
- belongs_to :content
29
- belongs_to :content_version
30
- belongs_to :category
28
+ #belongs_to :parent_document
31
29
 
32
30
  def private?
33
31
  self.access_type == 'private'
@@ -5,7 +5,7 @@ module NaranyaEcm::Rest
5
5
  extend ActiveSupport::Concern
6
6
 
7
7
  included do
8
- define_model_callbacks :create, :update, :save, :destroy
8
+ define_model_callbacks :validation, :create, :update, :save, :destroy
9
9
  end
10
10
 
11
11
  def save
@@ -29,6 +29,7 @@ module NaranyaEcm::Rest
29
29
 
30
30
  def new_resource?; self.id.nil?; end
31
31
  alias_method :new?, :new_resource?
32
+ alias_method :new_record?, :new_resource?
32
33
 
33
34
  def persisted?; !new_resource? || !self.changed?; end
34
35
 
@@ -22,12 +22,12 @@ Gem::Specification.new do |spec|
22
22
  spec.add_dependency 'activesupport', '>= 4.0.4'
23
23
  spec.add_dependency 'activemodel', '>= 4.0.4'
24
24
  spec.add_dependency 'httparty'
25
- spec.add_dependency 'state_machine'
25
+ spec.add_dependency 'aasm'
26
26
  spec.add_dependency 'fog'
27
27
 
28
- spec.add_development_dependency "bundler", "~> 1.5"
28
+ spec.add_development_dependency "bundler"
29
29
  spec.add_development_dependency "rake"
30
30
  spec.add_development_dependency "rspec", "~> 3.0.0.beta2"
31
31
  spec.add_development_dependency "vcr"
32
- spec.add_development_dependency "webmock", "~> 1.16"
32
+ spec.add_development_dependency "webmock"
33
33
  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.23
4
+ version: 0.0.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roberto Quintanilla
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-05 00:00:00.000000000 Z
11
+ date: 2014-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: state_machine
56
+ name: aasm
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -84,16 +84,16 @@ dependencies:
84
84
  name: bundler
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '1.5'
89
+ version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '1.5'
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rake
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -140,16 +140,16 @@ dependencies:
140
140
  name: webmock
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - "~>"
143
+ - - ">="
144
144
  - !ruby/object:Gem::Version
145
- version: '1.16'
145
+ version: '0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - "~>"
150
+ - - ">="
151
151
  - !ruby/object:Gem::Version
152
- version: '1.16'
152
+ version: '0'
153
153
  description: Cliente Ruby de NaranyaEcm
154
154
  email:
155
155
  - roberto.quintanilla@naranya.com
@@ -166,12 +166,12 @@ files:
166
166
  - dev/init.rb
167
167
  - dev/load_cvm.rb
168
168
  - dev/search.rb
169
+ - lib/aasm/persistence/rest_persistence.rb
169
170
  - lib/naranya_ecm-sdk.rb
170
171
  - lib/naranya_ecm-sdk/version.rb
171
172
  - lib/naranya_ecm/behaviors/localizable.rb
172
173
  - lib/naranya_ecm/behaviors/media_methods.rb
173
174
  - lib/naranya_ecm/behaviors/timestampable.rb
174
- - lib/naranya_ecm/lifecycles/content_lifecycle.rb
175
175
  - lib/naranya_ecm/models/category.rb
176
176
  - lib/naranya_ecm/models/content.rb
177
177
  - lib/naranya_ecm/models/content_version.rb
@@ -1,61 +0,0 @@
1
- require 'active_support/concern'
2
- require 'state_machine'
3
-
4
- module NaranyaEcm
5
-
6
- module ContentLifecycle
7
- extend ActiveSupport::Concern
8
-
9
- included do
10
-
11
- state_machine :lifecycle_state, initial: :draft do
12
-
13
- state :draft
14
- state :awaiting_acceptance
15
- state :accepted
16
- state :rejected
17
- state :published
18
- state :superseded
19
- state :deactivated
20
-
21
- event :request_an_acceptance_review do
22
- transition :draft => :awaiting_acceptance
23
- end
24
-
25
- event :accept do
26
- transition :awaiting_acceptance => :accepted
27
- end
28
-
29
- event :reject do
30
- transition [:awaiting_acceptance, :published] => :rejected
31
- end
32
-
33
- event :publish do
34
- transition :draft => :published, if: :simple_lifecycle?
35
- transition :accepted => :published, if: :validatable_lifecycle?
36
- end
37
-
38
- event :deactivate do
39
- transition any => :inactive
40
- end
41
-
42
- ######
43
- after_transition :on => any, do: :commit_lifecycle_state_change!
44
- end
45
-
46
-
47
- end
48
-
49
- def simple_lifecycle?; self.lifecycle_name == 'simple'; end
50
- def validatable_lifecycle?; self.lifecycle_name == 'validatable'; end
51
-
52
- def commit_lifecycle_state_change!(transition)
53
- off_band_changes["#{transition.attribute}_event"] = transition.event
54
- self.send "reset_#{transition.attribute}!".to_sym
55
- self.save
56
- end
57
-
58
-
59
- end
60
-
61
- end