projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
10144: preload work_unit children
[arvados.git]
/
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 c6148ca544befd57c44a1549511b038d5d57ceec..d0ecfe9af161de37d0972849c9d7d4bec756722b 100644
(file)
--- 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)
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
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
@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\(/)
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
helper_method :user_notifications
def user_notifications
- return [] if @errors or not current_user.andand.is_active or not Rails.configuration.show_user_notifications
_in_dashboard
+ 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
@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?
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 = {}
crs = ContainerRequest.limit(lim).order(["created_at desc"]).filter([["requesting_container_uuid", "=", nil]])
procs = {}
@@
-1179,15
+1180,15
@@
class ApplicationController < ActionController::Base
# helper method to get object of a given dataclass and uuid
helper_method :object_for_dataclass
# 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)
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
@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
@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
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
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
def wiselinks_layout
'body'
end