X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/df48d4e9d64b08e0d82ffba2424fff87c2a07701..e69f517dbd5ad9bac104d42479d8ef2f515b398e:/apps/workbench/app/controllers/application_controller.rb diff --git a/apps/workbench/app/controllers/application_controller.rb b/apps/workbench/app/controllers/application_controller.rb index 0da59561da..d0ecfe9af1 100644 --- a/apps/workbench/app/controllers/application_controller.rb +++ b/apps/workbench/app/controllers/application_controller.rb @@ -527,7 +527,7 @@ class ApplicationController < ActionController::Base if not model_class @object = nil elsif not params[:uuid].is_a?(String) - @object = model_class.where(uuid: params[:uuid]).first + @object = object_for_dataclass(model_class, params[:uuid]) elsif params[:uuid].empty? @object = nil elsif (model_class != Link and @@ -535,7 +535,7 @@ class ApplicationController < ActionController::Base @name_link = Link.find(params[:uuid]) @object = model_class.find(@name_link.head_uuid) else - @object = model_class.find(params[:uuid]) + @object = object_for_dataclass(model_class, params[:uuid]) end rescue ArvadosApiClient::NotFoundException, ArvadosApiClient::NotLoggedInException, RuntimeError => error if error.is_a?(RuntimeError) and (error.message !~ /^argument to find\(/) @@ -769,7 +769,7 @@ class ApplicationController < ActionController::Base helper_method :user_notifications def user_notifications - return [] if @errors or not current_user.andand.is_active + return [] if @errors or not current_user.andand.is_active or not Rails.configuration.show_user_notifications @notifications ||= @@notification_tests.map do |t| t.call(self, current_user) end.compact @@ -855,7 +855,8 @@ class ApplicationController < ActionController::Base def recent_processes lim lim = 12 if lim.nil? - pipelines = PipelineInstance.limit(lim).order(["created_at desc"]) + cols = %w(uuid owner_uuid created_at modified_at pipeline_template_uuid name state started_at finished_at) + pipelines = PipelineInstance.select(cols).limit(lim).order(["created_at desc"]) crs = ContainerRequest.limit(lim).order(["created_at desc"]).filter([["requesting_container_uuid", "=", nil]]) procs = {} @@ -867,7 +868,7 @@ class ApplicationController < ActionController::Base helper_method :recent_collections def recent_collections lim - c = Collection.limit(lim).order(["modified_at desc"]).filter([["owner_uuid", "is_a", "arvados#group"]]) + c = Collection.limit(lim).order(["modified_at desc"]).results own = {} Group.filter([["uuid", "in", c.map(&:owner_uuid)]]).each do |g| own[g[:uuid]] = g @@ -1179,15 +1180,15 @@ class ApplicationController < ActionController::Base # helper method to get object of a given dataclass and uuid helper_method :object_for_dataclass - def object_for_dataclass dataclass, uuid + def object_for_dataclass dataclass, uuid, by_name=nil raise ArgumentError, 'No input argument dataclass' unless (dataclass && uuid) - preload_objects_for_dataclass(dataclass, [uuid]) + preload_objects_for_dataclass(dataclass, [uuid], by_name) @objects_for[uuid] end # helper method to preload objects for given dataclass and uuids helper_method :preload_objects_for_dataclass - def preload_objects_for_dataclass dataclass, uuids + def preload_objects_for_dataclass dataclass, uuids, by_name=nil @objects_for ||= {} raise ArgumentError, 'Argument is not a data class' unless dataclass.is_a? Class @@ -1204,12 +1205,27 @@ class ApplicationController < ActionController::Base uuids.each do |x| @objects_for[x] = nil end - dataclass.where(uuid: uuids).each do |obj| - @objects_for[obj.uuid] = obj + if by_name + dataclass.where(name: uuids).each do |obj| + @objects_for[obj.name] = obj + end + else + dataclass.where(uuid: uuids).each do |obj| + @objects_for[obj.uuid] = obj + end end @objects_for end + # helper method to load objects that are already preloaded + helper_method :load_preloaded_objects + def load_preloaded_objects objs + @objects_for ||= {} + objs.each do |obj| + @objects_for[obj.uuid] = obj + end + end + def wiselinks_layout 'body' end