diff options
| author | Zog | 2018-04-18 09:59:15 +0200 |
|---|---|---|
| committer | Johan Van Ryseghem | 2018-04-27 11:17:19 +0200 |
| commit | 0046e5a01cb08c10118b01c50f3c52d159854ef0 (patch) | |
| tree | 6e690461a9266716d31f14611235eab9f1f76e33 /app/models/referential.rb | |
| parent | 681f874e3150c35b03e74b25827b74791ae9ae95 (diff) | |
| download | chouette-core-0046e5a01cb08c10118b01c50f3c52d159854ef0.tar.bz2 | |
Refs #6572; Use new states
Diffstat (limited to 'app/models/referential.rb')
| -rw-r--r-- | app/models/referential.rb | 54 |
1 files changed, 35 insertions, 19 deletions
diff --git a/app/models/referential.rb b/app/models/referential.rb index 486c3c495..c7c22604d 100644 --- a/app/models/referential.rb +++ b/app/models/referential.rb @@ -58,7 +58,7 @@ class Referential < ApplicationModel belongs_to :referential_suite - scope :pending, -> { where(ready: false, failed_at: nil, archived_at: nil, failed_at: nil) } + scope :pending, -> { where(ready: false, failed_at: nil, archived_at: nil) } scope :ready, -> { where(ready: true, failed_at: nil, archived_at: nil) } scope :failed, -> { where.not(failed_at: nil) } scope :archived, -> { where.not(archived_at: nil) } @@ -122,24 +122,6 @@ class Referential < ApplicationModel @_models_with_checksum || [] end - def state - return :failed if failed_at.present? - return :archived if archived_at.present? - ready ? :ready : :pending - end - - def failed! - update ready: false, failed_at: Time.now, archived_at: nil - end - - def ready! - update ready: true, failed_at: nil, archived_at: nil - end - - def archived! - update ready: true, failed_at: nil, archived_at: Time.now - end - def lines if metadatas.blank? workbench ? workbench.lines : associated_lines @@ -551,6 +533,40 @@ class Referential < ApplicationModel ready.not_merged.not_in_referential_suite end + ### STATE + + def state + return :failed if failed_at.present? + return :archived if archived_at.present? + ready ? :ready : :pending + end + + def pending! + update ready: false, failed_at: nil, archived_at: nil + end + + def failed! + update ready: false, failed_at: Time.now, archived_at: nil + end + + def ready! + update ready: true, failed_at: nil, archived_at: nil + end + + def archived! + update failed_at: nil, archived_at: Time.now + end + + def pending_while + vals = attributes.slice(*%w(ready archived_at failed_at)) + pending! + begin + yield + ensure + update vals + end + end + private def lock_table |
