aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/referential.rb
diff options
context:
space:
mode:
authorZog2018-04-18 09:59:15 +0200
committerJohan Van Ryseghem2018-04-27 11:17:19 +0200
commit0046e5a01cb08c10118b01c50f3c52d159854ef0 (patch)
tree6e690461a9266716d31f14611235eab9f1f76e33 /app/models/referential.rb
parent681f874e3150c35b03e74b25827b74791ae9ae95 (diff)
downloadchouette-core-0046e5a01cb08c10118b01c50f3c52d159854ef0.tar.bz2
Refs #6572; Use new states
Diffstat (limited to 'app/models/referential.rb')
-rw-r--r--app/models/referential.rb54
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