diff --git a/app/models/mediaflux/asset_metadata_request.rb b/app/models/mediaflux/asset_metadata_request.rb index 23de3b14c..051c70798 100644 --- a/app/models/mediaflux/asset_metadata_request.rb +++ b/app/models/mediaflux/asset_metadata_request.rb @@ -30,17 +30,15 @@ def metadata if metadata[:collection] metadata[:total_file_count] = asset.xpath("./collection/accumulator/value/non-collections").text metadata[:size] = asset.xpath("./collection/accumulator/value/total/@h").text - metadata[:quota_allocation] = asset.xpath("./collection/quota/allocation/@h").text metadata[:accum_names] = asset.xpath("./collection/accumulator/@name") - metadata[:quota_used] = asset.xpath("./collection/quota/used/@h").text metadata[:ctime] = asset.xpath("./ctime") - end parse_image(asset.xpath("./meta/mf-image"), metadata) # this does not do anything because mf-image is not a part of the meta xpath parse_note(asset.xpath("./meta/mf-note"), metadata) # this does not do anything because mf-note is not a part of the meta xpath + parse_quota(asset.xpath("./collection/quota"), metadata) metadata end @@ -66,6 +64,13 @@ def parse_image(image, metadata) end end + def parse_quota(quota, metadata) + metadata[:quota_allocation] = quota.xpath("./allocation/@h").text + metadata[:quota_allocation_raw] = quota.xpath("./allocation").text.to_i + metadata[:quota_used] = quota.xpath("./used/@h").text + metadata[:quota_used_raw] = quota.xpath("./used").text.to_i + end + # Update this to match full 0.6.1 schema def parse(asset) { diff --git a/app/models/project.rb b/app/models/project.rb index 37aa4f94c..e0177d8e1 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -217,10 +217,7 @@ def self.default_storage_usage end def storage_usage(session_id:) - return unless in_mediaflux? - values = mediaflux_metadata(session_id:) - #value = values.fetch(:size, 0) quota_value = values.fetch(:quota_used, '') if quota_value.blank? @@ -230,6 +227,12 @@ def storage_usage(session_id:) end end + def storage_usage_raw(session_id:) + values = mediaflux_metadata(session_id:) + quota_value = values.fetch(:quota_used_raw, 0) + quota_value + end + def self.default_storage_capacity "0 GB" end @@ -237,7 +240,6 @@ def self.default_storage_capacity def storage_capacity(session_id:) values = mediaflux_metadata(session_id:) quota_value = values.fetch(:quota_allocation, '') #if quota does not exist, set value to an empty string - if quota_value.blank? return self.class.default_storage_capacity else @@ -245,6 +247,12 @@ def storage_capacity(session_id:) end end + def storage_capacity_raw(session_id:) + values = mediaflux_metadata(session_id:) + quota_value = values.fetch(:quota_allocation_raw, 0) #if quota does not exist, set value to 0 + quota_value + end + # Fetches the first n files def file_list(session_id:, size: 10) return { files: [] } if mediaflux_id.nil? diff --git a/app/presenters/project_dashboard_presenter.rb b/app/presenters/project_dashboard_presenter.rb index 0d01f5d58..a091aad48 100644 --- a/app/presenters/project_dashboard_presenter.rb +++ b/app/presenters/project_dashboard_presenter.rb @@ -33,7 +33,7 @@ def last_activity def updated_at project.updated_at - end + end def role(user) if data_sponsor == user.uid @@ -46,11 +46,17 @@ def role(user) end def quota_usage(session_id:) - quota_usage = "#{project.storage_usage(session_id:)} out of #{project.storage_capacity(session_id:)} used" + if project.pending? + quota_usage = "0 KB out of 0 GB used" + else + quota_usage = "#{project.storage_usage(session_id:)} out of #{project.storage_capacity(session_id:)} used" + end quota_usage end def quota_percentage(session_id:) - # figure out how to calculate percentage of storage used with different and unpredictable units + return 0 if project.pending? || project.storage_capacity_raw(session_id:).zero? + + (project.storage_usage_raw(session_id:).to_f / project.storage_capacity_raw(session_id:).to_f) * 100 end end diff --git a/app/views/welcome/_project_list_view.html.erb b/app/views/welcome/_project_list_view.html.erb index edf65a922..ede747c67 100644 --- a/app/views/welcome/_project_list_view.html.erb +++ b/app/views/welcome/_project_list_view.html.erb @@ -10,7 +10,7 @@
-
+
<%= project.status %>