Use post method instead of get method when invoking the unsetup method from the api...
[arvados.git] / apps / workbench / app / controllers / users_controller.rb
index b9f43ba76a03d3e27141559aa8d24e1e046f48dc..a98bb11a99f54010359415fe270896cfa2e064e6 100644 (file)
@@ -1,7 +1,7 @@
 class UsersController < ApplicationController
   skip_before_filter :find_object_by_uuid, :only => [:welcome, :activity]
   skip_around_filter :thread_with_mandatory_api_token, :only => :welcome
-  before_filter :ensure_current_user_is_admin, only: :sudo
+  before_filter :ensure_current_user_is_admin, only: [:sudo, :unsetup]
 
   def welcome
     if current_user
@@ -19,6 +19,7 @@ class UsersController < ApplicationController
       jobs: {},
       pipeline_instances: {}
     }
+    @total_activity = {}
     @spans = [['This week', Time.now.beginning_of_week, Time.now],
               ['Last week',
                Time.now.beginning_of_week.advance(weeks:-1),
@@ -49,12 +50,17 @@ class UsersController < ApplicationController
           @user_activity[record.modified_by_user_uuid] ||= {}
           @user_activity[record.modified_by_user_uuid][span + ' ' + type.to_s] ||= 0
           @user_activity[record.modified_by_user_uuid][span + ' ' + type.to_s] += 1
+          @total_activity[span + ' ' + type.to_s] ||= 0
+          @total_activity[span + ' ' + type.to_s] += 1
         end
       end
     end
     @users = @users.sort_by do |a|
       [-@user_activity[a.uuid].values.inject(:+), a.full_name]
     end
+    # Prepend a "Total" pseudo-user to the sorted list
+    @user_activity[nil] = @total_activity
+    @users = [OpenStruct.new(uuid: nil)] + @users
   end
 
   def show_pane_list
@@ -65,6 +71,14 @@ class UsersController < ApplicationController
     end
   end
 
+  def index_pane_list
+    if current_user.andand.is_admin
+      super | %w(Activity)
+    else
+      super
+    end
+  end
+
   def sudo
     resp = $arvados_api_client.api(ApiClientAuthorization, '', {
                                      api_client_authorization: {
@@ -123,4 +137,12 @@ class UsersController < ApplicationController
       f.html { render template: 'users/home' }
     end
   end
+
+  def unsetup
+    if current_user.andand.is_admin
+      @object.unsetup @object
+    end
+    show
+  end
+
 end