[ARVADOS] updated: ec08a1b9aefcd801d1f0c0b282b268cbee6939bc
git at public.curoverse.com
git at public.curoverse.com
Tue Jun 3 14:45:45 EDT 2014
Summary of changes:
.../app/controllers/application_controller.rb | 72 ++++++++++++++++++++++
apps/workbench/app/helpers/application_helper.rb | 48 +++++++++++----
.../app/models/api_client_authorization.rb | 2 +-
apps/workbench/app/models/arvados_base.rb | 4 +-
apps/workbench/app/models/authorized_key.rb | 4 +-
apps/workbench/app/models/collection.rb | 2 +-
apps/workbench/app/models/job.rb | 2 +-
apps/workbench/app/models/pipeline_instance.rb | 7 ++-
apps/workbench/app/models/user.rb | 4 +-
apps/workbench/app/models/virtual_machine.rb | 2 +-
.../controllers/arvados/v1/job_tasks_controller.rb | 1 +
.../app/controllers/arvados/v1/users_controller.rb | 2 +
.../admin_notifier/new_inactive_user.text.erb | 2 +-
.../test/integration/serialized_encoding_test.rb | 62 +++++++++++++------
services/fuse/tests/test_mount.py | 7 ++-
15 files changed, 176 insertions(+), 45 deletions(-)
via ec08a1b9aefcd801d1f0c0b282b268cbee6939bc (commit)
via 2f1baf225599d7ae5dec4611696774e6a7100d58 (commit)
via f10a7f68c6ef25cf4ba87045201b17093a11249e (commit)
via ab2550bca241736c162a435d62fc3ccb4ac5dc8e (commit)
via debfa4b65640388800daf3ac90263454a6fe2f8d (commit)
via 96e6e2890330e18af48d460e54077257bd82161e (commit)
via 656769b7b36b38c564f7da64b275d8831d7a442e (commit)
via abc22e2b430a57787adaf9b665cff1214b0d87fc (commit)
from 0558601e48e0440887ae597a64c314676bb1e138 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
commit ec08a1b9aefcd801d1f0c0b282b268cbee6939bc
Author: radhika <radhika at curoverse.com>
Date: Tue Jun 3 14:44:32 2014 -0400
2871: add helper method to get "n" number of objects of specific dataclass
diff --git a/apps/workbench/app/controllers/application_controller.rb b/apps/workbench/app/controllers/application_controller.rb
index 786479c..a559b01 100644
--- a/apps/workbench/app/controllers/application_controller.rb
+++ b/apps/workbench/app/controllers/application_controller.rb
@@ -191,31 +191,6 @@ class ApplicationController < ActionController::Base
%w(Attributes Metadata JSON API)
end
- # helper method to get links for given objects or uuids
- helper_method :links_for_object
- def links_for_object object_or_uuid
- uuid = object_or_uuid.is_a?(String) ? object_or_uuid : object_or_uuid.uuid
- preload_links_for_objects([uuid])
- @all_links_for[uuid]
- end
-
- helper_method :preload_links_for_objects
- def preload_links_for_objects objects_and_uuids
- uuids = objects_and_uuids.collect { |x| x.is_a?(String) ? x : x.uuid }
- @all_links_for ||= {}
- if not uuids.select { |x| @all_links_for[x].nil? }.any?
- # already preloaded for all of these uuids
- return
- end
- uuids.each do |x|
- @all_links_for[x] = []
- end
- # TODO: make sure we get every page of results from API server
- Link.filter([['head_uuid','in',uuids]]).each do |link|
- @all_links_for[link.head_uuid] << link
- end
- end
-
protected
def redirect_to_login
@@ -473,4 +448,50 @@ class ApplicationController < ActionController::Base
root_of[g.uuid] == current_user.uuid
end
end
+
+ # helper method to get links for given object or uuid
+ helper_method :links_for_object
+ def links_for_object object_or_uuid
+ uuid = object_or_uuid.is_a?(String) ? object_or_uuid : object_or_uuid.uuid
+ preload_links_for_objects([uuid])
+ @all_links_for[uuid]
+ end
+
+ # helper method to preload links for given objects and uuids
+ helper_method :preload_links_for_objects
+ def preload_links_for_objects objects_and_uuids
+ uuids = objects_and_uuids.collect { |x| x.is_a?(String) ? x : x.uuid }
+ @all_links_for ||= {}
+ if not uuids.select { |x| @all_links_for[x].nil? }.any?
+ # already preloaded for all of these uuids
+ return
+ end
+ uuids.each do |x|
+ @all_links_for[x] = []
+ end
+ # TODO: make sure we get every page of results from API server
+ Link.filter([['head_uuid','in',uuids]]).each do |link|
+ @all_links_for[link.head_uuid] << link
+ end
+ end
+
+ # helper method to get a certain number of objects of a specific type
+ # this can be used to replace any uses of: "dataclass.limit(n)"
+ helper_method :get_objects_of_type
+ def get_objects_of_type dataclass, size
+ # if the objects_map has a value for this dataclass, and the size used
+ # to retrieve those objects is greater than equal to size, return it
+ size_key = "#{dataclass}_size"
+ if @objects_map && @objects_map[dataclass] && @objects_map[size_key] &&
+ (@objects_map[size_key] >= size)
+ return @objects_map[dataclass]
+ end
+
+ @objects_map = {}
+ @objects_map[dataclass] = dataclass.limit(size)
+ @objects_map[size_key] = size
+
+ return @objects_map[dataclass]
+ end
+
end
diff --git a/apps/workbench/app/helpers/application_helper.rb b/apps/workbench/app/helpers/application_helper.rb
index f236f8c..b03b109 100644
--- a/apps/workbench/app/helpers/application_helper.rb
+++ b/apps/workbench/app/helpers/application_helper.rb
@@ -245,7 +245,8 @@ module ApplicationHelper
attrtext = attrvalue
if dataclass and dataclass.is_a? Class
- dataclass.limit(10).each do |item|
+ objects = get_objects_of_type dataclass, 10
+ objects.each do |item|
items << item
preload_uuids << item.uuid
end
@@ -255,7 +256,6 @@ module ApplicationHelper
preload_links_for_objects preload_uuids
if attrvalue and !attrvalue.empty?
- #Link.where(head_uuid: attrvalue, link_class: ["tag", "identifier"]).each do |tag|
links_for_object(attrvalue).each do |link|
if link.link_class.in? ["tag", "identifier"]
attrtext += " [#{tag.name}]"
@@ -263,16 +263,12 @@ module ApplicationHelper
end
selectables.append({name: attrtext, uuid: attrvalue, type: dataclass.to_s})
end
- #dataclass.where(uuid: attrvalue).each do |item|
- # selectables.append({name: item.uuid, uuid: item.uuid, type: dataclass.to_s})
- #end
itemuuids = []
items.each do |item|
itemuuids << item.uuid
selectables.append({name: item.uuid, uuid: item.uuid, type: dataclass.to_s})
end
- #Link.where(head_uuid: itemuuids, link_class: ["tag", "identifier"]).each do |tag|
itemuuids.each do |itemuuid|
links_for_object(itemuuid).each do |link|
if link.link_class.in? ["tag", "identifier"]
commit 2f1baf225599d7ae5dec4611696774e6a7100d58
Merge: f10a7f6 ab2550b
Author: radhika <radhika at curoverse.com>
Date: Tue Jun 3 11:27:41 2014 -0400
Merge branch 'master' into 2871-preload-objects
commit f10a7f68c6ef25cf4ba87045201b17093a11249e
Author: radhika <radhika at curoverse.com>
Date: Tue Jun 3 11:26:23 2014 -0400
2871: preload links helper method is added to workbench application_controller.
diff --git a/apps/workbench/app/controllers/application_controller.rb b/apps/workbench/app/controllers/application_controller.rb
index 59ca350..d630b3b 100644
--- a/apps/workbench/app/controllers/application_controller.rb
+++ b/apps/workbench/app/controllers/application_controller.rb
@@ -191,6 +191,31 @@ class ApplicationController < ActionController::Base
%w(Attributes Metadata JSON API)
end
+ # helper method to get links for given objects or uuids
+ helper_method :links_for_object
+ def links_for_object object_or_uuid
+ uuid = object_or_uuid.is_a?(String) ? object_or_uuid : object_or_uuid.uuid
+ preload_links_for_objects([uuid])
+ @all_links_for[uuid]
+ end
+
+ helper_method :preload_links_for_objects
+ def preload_links_for_objects objects_and_uuids
+ uuids = objects_and_uuids.collect { |x| x.is_a?(String) ? x : x.uuid }
+ @all_links_for ||= {}
+ if not uuids.select { |x| @all_links_for[x].nil? }.any?
+ # already preloaded for all of these uuids
+ return
+ end
+ uuids.each do |x|
+ @all_links_for[x] = []
+ end
+ # TODO: make sure we get every page of results from API server
+ Link.filter([['head_uuid','in',uuids]]).each do |link|
+ @all_links_for[link.head_uuid] << link
+ end
+ end
+
protected
def redirect_to_login
diff --git a/apps/workbench/app/helpers/application_helper.rb b/apps/workbench/app/helpers/application_helper.rb
index d844350..acd7f10 100644
--- a/apps/workbench/app/helpers/application_helper.rb
+++ b/apps/workbench/app/helpers/application_helper.rb
@@ -232,12 +232,27 @@ module ApplicationHelper
dn += '[value]'
end
+ preload_uuids = [attrvalue]
+ items = []
selectables = []
+
attrtext = attrvalue
if dataclass and dataclass.is_a? Class
+ dataclass.limit(10).each do |item|
+ items << item
+ preload_uuids << item.uuid
+ end
if attrvalue and !attrvalue.empty?
- Link.where(head_uuid: attrvalue, link_class: ["tag", "identifier"]).each do |tag|
- attrtext += " [#{tag.name}]"
+ preload_uuids << attrvalue
+ end
+ preload_links_for_objects preload_uuids
+
+ if attrvalue and !attrvalue.empty?
+ #Link.where(head_uuid: attrvalue, link_class: ["tag", "identifier"]).each do |tag|
+ links_for_object(attrvalue).each do |link|
+ if link.link_class.in? ["tag", "identifier"]
+ attrtext += " [#{tag.name}]"
+ end
end
selectables.append({name: attrtext, uuid: attrvalue, type: dataclass.to_s})
end
@@ -245,14 +260,20 @@ module ApplicationHelper
# selectables.append({name: item.uuid, uuid: item.uuid, type: dataclass.to_s})
#end
itemuuids = []
- dataclass.limit(10).each do |item|
+ items.each do |item|
itemuuids << item.uuid
selectables.append({name: item.uuid, uuid: item.uuid, type: dataclass.to_s})
end
- Link.where(head_uuid: itemuuids, link_class: ["tag", "identifier"]).each do |tag|
- selectables.each do |selectable|
- if selectable['uuid'] == tag.head_uuid
- selectable['name'] += ' [' + tag.name + ']'
+
+ #Link.where(head_uuid: itemuuids, link_class: ["tag", "identifier"]).each do |tag|
+ itemuuids.each do |itemuuid|
+ links_for_object(itemuuid).each do |link|
+ if link.link_class.in? ["tag", "identifier"]
+ selectables.each do |selectable|
+ if selectable['uuid'] == tag.head_uuid
+ selectable['name'] += ' [' + tag.name + ']'
+ end
+ end
end
end
end
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list