X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/34081b99f265f9baaabcd791f7c520c3f5b37f19..93e0931ea059355ffc26add1303a52f13d2964c9:/apps/workbench/app/models/collection.rb diff --git a/apps/workbench/app/models/collection.rb b/apps/workbench/app/models/collection.rb index 24e6da59ba..13f5357faa 100644 --- a/apps/workbench/app/models/collection.rb +++ b/apps/workbench/app/models/collection.rb @@ -21,29 +21,33 @@ class Collection < ArvadosBase end def manifest - Keep::Manifest.new(manifest_text || "") + if @manifest.nil? or manifest_text_changed? + @manifest = Keep::Manifest.new(manifest_text || "") + end + @manifest end def files # This method provides backwards compatibility for code that relied on # the old files field in API results. New code should use manifest # methods directly. - if @files.nil? or manifest_text_changed? - @files = manifest.each_file.to_a - end - @files + manifest.files end def content_summary - ApplicationController.helpers.human_readable_bytes_html(total_bytes) + " " + super + if total_bytes > 0 + ApplicationController.helpers.human_readable_bytes_html(total_bytes) + " " + super + else + super + " modified at " + modified_at.to_s + end end def total_bytes - manifest.each_file.inject(0) { |sum, filespec| sum + filespec.last } + manifest.files.inject(0) { |sum, filespec| sum + filespec.last } end def files_tree - tree = manifest.each_file.group_by do |file_spec| + tree = manifest.files.group_by do |file_spec| File.split(file_spec.first) end return [] if tree.empty? @@ -66,16 +70,8 @@ class Collection < ArvadosBase dir_to_tree.call('.') end - def attribute_editable? attr, *args - if %w(name description manifest_text).include? attr.to_s - true - else - super - end - end - - def self.creatable? - false + def editable_attributes + %w(name description manifest_text) end def provenance @@ -94,20 +90,12 @@ class Collection < ArvadosBase end end - def portable_data_hash - if self[:portable_data_hash].nil? - return self[:uuid] - else - super - end + def friendly_link_name lookup=nil + name || portable_data_hash end - def friendly_link_name - if self.respond_to? :name - self.name - else - self.portable_data_hash - end + def textile_attributes + [ 'description' ] end end