From 0046e5a01cb08c10118b01c50f3c52d159854ef0 Mon Sep 17 00:00:00 2001 From: Zog Date: Wed, 18 Apr 2018 09:59:15 +0200 Subject: Refs #6572; Use new states --- app/models/referential.rb | 54 ++++++++++++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 19 deletions(-) (limited to 'app/models/referential.rb') 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 -- cgit v1.2.3