diff options
| author | Xinhui | 2016-10-25 14:25:10 +0200 | 
|---|---|---|
| committer | Xinhui | 2016-10-25 14:30:14 +0200 | 
| commit | 6acac72115b2e575fb1698d74958356fe4d542f8 (patch) | |
| tree | 4a6a4718c0af1b25b2b3ff08eba1f1715c64e059 /app/models | |
| parent | 7fb087a735028cf783072886c968e4149dee7e7d (diff) | |
| download | chouette-core-6acac72115b2e575fb1698d74958356fe4d542f8.tar.bz2 | |
Worker referential_cloning
Refs #1863
Diffstat (limited to 'app/models')
| -rw-r--r-- | app/models/referential.rb | 12 | ||||
| -rw-r--r-- | app/models/referential_cloning.rb | 20 | 
2 files changed, 27 insertions, 5 deletions
| diff --git a/app/models/referential.rb b/app/models/referential.rb index da5791914..5a2e1d15d 100644 --- a/app/models/referential.rb +++ b/app/models/referential.rb @@ -171,14 +171,22 @@ class Referential < ActiveRecord::Base      projection_type || ""    end -  after_create :autocreate_referential_metadata +  after_create :autocreate_referential_metadata, :clone_schema    def autocreate_referential_metadata      self.create_referential_metadata if workbench    end +  def clone_schema +    if self.created_from +      ReferentialCloning.create(source_referential: self.created_from, target_referential: self) +    end +  end +    before_create :create_schema    def create_schema -    Apartment::Tenant.create slug +    if self.created_from.nil? +      Apartment::Tenant.create slug +    end    end    before_validation :assign_line_and_stop_area_referential, :on => :create diff --git a/app/models/referential_cloning.rb b/app/models/referential_cloning.rb index 8d765f985..9bf824ac5 100644 --- a/app/models/referential_cloning.rb +++ b/app/models/referential_cloning.rb @@ -2,6 +2,12 @@ class ReferentialCloning < ActiveRecord::Base    include AASM    belongs_to :source_referential, class_name: 'Referential'    belongs_to :target_referential, class_name: 'Referential' +  after_commit :perform_clone, :on => :create + +  private +  def perform_clone +    ReferentialCloningWorker.perform_async(self.id) +  end    aasm column: :status do      state :new, :initial => true @@ -9,16 +15,24 @@ class ReferentialCloning < ActiveRecord::Base      state :successful      state :failed -    event :run do +    event :run, after: :update_started_at do        transitions :from => [:new, :failed], :to => :pending      end -    event :successful do +    event :successful, after: :update_ended_at do        transitions :from => [:pending, :failed], :to => :successful      end -    event :failed do +    event :failed, after: :update_ended_at do        transitions :from => :pending, :to => :failed      end    end + +  def update_started_at +    update_attribute(:started_at, Time.now) +  end + +  def update_ended_at +    update_attribute(:ended_at, Time.now) +  end  end | 
