[ARVADOS] updated: f4189a0c74c5cf3bfe31f8ed83d845c21611653e
git at public.curoverse.com
git at public.curoverse.com
Thu Jun 19 17:22:08 EDT 2014
Summary of changes:
.../app/assets/javascripts/application.js | 11 +
.../app/assets/javascripts/collections.js | 3 -
.../app/assets/javascripts/infinite_scroll.js | 3 +-
.../workbench/app/assets/javascripts/log_viewer.js | 270 ++++++++++++++++++--
.../app/assets/javascripts/select_modal.js | 13 +
apps/workbench/app/assets/javascripts/sizing.js | 5 +-
.../app/assets/stylesheets/application.css.scss | 9 +
.../app/assets/stylesheets/log_viewer.scss | 32 ++-
.../app/assets/stylesheets/select_modal.css.scss | 1 +
.../app/controllers/application_controller.rb | 167 ++++++-------
.../app/controllers/collections_controller.rb | 40 +--
.../app/controllers/user_agreements_controller.rb | 1 +
apps/workbench/app/models/arvados_base.rb | 4 +
.../app/views/application/_choose.html.erb | 55 +++--
.../workbench/app/views/application/_choose.js.erb | 22 +-
.../app/views/application/_content.html.erb | 2 -
.../views/application/_projects_tree_menu.html.erb | 31 +++
.../app/views/collections/_choose_rows.html.erb | 18 +-
.../collections/_show_chooser_preview.html.erb | 2 +
.../_show_object_description_cell.html.erb | 14 --
.../collections/_show_source_summary.html.erb | 21 ++
apps/workbench/app/views/collections/index.js.erb | 1 -
apps/workbench/app/views/collections/show.html.erb | 22 +-
.../app/views/collections/show_file_links.html.erb | 7 +-
apps/workbench/app/views/jobs/_show_log.html.erb | 215 +++++++++++-----
.../app/views/layouts/application.html.erb | 43 +---
.../_show_components_editable.html.erb | 4 +-
.../app/views/pipeline_instances/show.js.erb | 1 -
.../views/pipeline_templates/_choose_rows.html.erb | 5 +-
.../_show_chooser_preview.html.erb | 4 +
apps/workbench/app/views/projects/_choose.html.erb | 5 +-
apps/workbench/app/views/users/home.js.erb | 1 -
.../test/functional/collections_controller_test.rb | 8 +
.../test/functional/projects_controller_test.rb | 26 +-
doc/api/methods/jobs.html.textile.liquid | 31 ++-
doc/api/schema/Job.html.textile.liquid | 6 +-
.../api/app/controllers/application_controller.rb | 11 +-
.../app/controllers/arvados/v1/jobs_controller.rb | 99 +++++++-
services/api/app/models/collection.rb | 34 +--
services/api/test/fixtures/jobs.yml | 16 ++
services/api/test/fixtures/links.yml | 10 +-
.../arvados/v1/job_reuse_controller_test.rb | 273 +++++++++++++++++++++
42 files changed, 1187 insertions(+), 359 deletions(-)
create mode 100644 apps/workbench/app/views/application/_projects_tree_menu.html.erb
create mode 100644 apps/workbench/app/views/collections/_show_chooser_preview.html.erb
delete mode 100644 apps/workbench/app/views/collections/_show_object_description_cell.html.erb
create mode 100644 apps/workbench/app/views/collections/_show_source_summary.html.erb
create mode 100644 apps/workbench/app/views/pipeline_templates/_show_chooser_preview.html.erb
via f4189a0c74c5cf3bfe31f8ed83d845c21611653e (commit)
via 2aea6cdaf1e6ecf747801d02b26dba82d88cd860 (commit)
via fd4efd53d8510f7d5662d895f8a79ae3ab573b8b (commit)
via 47042547e7873d63f764e85ace085a8da314afd3 (commit)
via aea4b0cd7553dfb27c3e6c448fcad349284d6cf4 (commit)
via ee435c5374d13f187290c7039c0e37dd5ae2ad00 (commit)
via 085876306dd42d59d97b251e135e6cd157af4216 (commit)
via 7e723d29f206fcc5ba4d8a26f8d547a72d5f0425 (commit)
via ebc3fddd97628a50148ed90531b0a18d1cc867f9 (commit)
via d9d357302419430ca762a9eb56ef5fda41fe47b9 (commit)
via b832c418442822700c684a31e04d5c095735ce3b (commit)
via 032b8b8c489650409dab16ec49ca853016048b24 (commit)
via 6d6b609a1952bd0edb87413f24753d7b85c093b7 (commit)
via 784e112f3fcad487c9f359413fb0dcd8b09c3edb (commit)
via 613773f364adb36de6b061ba5a78a6df0a53df4f (commit)
via 8c9b4a1c7b4ad3feb5c0ccb14888aad7ed262e18 (commit)
via 2fd0eba4e138bd9cadbdf03ea2ca37bbc3f87f24 (commit)
via 143165afbe34d80c7bdd82d6abaf47fb00a5d059 (commit)
via f5254bc8e4c0d6f0169ce2de4c9ba43ff6fe87a5 (commit)
via 5a4863dc935ecccebebc9b166c3c9915121b14d1 (commit)
via 9c72375f74e8a251e9f09c8a16dbed9174417292 (commit)
via 6743d58bac1eb91040fc422fcd07f3351360d506 (commit)
via 715a760e661e589d454dadca9040729e651edc8a (commit)
via 549f4a1deddb41f6abbc493a660d9fb0976da91a (commit)
via 76dea8772ff5726836393c518088bd8a7e149cc5 (commit)
via 89c1cc67e4ef23a971fa732ad1b7178566dd22fc (commit)
via 21822c130f0d19eb4082a3b6bc99e45ce1017a8a (commit)
via e0cf8505654d0e1c20b3d6ad31eefdab1fa342fe (commit)
via a5e1609e6f34ee041a92fa089ccf0ed66448bf15 (commit)
via 3f9aa0401350fc8a41a2dce81151da4aa050e771 (commit)
via 976e8b27deea19cf863f33d579f5a361817493ba (commit)
via a8d207b68612e2e6d6afcd16b0c68f98bbaab16e (commit)
via d3b84be954b1d899b6364ff6259144f37c42fafe (commit)
via 91f0f06d8791cdb880a5ce8267e86d565b38aae3 (commit)
via 4cc70d306f608b6b7ca5076a6d066bb3e1c7bf2b (commit)
via 189ce25a32a5916194597665435b269192a9baec (commit)
via 02825a88733a13a58775774053fb0945e9adf693 (commit)
via d99707463cd5bf757322cde334c32e398abbf6f9 (commit)
via b8475bddb17b1c303b527524dd384f1bde514a36 (commit)
via 1e2393533f678d4f50e3e98ba03a15e802f397bb (commit)
via b36d3de1cdda89a597410842acf4d02d372bf164 (commit)
from dff8a3876fab9719326bde7d51b17918270719e4 (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 f4189a0c74c5cf3bfe31f8ed83d845c21611653e
Merge: 2aea6cd fd4efd5
Author: radhika <radhika at curoverse.com>
Date: Thu Jun 19 17:05:19 2014 -0400
Merge branch 'master' into 2659-anonymous-group
Conflicts:
apps/workbench/app/views/layouts/application.html.erb
diff --cc apps/workbench/app/controllers/application_controller.rb
index bef3341,9e918f5..e6e28c6
--- a/apps/workbench/app/controllers/application_controller.rb
+++ b/apps/workbench/app/controllers/application_controller.rb
@@@ -10,10 -10,9 +10,10 @@@ class ApplicationController < ActionCon
around_filter :thread_clear
around_filter :thread_with_mandatory_api_token, except: ERROR_ACTIONS
around_filter :thread_with_optional_api_token
+ around_filter :use_anonymous_token_if_necessary
before_filter :check_user_agreements, except: ERROR_ACTIONS
before_filter :check_user_notifications, except: ERROR_ACTIONS
- before_filter :find_object_by_uuid, except: [:index] + ERROR_ACTIONS
+ before_filter :find_object_by_uuid, except: [:index, :choose] + ERROR_ACTIONS
theme :select_theme
begin
diff --cc apps/workbench/app/models/arvados_base.rb
index 5c14b37,3b5ac86..da4b33c
--- a/apps/workbench/app/models/arvados_base.rb
+++ b/apps/workbench/app/models/arvados_base.rb
@@@ -295,8 -295,12 +295,12 @@@ class ArvadosBase < ActiveRecord::Bas
self.class.to_s.underscore.humanize
end
+ def self.class_for_display
+ self.to_s.underscore.humanize
+ end
+
def self.creatable?
- current_user
+ current_user && (!current_user[:uuid].ends_with?('anonymouspublic'))
end
def self.goes_in_projects?
diff --cc apps/workbench/app/views/layouts/application.html.erb
index cc3c6a2,23e0715..93fe189
--- a/apps/workbench/app/views/layouts/application.html.erb
+++ b/apps/workbench/app/views/layouts/application.html.erb
@@@ -169,39 -161,16 +169,16 @@@
<nav class="navbar navbar-default breadcrumbs" role="navigation">
<ul class="nav navbar-nav navbar-left">
<li class="dropdown">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="projects-menu">
- <i class="fa fa-lg fa-fw fa-home"></i>
- Projects
- <span class="caret"></span>
- </a>
- <ul class="dropdown-menu" role="menu">
- <li role="presentation" class="dropdown-header">
- <% if current_user.is_active %>
- <%= link_to projects_path('project[owner_uuid]' => current_project_uuid), method: 'post', class: 'btn btn-xs btn-default pull-right' do %>
- <i class="fa fa-plus"></i> New project
- <% end %>
- <% end %>
- My projects
- </li>
- <% my_project_tree.each do |pnode| %>
- <% next if pnode[:object].class != Group %>
- <li style="padding-left: <%= pnode[:depth]-1 %>em">
- <%= link_to(pnode[:object].name, project_path(pnode[:object].uuid), data: {object_uuid: pnode[:object].uuid, name: 'name'}) %>
- </li>
- <% end %>
- <li class="divider">
- <li role="presentation" class="dropdown-header">
- Projects shared with me
- </li>
- <% shared_project_tree.each do |pnode| %>
- <% next if pnode[:object].class != Group %>
- <li style="padding-left: <%= pnode[:depth]-1 %>em">
- <%= link_to project_path(pnode[:object].uuid), data: {object_uuid: pnode[:object].uuid, name: 'name'} do %>
- <i class="fa fa-fw fa-share-alt" style="color:#aaa"></i> <%= pnode[:object].name %>
+ <%= render partial: "projects_tree_menu", locals: {
+ :project_link_to => Proc.new do |pnode, &block|
+ link_to(project_path(pnode[:object].uuid), data: {object_uuid: pnode[:object].uuid, name: 'name'}, &block)
+ end,
- :top_button => Proc.new do %>
++ :top_button => Proc.new do %> <% if current_user.is_active%>
+ <% link_to projects_path('project[owner_uuid]' => current_project_uuid), method: 'post', class: 'btn btn-xs btn-default pull-right' do %>
+ <i class="fa fa-plus"></i> New project
- <% end %>
++ <% end %> <% end %>
<% end %>
- </li>
- <% end %>
- </ul>
+ <% } %>
</li>
<% project_breadcrumbs.each do |p| %>
<li class="nav-separator">
commit 2aea6cdaf1e6ecf747801d02b26dba82d88cd860
Author: radhika <radhika at curoverse.com>
Date: Thu Jun 19 16:51:48 2014 -0400
2659: use around_filter to use anonymous user token
diff --git a/apps/workbench/app/controllers/application_controller.rb b/apps/workbench/app/controllers/application_controller.rb
index e3983ec..bef3341 100644
--- a/apps/workbench/app/controllers/application_controller.rb
+++ b/apps/workbench/app/controllers/application_controller.rb
@@ -10,7 +10,8 @@ class ApplicationController < ActionController::Base
around_filter :thread_clear
around_filter :thread_with_mandatory_api_token, except: ERROR_ACTIONS
around_filter :thread_with_optional_api_token
-# before_filter :check_user_agreements, except: ERROR_ACTIONS
+ around_filter :use_anonymous_token_if_necessary
+ before_filter :check_user_agreements, except: ERROR_ACTIONS
before_filter :check_user_notifications, except: ERROR_ACTIONS
before_filter :find_object_by_uuid, except: [:index] + ERROR_ACTIONS
theme :select_theme
@@ -353,32 +354,12 @@ class ApplicationController < ActionController::Base
def thread_with_api_token(login_optional = false)
begin
try_redirect_to_login = true
-
- anonymous_user_token = Rails.configuration.anonymous_user_token
- using_anonymous_user_token = false
- if !params[:api_token] && !session[:arvados_api_token] &&
- !Thread.current[:anonymous_api_token]
- if session['arv-referrer'] == 'logout'
- # do not use anonymous user token and let logout happen
- else
- if anonymous_user_token
- params[:api_token] = anonymous_user_token
- using_anonymous_user_token = true
- end
- end
- else
- if params[:api_token] && (params[:api_token] == anonymous_user_token)
- using_anonymous_user_token = true
- end
- end
-
if params[:api_token]
try_redirect_to_login = false
Thread.current[:arvados_api_token] = params[:api_token]
# Before copying the token into session[], do a simple API
# call to verify its authenticity.
if verify_api_token
- if !using_anonymous_user_token
session[:arvados_api_token] = params[:api_token]
u = User.current
session[:user] = {
@@ -399,39 +380,27 @@ class ApplicationController < ActionController::Base
else
yield
end
- else # using anonymous token
- Thread.current[:user] = User.current
- Thread.current[:anonymous_api_token] = params[:api_token]
- session[:arvados_api_token] = nil
- session[:user] = nil
- redirect_to request.fullpath.sub(%r{([&\?]api_token=)[^&\?]*}, '')
- end
else
- if using_anonymous_user_token
- # bypass the invalid anonymous user token to prevent infinite looping
- try_redirect_to_login = true
- Thread.current[:anonymous_api_token] = nil
- else
- @errors = ['Invalid API token']
- self.render_error status: 401
- end
+ @errors = ['Invalid API token']
+ self.render_error status: 401
end
- elsif session[:arvados_api_token] || Thread.current[:anonymous_api_token]
+ elsif session[:arvados_api_token]
# In this case, the token must have already verified at some
# point, but it might have been revoked since. We'll try
# using it, and catch the exception if it doesn't work.
try_redirect_to_login = false
- if session[:arvados_api_token]
- Thread.current[:arvados_api_token] = session[:arvados_api_token]
- elsif Thread.current[:anonymous_api_token]
- Thread.current[:arvados_api_token] = Thread.current[:anonymous_api_token]
- Thread.current[:anonymous_api_token] = nil
- end
+ Thread.current[:arvados_api_token] = session[:arvados_api_token]
begin
yield
rescue ArvadosApiClient::NotLoggedInException
try_redirect_to_login = true
end
+ elsif Rails.configuration.anonymous_user_token
+ check_anonymous_token
+ if Thread.current[:arvados_api_token]
+ try_redirect_to_login = false
+ yield
+ end
else
logger.debug "No token received, session is #{session.inspect}"
end
@@ -488,6 +457,51 @@ class ApplicationController < ActionController::Base
end
end
+ def use_anonymous_token_if_necessary
+ check_anonymous_token
+ yield
+ end
+
+ def check_anonymous_token
+ if session['arv-referrer'] == 'logout'
+ # do not use anonymous user token and let logout happen
+ return
+ end
+
+ anonymous_user_token = Rails.configuration.anonymous_user_token
+ if !anonymous_user_token
+ return
+ end
+
+ if !Thread.current[:arvados_api_token]
+ Thread.current[:arvados_api_token] = anonymous_user_token
+ if verify_api_token
+ session[:arvados_api_token] = anonymous_user_token
+ u = User.current
+ session[:user] = {
+ uuid: u.uuid,
+ email: u.email,
+ first_name: u.first_name,
+ last_name: u.last_name,
+ is_active: u.is_active,
+ is_admin: u.is_admin,
+ prefs: u.prefs
+ }
+ end
+ elsif current_user && !current_user.andand.is_active
+ previous_api_token = Thread.current[:arvados_api_token]
+ if anonymous_user_token != previous_api_token
+ Thread.current[:arvados_api_token] = anonymous_user_token
+ valid_anonymous_token = verify_api_token
+ Thread.current[:arvados_api_token] = previous_api_token
+ verify_api_token
+ if valid_anonymous_token
+ Thread.current[:arvados_api_token] = anonymous_user_token
+ end
+ end
+ end
+ end
+
def ensure_current_user_is_admin
unless current_user and current_user.is_admin
@errors = ['Permission denied']
@@ -496,6 +510,8 @@ class ApplicationController < ActionController::Base
end
def check_user_agreements
+ return if (Thread.current[:arvados_api_token] == Rails.configuration.anonymous_user_token)
+
if current_user && !current_user.is_active
if not current_user.is_invited
return render 'users/inactive'
@@ -892,54 +908,4 @@ class ApplicationController < ActionController::Base
@objects_for
end
- @@anonymous_group = nil
- def self.anonymous_group
- if !@@anonymous_group
- anon_groups = @@anonymous_group = Group.where(name: 'Anonymous group')
- anon_groups.each do |group|
- if group.uuid.ends_with? 'anonymouspublic'
- @@anonymous_group = group
- break
- end
- end
- end
- @@anonymous_group
- end
-
- # helper method to create sharing link for anonymous user group
- helper_method :share_with_anonymous_user
- def share_with_anonymous_group uuid
- anon_group = ApplicationController.anonymous_group
- return if !anon_group
-
- links = Link.where(link_class: 'permission',
- name: 'can_read',
- tail_uuid: anon_group[:uuid],
- head_uuid: uuid)
-
- # no such link exists; so create one
- if !links.any?
- link = Link.create(link_class: 'permission',
- name: 'can_read',
- tail_uuid: anon_group[:uuid],
- head_uuid: uuid)
- end
- end
-
- # helper method to delete sharing link for anonymous user group
- helper_method :unshare_with_anonymous_user
- def unshare_with_anonymous_group uuid
- anon_group = ApplicationController.anonymous_group
- return if !anon_group
-
- links = Link.where(link_class: 'permission',
- name: 'can_read',
- tail_uuid: anon_group[:uuid],
- head_uuid: uuid)
-
- links.each do |link|
- link.destroy
- end
- end
-
end
diff --git a/apps/workbench/app/controllers/user_agreements_controller.rb b/apps/workbench/app/controllers/user_agreements_controller.rb
index 6ab8ae2..9596160 100644
--- a/apps/workbench/app/controllers/user_agreements_controller.rb
+++ b/apps/workbench/app/controllers/user_agreements_controller.rb
@@ -1,6 +1,7 @@
class UserAgreementsController < ApplicationController
skip_before_filter :check_user_agreements
skip_before_filter :find_object_by_uuid
+ skip_around_filter :use_anonymous_token_if_necessary
def model_class
Collection
diff --git a/apps/workbench/app/views/layouts/application.html.erb b/apps/workbench/app/views/layouts/application.html.erb
index 1bf1e7d..cc3c6a2 100644
--- a/apps/workbench/app/views/layouts/application.html.erb
+++ b/apps/workbench/app/views/layouts/application.html.erb
@@ -53,7 +53,7 @@
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/"><%= Rails.configuration.site_name.downcase rescue Rails.application.class.parent_name %>
- <% if current_user && !current_user.is_active %> . Your account is inactive and viewing public data. <% end %>
+ <% if current_user && !current_user.is_active %> . You are viewing public data. <% end %>
</a>
</div>
diff --git a/apps/workbench/test/functional/projects_controller_test.rb b/apps/workbench/test/functional/projects_controller_test.rb
index b338aa8..840fd0f 100644
--- a/apps/workbench/test/functional/projects_controller_test.rb
+++ b/apps/workbench/test/functional/projects_controller_test.rb
@@ -1,7 +1,16 @@
require 'test_helper'
class ProjectsControllerTest < ActionController::TestCase
- test "inactive user is asked to sign user agreements on front page" do
+ setup do
+ @anonymous_token = Rails.configuration.anonymous_user_token
+ end
+
+ teardown do
+ Rails.configuration.anonymous_user_token = @anonymous_token
+ end
+
+ test "inactive user is asked to sign user agreements on front page when anonymous user token is not configured" do
+ Rails.configuration.anonymous_user_token = false
get :index, {}, session_for(:inactive)
assert_response :success
assert_not_empty assigns(:required_user_agreements),
@@ -9,4 +18,19 @@ class ProjectsControllerTest < ActionController::TestCase
assert_template 'user_agreements/index',
"Inactive user was not presented with a user agreement at the front page"
end
+
+ test "inactive user is asked to sign user agreements on front page" do
+ get :index, {}, session_for(:inactive)
+ assert_response :success
+ if !@anonymous_token
+ assert_not_empty assigns(:required_user_agreements),
+ "Inactive user did not have required_user_agreements"
+ assert_template 'user_agreements/index',
+ "Inactive user was not presented with a user agreement at the front page"
+ else
+ assert_nil assigns(:required_user_agreements),
+ "Inactive user did not have required_user_agreements"
+ end
+ end
+
end
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list