projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
14484: Adds file count and size callback to the collection model
[arvados.git]
/
services
/
api
/
app
/
models
/
collection.rb
diff --git
a/services/api/app/models/collection.rb
b/services/api/app/models/collection.rb
index 487043ee3549d8afe915f9abeeaeab2c8f252707..2cebd5438ed1fbfec710de6947cd9516d058a377 100644
(file)
--- a/
services/api/app/models/collection.rb
+++ b/
services/api/app/models/collection.rb
@@
-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
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|
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 :version
t.add :current_version_uuid
t.add :preserve_version
+ t.add :file_count
+ t.add :file_size_total
end
after_initialize do
end
after_initialize do
@@
-195,6
+198,15
@@
class Collection < ArvadosModel
true
end
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
def manifest_files
return '' if !self.manifest_text
@@
-262,6
+274,7
@@
class Collection < ArvadosModel
sync_past_versions if syncable_updates.any?
if snapshot
snapshot.attributes = self.syncable_updates
sync_past_versions if syncable_updates.any?
if snapshot
snapshot.attributes = self.syncable_updates
+ snapshot.manifest_text = snapshot.signed_manifest_text
snapshot.save
end
end
snapshot.save
end
end
@@
-287,7
+300,9
@@
class Collection < ArvadosModel
# Use a different validation context to skip the 'old_versions_cannot_be_updated'
# validator, as on this case it is legal to update some fields.
leave_modified_by_user_alone do
# Use a different validation context to skip the 'old_versions_cannot_be_updated'
# validator, as on this case it is legal to update some fields.
leave_modified_by_user_alone do
- c.save(context: :update_old_versions)
+ leave_modified_at_alone do
+ c.save(context: :update_old_versions)
+ end
end
end
end
end
end
end