[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