X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/59b0a3a8e5209ef85967a93c500167b7cf882757..d649a716392760cd394e18a628dc23aaec5fa3b3:/apps/workbench/app/controllers/users_controller.rb diff --git a/apps/workbench/app/controllers/users_controller.rb b/apps/workbench/app/controllers/users_controller.rb index 3696eccedf..8a3d35aaf0 100644 --- a/apps/workbench/app/controllers/users_controller.rb +++ b/apps/workbench/app/controllers/users_controller.rb @@ -1,5 +1,5 @@ class UsersController < ApplicationController - skip_before_filter :find_object_by_uuid, :only => [:welcome, :activity] + skip_before_filter :find_object_by_uuid, :only => [:welcome, :activity, :storage] skip_around_filter :thread_with_mandatory_api_token, :only => :welcome before_filter :ensure_current_user_is_admin, only: [:sudo, :unsetup, :setup] @@ -63,6 +63,33 @@ class UsersController < ApplicationController @users = [OpenStruct.new(uuid: nil)] + @users end + def storage + @breadcrumb_page_name = nil + @users = User.limit(params[:limit] || 1000).all + @user_storage = {} + total_storage = {} + @log_date = {} + @users.each do |u| + @user_storage[u.uuid] ||= {} + storage_log = Log. + filter([[:object_uuid, '=', u.uuid], + [:event_type, '=', 'user-storage-report']]). + order(:created_at => :desc). + limit(1) + storage_log.each do |log_entry| + # We expect this block to only execute once since we specified limit(1) + @user_storage[u.uuid] = log_entry['properties'] + @log_date[u.uuid] = log_entry['event_at'] + end + total_storage.merge!(@user_storage[u.uuid]) { |k,v1,v2| v1 + v2 } + end + @users = @users.sort_by { |u| + [-@user_storage[u.uuid].values.push(0).inject(:+), u.full_name]} + # Prepend a "Total" pseudo-user to the sorted list + @users = [OpenStruct.new(uuid: nil)] + @users + @user_storage[nil] = total_storage + end + def show_pane_list if current_user.andand.is_admin super | %w(Admin) @@ -91,9 +118,6 @@ class UsersController < ApplicationController def home @showallalerts = false @my_ssh_keys = AuthorizedKey.where(authorized_user_uuid: current_user.uuid) - # @my_vm_perms = Link.where(tail_uuid: current_user.uuid, head_kind: 'arvados#virtual_machine', link_class: 'permission', name: 'can_login') - # @my_repo_perms = Link.where(tail_uuid: current_user.uuid, head_kind: 'arvados#repository', link_class: 'permission', name: 'can_write') - @my_tag_links = {} @my_jobs = Job. @@ -149,13 +173,17 @@ class UsersController < ApplicationController respond_to do |format| if current_user.andand.is_admin setup_params = {} - if params['uuid'] && params['uuid'].size>0 - setup_params[:uuid] = params['uuid'] + setup_params[:send_notification_email] = "#{Rails.configuration.send_user_setup_notification_email}" + if params['user_uuid'] && params['user_uuid'].size>0 + setup_params[:uuid] = params['user_uuid'] end if params['email'] && params['email'].size>0 - user = {email: params['email'], openid_prefix: params['openid_prefix']} + user = {email: params['email']} setup_params[:user] = user end + if params['openid_prefix'] && params['openid_prefix'].size>0 + setup_params[:openid_prefix] = params['openid_prefix'] + end if params['repo_name'] && params['repo_name'].size>0 setup_params[:repo_name] = params['repo_name'] end