[ARVADOS] updated: 23c44c899b783a784bd9c60e3efda63cab2f6cc8
git at public.curoverse.com
git at public.curoverse.com
Thu Apr 9 09:53:39 EDT 2015
Summary of changes:
.../app/controllers/application_controller.rb | 6 +++-
apps/workbench/app/helpers/application_helper.rb | 2 +-
.../_show_components_editable.html.erb | 20 ++++++++++++
.../test/integration/anonymous_access_test.rb | 36 +++++++++++++++++++++-
services/api/test/fixtures/pipeline_instances.yml | 34 ++++++++++++++++++++
5 files changed, 95 insertions(+), 3 deletions(-)
via 23c44c899b783a784bd9c60e3efda63cab2f6cc8 (commit)
from 9daf42fbdb868939653c6e3ca8a4fffd1cf94e31 (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 23c44c899b783a784bd9c60e3efda63cab2f6cc8
Author: Radhika Chippada <radhika at curoverse.com>
Date: Thu Apr 9 09:37:46 2015 -0400
5365: preload editable component inputs
diff --git a/apps/workbench/app/controllers/application_controller.rb b/apps/workbench/app/controllers/application_controller.rb
index 4f89f26..69c273c 100644
--- a/apps/workbench/app/controllers/application_controller.rb
+++ b/apps/workbench/app/controllers/application_controller.rb
@@ -1120,10 +1120,14 @@ class ApplicationController < ActionController::Base
return @objects_for if uuids.empty?
# if already preloaded for all of these uuids, return
- if not uuids.select { |x| @objects_for[x].nil? }.any?
+ if not uuids.select { |x| !@objects_for.include?(x) }.any?
return @objects_for
end
+ # preset all uuids to nil
+ uuids.each do |x|
+ @objects_for[x] = nil
+ end
dataclass.where(uuid: uuids).each do |obj|
@objects_for[obj.uuid] = obj
end
diff --git a/apps/workbench/app/helpers/application_helper.rb b/apps/workbench/app/helpers/application_helper.rb
index b145fdd..0dee527 100644
--- a/apps/workbench/app/helpers/application_helper.rb
+++ b/apps/workbench/app/helpers/application_helper.rb
@@ -298,7 +298,7 @@ module ApplicationHelper
end
if not object.andand.attribute_editable?(attr)
- return link_to_if_arvados_object attrvalue
+ return link_to_arvados_object_if_readable(attrvalue, attrvalue, attrvalue, false)
end
if dataclass
diff --git a/apps/workbench/app/views/pipeline_instances/_show_components_editable.html.erb b/apps/workbench/app/views/pipeline_instances/_show_components_editable.html.erb
index f6c9e85..50b2c9e 100644
--- a/apps/workbench/app/views/pipeline_instances/_show_components_editable.html.erb
+++ b/apps/workbench/app/views/pipeline_instances/_show_components_editable.html.erb
@@ -1,3 +1,23 @@
+<%
+ input_uuids = []
+ input_pdhs = []
+ @object.components.each do |k, component|
+ next if !component
+ component[:script_parameters].andand.each do |p, tv|
+ if tv[:value] and tv[:dataclass].andand.eql?('Collection')
+ if CollectionsHelper.match(tv[:value])
+ input_pdhs << tv[:value]
+ else
+ input_uuids << tv[:value]
+ end
+ end
+ end
+ end
+
+ preload_collections_for_objects input_uuids if input_uuids.any?
+ preload_for_pdhs input_pdhs if input_pdhs.any?
+%>
+
<table class="table pipeline-components-table" style="margin-top: -.1em">
<colgroup>
<col style="width: 20%" />
diff --git a/apps/workbench/test/integration/anonymous_access_test.rb b/apps/workbench/test/integration/anonymous_access_test.rb
index 20bb0fd..dedcd4c 100644
--- a/apps/workbench/test/integration/anonymous_access_test.rb
+++ b/apps/workbench/test/integration/anonymous_access_test.rb
@@ -215,7 +215,7 @@ class AnonymousAccessTest < ActionDispatch::IntegrationTest
if objects_readable
if pipeline_page
assert_text 'This pipeline was created from'
- assert_selector 'a', object['components']['foo']['job']['uuid']
+ assert_selector 'a', text: object['components']['foo']['job']['uuid']
end
assert_no_text 'Output data not available'
assert_selector 'a[href="#Log"]', text: 'Log'
@@ -242,6 +242,40 @@ class AnonymousAccessTest < ActionDispatch::IntegrationTest
end
end
+ [
+ ['new_pipeline_in_publicly_accessible_project', true],
+ ['new_pipeline_in_publicly_accessible_project_but_other_objects_elsewhere', false],
+ ['new_pipeline_in_publicly_accessible_project_but_other_objects_elsewhere', false, 'spectator'],
+ ['new_pipeline_in_publicly_accessible_project_but_other_objects_elsewhere', true, 'admin'],
+ ].each do |fixture, objects_readable, user=nil|
+ test "access #{fixture} in public project with objects readable=#{objects_readable} with user #{user}" do
+ object = api_fixture('pipeline_instances')[fixture]
+ page = "/pipeline_instances/#{object['uuid']}"
+ if user
+ visit page_with_token user, page
+ else
+ visit page
+ end
+
+ # click Components tab
+ click_link 'Components'
+
+ if objects_readable
+ assert_text 'This pipeline was created from'
+ if user == 'admin'
+ assert_text 'input'
+ assert_selector 'a', text: 'Choose'
+ else
+ assert_selector 'a', text: object['components']['foo']['script_parameters']['input']['value']
+ end
+ else
+ assert_no_text 'This pipeline was created from' # template is not readable
+ assert_text object['components']['foo']['script_parameters']['input']['value']
+ assert_no_selector 'a', text: object['components']['foo']['script_parameters']['input']['value']
+ end
+ end
+ end
+
test "anonymous user accesses collection in shared project" do
visit "/collections/#{api_fixture('collections')['public_text_file']['uuid']}"
diff --git a/services/api/test/fixtures/pipeline_instances.yml b/services/api/test/fixtures/pipeline_instances.yml
index bb06dac..1f1b128 100644
--- a/services/api/test/fixtures/pipeline_instances.yml
+++ b/services/api/test/fixtures/pipeline_instances.yml
@@ -304,6 +304,40 @@ pipeline_in_publicly_accessible_project_but_other_objects_elsewhere:
output: zzzzz-4zz18-bv31uwvy3neko21
state: Complete
+new_pipeline_in_publicly_accessible_project:
+ uuid: zzzzz-d1hrv-newpisharedobjs
+ owner_uuid: zzzzz-j7d0g-zhxawtyetzwc5f0
+ name: Pipeline in New state in publicly accessible project
+ pipeline_template_uuid: zzzzz-p5p6p-tmpltpublicproj
+ state: New
+ created_at: 2014-09-15 12:00:00
+ components:
+ foo:
+ script: foo
+ script_version: master
+ script_parameters:
+ input:
+ required: true
+ dataclass: Collection
+ value: b519d9cb706a29fc7ea24dbea2f05851+93
+
+new_pipeline_in_publicly_accessible_project_but_other_objects_elsewhere:
+ uuid: zzzzz-d1hrv-newsharenotobjs
+ owner_uuid: zzzzz-j7d0g-zhxawtyetzwc5f0
+ name: Pipeline in New state in public project with objects elsewhere
+ pipeline_template_uuid: zzzzz-p5p6p-aox0k0ofxrystgw
+ state: New
+ created_at: 2014-09-15 12:00:00
+ components:
+ foo:
+ script: foo
+ script_version: master
+ script_parameters:
+ input:
+ required: true
+ dataclass: Collection
+ value: zzzzz-4zz18-bv31uwvy3neko21
+
pipeline_in_running_state:
name: running_with_job
state: Ready
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list