14484: Adds file count and size callback to the collection model
authorEric Biagiotti <ebiagiotti@veritasgenetics.com>
Tue, 26 Mar 2019 21:02:56 +0000 (17:02 -0400)
committerEric Biagiotti <ebiagiotti@veritasgenetics.com>
Tue, 26 Mar 2019 21:02:56 +0000 (17:02 -0400)
Arvados-DCO-1.1-Signed-off-by: Eric Biagiotti <ebiagiotti@veritasgenetics.com>

services/api/app/models/collection.rb

index 6147b79f9f5aa16c6b9e24ef5164bab43139373a..2cebd5438ed1fbfec710de6947cd9516d058a377 100644 (file)
@@ -30,6 +30,7 @@ class Collection < ArvadosModel
   validate :versioning_metadata_updates, on: :update
   validate :past_versions_cannot_be_updated, on: :update
   before_save :set_file_names
+  before_save :set_file_count_and_total_size
   around_update :manage_versioning
 
   api_accessible :user, extend: :common do |t|
@@ -51,6 +52,8 @@ class Collection < ArvadosModel
     t.add :version
     t.add :current_version_uuid
     t.add :preserve_version
+    t.add :file_count
+    t.add :file_size_total
   end
 
   after_initialize do
@@ -195,6 +198,15 @@ class Collection < ArvadosModel
     true
   end
 
+  def set_file_count_and_total_size
+    if self.manifest_text_changed?
+      m = Keep::Manifest.new(self.manifest_text)
+      self.file_size_total = m.files_size
+      self.file_count = m.files_count
+    end
+    true
+  end
+
   def manifest_files
     return '' if !self.manifest_text