[ARVADOS] updated: 1db007eb53d0401a7a0ba168add7c4a094790fa5
git at public.curoverse.com
git at public.curoverse.com
Fri May 23 12:04:30 EDT 2014
Summary of changes:
.gitignore | 2 +
apps/workbench/.gitignore | 7 +
apps/workbench/Gemfile | 23 +-
apps/workbench/Gemfile.lock | 155 ++--
.../api_client_authorizations.js.coffee | 3 -
.../assets/javascripts/authorized_keys.js.coffee | 3 -
.../app/assets/javascripts/collections.js | 1 -
.../app/assets/javascripts/folders.js.coffee | 3 -
.../app/assets/javascripts/groups.js.coffee | 3 -
.../app/assets/javascripts/humans.js.coffee | 3 -
.../app/assets/javascripts/job_tasks.js.coffee | 3 -
.../app/assets/javascripts/jobs.js.coffee | 3 -
.../app/assets/javascripts/keep_disks.js.coffee | 31 +-
.../app/assets/javascripts/links.js.coffee | 3 -
.../app/assets/javascripts/logs.js.coffee | 3 -
.../app/assets/javascripts/nodes.js.coffee | 3 -
.../app/assets/javascripts/pipeline_instances.js | 1 -
.../javascripts/pipeline_templates.js.coffee | 3 -
.../app/assets/javascripts/repositories.js.coffee | 3 -
.../app/assets/javascripts/sessions.js.coffee | 3 -
apps/workbench/app/assets/javascripts/sizing.js | 2 +-
.../app/assets/javascripts/specimens.js.coffee | 3 -
.../app/assets/javascripts/traits.js.coffee | 3 -
.../assets/javascripts/user_agreements.js.coffee | 3 -
.../app/assets/javascripts/users.js.coffee | 3 -
.../assets/javascripts/virtual_machines.js.coffee | 3 -
.../app/assets/stylesheets/collections.css.scss | 46 ++
.../app/assets/stylesheets/keep_disks.css.scss | 8 +
.../app/controllers/actions_controller.rb | 2 +-
.../api_client_authorizations_controller.rb | 13 -
.../app/controllers/application_controller.rb | 42 +-
.../app/controllers/collections_controller.rb | 157 ++--
apps/workbench/app/controllers/jobs_controller.rb | 7 +-
.../app/controllers/keep_disks_controller.rb | 47 ++
.../app/controllers/keep_services_controller.rb | 2 +
.../controllers/pipeline_instances_controller.rb | 2 +-
.../app/controllers/sessions_controller.rb | 2 +-
apps/workbench/app/controllers/users_controller.rb | 10 +-
apps/workbench/app/helpers/application_helper.rb | 13 +
.../app/helpers/arvados_api_client_helper.rb | 13 +
apps/workbench/app/models/arvados_api_client.rb | 43 +-
apps/workbench/app/models/arvados_base.rb | 60 +-
apps/workbench/app/models/arvados_resource_list.rb | 7 +-
apps/workbench/app/models/collection.rb | 25 +-
apps/workbench/app/models/group.rb | 4 +-
apps/workbench/app/models/job.rb | 4 +
.../app/models/{keep_disk.rb => keep_service.rb} | 2 +-
apps/workbench/app/models/pipeline_instance.rb | 3 +-
apps/workbench/app/models/user.rb | 26 +-
apps/workbench/app/models/user_agreement.rb | 8 +-
.../application/_pipeline_status_label.html.erb | 6 +-
.../app/views/application/_show_metadata.html.erb | 4 +-
.../app/views/collections/_sharing_button.html.erb | 17 +
.../app/views/collections/_sharing_popup.html.erb | 37 -
.../app/views/collections/_show_files.html.erb | 114 ++-
.../app/views/collections/_show_jobs.html.erb | 64 --
.../views/collections/_show_provenance.html.erb | 84 --
.../views/collections/_show_source_data.html.erb | 44 -
.../app/views/collections/sharing_popup.js.erb | 1 -
apps/workbench/app/views/collections/show.html.erb | 111 +++
.../app/views/collections/show_file_links.html.erb | 82 ++
apps/workbench/app/views/folders/show.html.erb | 60 +-
.../workbench/app/views/jobs/_show_recent.html.erb | 6 +-
.../app/views/keep_disks/_content_layout.html.erb | 21 +
.../app/views/layouts/application.html.erb | 13 +-
apps/workbench/app/views/links/_recent.html.erb | 2 +-
.../pipeline_instances/_show_components.html.erb | 27 +-
.../views/pipeline_instances/_show_recent.html.erb | 8 +-
.../app/views/pipeline_instances/show.js.erb | 6 +-
.../workbench/app/views/users/_show_admin.html.erb | 2 +-
apps/workbench/app/views/users/_tables.html.erb | 2 +-
apps/workbench/app/views/users/welcome.html.erb | 2 +-
apps/workbench/app/views/websocket/index.html.erb | 2 +-
apps/workbench/config/application.default.yml | 14 +-
apps/workbench/config/application.rb | 15 +-
.../config/environments/development.rb.example | 12 +-
.../config/environments/production.rb.example | 6 +-
apps/workbench/config/environments/test.rb.example | 6 -
.../config/initializers/zzz_arvados_api_client.rb | 8 -
.../zza_load_config.rb => load_config.rb} | 0
apps/workbench/config/routes.rb | 12 +-
apps/workbench/public/robots.txt | 2 -
.../test/functional/collections_controller_test.rb | 80 +-
.../workbench/test/integration/collections_test.rb | 36 +-
apps/workbench/test/integration/folders_test.rb | 4 +-
apps/workbench/test/integration/users_test.rb | 7 +-
apps/workbench/test/integration_helper.rb | 19 +
apps/workbench/test/test_helper.rb | 116 ++-
apps/workbench/test/unit/collection_test.rb | 27 +
.../test/unit/helpers/collections_helper_test.rb | 8 +
doc/_config.yml | 7 +-
doc/api/index.html.textile.liquid | 2 -
doc/api/methods.html.textile.liquid | 39 +-
doc/api/methods/keep_services.html.textile.liquid | 75 ++
doc/api/methods/logs.html.textile.liquid | 22 +-
doc/api/schema/Collection.html.textile.liquid | 2 +-
doc/api/schema/Job.html.textile.liquid | 1 +
doc/api/schema/KeepDisk.html.textile.liquid | 4 +-
doc/api/schema/KeepService.html.textile.liquid | 24 +
doc/install/index.html.md.liquid | 18 -
doc/install/index.html.textile.liquid | 18 +
doc/install/install-api-server.html.textile.liquid | 5 +-
.../install-crunch-dispatch.html.textile.liquid | 44 +-
doc/install/install-sso.html.textile.liquid | 3 +-
.../install-workbench-app.html.textile.liquid | 41 +-
doc/sdk/index.html.textile.liquid | 3 +-
doc/sdk/java/index.html.textile.liquid | 140 ++++
doc/sdk/perl/index.html.textile.liquid | 2 +-
doc/sdk/python/sdk-python.html.textile.liquid | 11 +-
doc/sdk/ruby/index.html.textile.liquid | 2 +-
docker/build_tools/Makefile | 10 +
docker/jobs/Dockerfile | 20 +
sdk/cli/arvados-cli.gemspec | 1 +
sdk/cli/bin/arv | 11 +-
sdk/cli/bin/arv-run-pipeline-instance | 88 +-
sdk/cli/bin/crunch-job | 82 +-
sdk/cli/test/test_arv-run-pipeline-instance.rb | 33 +
{services/keep => sdk/go}/build.sh | 9 +-
sdk/go/src/arvados.org/keepclient/hashcheck.go | 77 ++
.../src/arvados.org/keepclient/hashcheck_test.go | 85 ++
sdk/go/src/arvados.org/keepclient/keepclient.go | 206 +++++
.../src/arvados.org/keepclient/keepclient_test.go | 677 ++++++++++++++++
sdk/go/src/arvados.org/keepclient/support.go | 255 ++++++
sdk/go/src/arvados.org/streamer/streamer.go | 130 +++
sdk/go/src/arvados.org/streamer/streamer_test.go | 366 +++++++++
sdk/go/src/arvados.org/streamer/transfer.go | 308 +++++++
sdk/java/.classpath | 21 +
sdk/java/.project | 14 +
sdk/java/.settings/org.eclipse.jdt.core.prefs | 5 +
sdk/java/ArvadosSDKJavaExample.java | 80 ++
sdk/java/ArvadosSDKJavaExampleWithPrompt.java | 123 +++
sdk/java/README | 4 +
sdk/java/pom.xml | 106 +++
.../main/java/org/arvados/sdk/java/Arvados.java | 403 ++++++++++
.../java/org/arvados/sdk/java/MethodDetails.java | 22 +
sdk/java/src/main/resources/log4j.properties | 11 +
.../java/org/arvados/sdk/java/ArvadosTest.java | 420 ++++++++++
sdk/java/src/test/resources/first_pipeline.json | 16 +
sdk/perl/lib/Arvados.pm | 2 +-
sdk/perl/lib/Arvados/Request.pm | 9 +-
sdk/python/.gitignore | 1 -
sdk/python/arvados/api.py | 7 +-
sdk/python/arvados/events.py | 33 +
sdk/python/arvados/fuse.py | 317 --------
sdk/python/arvados/keep.py | 38 +-
sdk/python/bin/arv-mount | 67 --
sdk/python/build.sh | 16 -
sdk/python/requirements.txt | 11 +-
sdk/python/run_test_server.py | 221 +++++
sdk/python/{setup.py.src => setup.py} | 8 +-
sdk/python/test_keep_client.py | 23 +-
sdk/python/test_mount.py | 153 ----
sdk/python/test_pipeline_template.py | 18 +-
sdk/python/test_websockets.py | 32 +
sdk/ruby/.gitignore | 1 +
sdk/ruby/Gemfile.lock | 58 --
sdk/ruby/arvados.gemspec | 1 +
sdk/ruby/lib/arvados.rb | 7 +-
services/api/.gitignore | 6 +
services/api/Gemfile | 6 +-
services/api/Gemfile.lock | 20 +-
services/api/Rakefile | 6 +
.../arvados/v1/collections_controller.rb | 62 +-
.../arvados/v1/keep_services_controller.rb | 21 +
.../controllers/arvados/v1/schema_controller.rb | 15 +-
.../app/controllers/user_sessions_controller.rb | 3 +-
services/api/app/models/api_client.rb | 2 +-
services/api/app/models/arvados_model.rb | 29 +-
services/api/app/models/authorized_key.rb | 2 +-
services/api/app/models/collection.rb | 2 +-
services/api/app/models/group.rb | 5 +-
services/api/app/models/human.rb | 2 +-
services/api/app/models/job.rb | 2 +-
services/api/app/models/job_task.rb | 2 +-
services/api/app/models/keep_disk.rb | 20 +-
services/api/app/models/keep_service.rb | 15 +
services/api/app/models/link.rb | 2 +-
services/api/app/models/locator.rb | 84 ++
services/api/app/models/log.rb | 2 +-
services/api/app/models/node.rb | 2 +-
services/api/app/models/pipeline_instance.rb | 93 ++-
services/api/app/models/pipeline_template.rb | 2 +-
services/api/app/models/repository.rb | 2 +-
services/api/app/models/specimen.rb | 2 +-
services/api/app/models/trait.rb | 2 +-
services/api/app/models/user.rb | 10 +-
services/api/app/models/virtual_machine.rb | 2 +-
services/api/config/application.default.yml | 15 +
services/api/config/application.yml.example | 18 +-
services/api/config/initializers/assign_uuid.rb | 1 -
services/api/config/initializers/eventbus.rb | 6 +-
services/api/config/initializers/secret_token.rb | 7 -
services/api/config/routes.rb | 3 +
.../20140422011506_pipeline_instance_state.rb | 2 +
.../migrate/20140519205916_create_keep_services.rb | 51 ++
services/api/db/schema.rb | 23 +-
services/api/lib/assign_uuid.rb | 31 -
services/api/lib/can_be_an_owner.rb | 47 ++
services/api/lib/has_uuid.rb | 42 +
services/api/lib/record_filters.rb | 17 +-
services/api/script/crunch-dispatch.rb | 20 +-
services/api/script/import_commits.rb | 9 -
.../test/fixtures/api_client_authorizations.yml | 7 +
services/api/test/fixtures/collections.yml | 21 +
services/api/test/fixtures/jobs.yml | 2 +-
services/api/test/fixtures/keep_disks.yml | 12 +-
services/api/test/fixtures/keep_services.yml | 23 +
services/api/test/fixtures/links.yml | 30 +
services/api/test/fixtures/logs.yml | 5 +
services/api/test/fixtures/pipeline_instances.yml | 3 +
.../arvados/v1/collections_controller_test.rb | 216 +++++
.../api/test/functional/arvados/v1/filters_test.rb | 16 +
.../functional/arvados/v1/jobs_controller_test.rb | 34 +
.../arvados/v1/keep_disks_controller_test.rb | 34 +-
.../arvados/v1/keep_services_controller_test.rb | 23 +
services/api/test/integration/keep_proxy_test.rb | 25 +
.../api/test/integration/user_sessions_test.rb | 28 +
services/api/test/test_helper.rb | 21 +
services/api/test/unit/arvados_model_test.rb | 34 +
.../api/test/unit/keep_service_test.rb | 2 +-
services/api/test/unit/link_test.rb | 14 +-
services/api/test/unit/owner_test.rb | 126 +++
services/api/test/unit/pipeline_instance_test.rb | 26 +-
services/datamanager/experimental/datamanager.py | 887 +++++++++++++++++++++
.../datamanager/experimental/datamanager_test.py | 41 +
services/fuse/.gitignore | 1 +
services/fuse/arvados_fuse/__init__.py | 588 ++++++++++++++
services/fuse/bin/arv-mount | 88 ++
{sdk/python => services/fuse}/readme.llfuse | 0
services/fuse/requirements.txt | 3 +
services/fuse/run_test_server.py | 1 +
services/fuse/setup.py | 22 +
services/fuse/test_mount.py | 332 ++++++++
services/keep/src/keep/handler_test.go | 438 ++++++++++
services/keep/src/keep/keep.go | 304 +++++--
services/keep/src/keep/keep_test.go | 5 +-
services/keep/src/keep/perms.go | 11 +-
237 files changed, 9256 insertions(+), 1860 deletions(-)
delete mode 100644 apps/workbench/app/assets/javascripts/api_client_authorizations.js.coffee
delete mode 100644 apps/workbench/app/assets/javascripts/authorized_keys.js.coffee
delete mode 100644 apps/workbench/app/assets/javascripts/folders.js.coffee
delete mode 100644 apps/workbench/app/assets/javascripts/groups.js.coffee
delete mode 100644 apps/workbench/app/assets/javascripts/humans.js.coffee
delete mode 100644 apps/workbench/app/assets/javascripts/job_tasks.js.coffee
delete mode 100644 apps/workbench/app/assets/javascripts/jobs.js.coffee
delete mode 100644 apps/workbench/app/assets/javascripts/links.js.coffee
delete mode 100644 apps/workbench/app/assets/javascripts/logs.js.coffee
delete mode 100644 apps/workbench/app/assets/javascripts/nodes.js.coffee
delete mode 100644 apps/workbench/app/assets/javascripts/pipeline_templates.js.coffee
delete mode 100644 apps/workbench/app/assets/javascripts/repositories.js.coffee
delete mode 100644 apps/workbench/app/assets/javascripts/sessions.js.coffee
delete mode 100644 apps/workbench/app/assets/javascripts/specimens.js.coffee
delete mode 100644 apps/workbench/app/assets/javascripts/traits.js.coffee
delete mode 100644 apps/workbench/app/assets/javascripts/user_agreements.js.coffee
delete mode 100644 apps/workbench/app/assets/javascripts/users.js.coffee
delete mode 100644 apps/workbench/app/assets/javascripts/virtual_machines.js.coffee
create mode 100644 apps/workbench/app/controllers/keep_services_controller.rb
create mode 100644 apps/workbench/app/helpers/arvados_api_client_helper.rb
copy apps/workbench/app/models/{keep_disk.rb => keep_service.rb} (70%)
create mode 100644 apps/workbench/app/views/collections/_sharing_button.html.erb
delete mode 100644 apps/workbench/app/views/collections/_sharing_popup.html.erb
delete mode 100644 apps/workbench/app/views/collections/_show_jobs.html.erb
delete mode 100644 apps/workbench/app/views/collections/_show_provenance.html.erb
delete mode 100644 apps/workbench/app/views/collections/_show_source_data.html.erb
create mode 100644 apps/workbench/app/views/collections/show.html.erb
create mode 100644 apps/workbench/app/views/collections/show_file_links.html.erb
create mode 100644 apps/workbench/app/views/keep_disks/_content_layout.html.erb
delete mode 100644 apps/workbench/config/initializers/zzz_arvados_api_client.rb
rename apps/workbench/config/{initializers/zza_load_config.rb => load_config.rb} (100%)
create mode 100644 doc/api/methods/keep_services.html.textile.liquid
create mode 100644 doc/api/schema/KeepService.html.textile.liquid
delete mode 100644 doc/install/index.html.md.liquid
create mode 100644 doc/install/index.html.textile.liquid
create mode 100644 doc/sdk/java/index.html.textile.liquid
create mode 100644 docker/jobs/Dockerfile
create mode 100644 sdk/cli/test/test_arv-run-pipeline-instance.rb
copy {services/keep => sdk/go}/build.sh (85%)
create mode 100644 sdk/go/src/arvados.org/keepclient/hashcheck.go
create mode 100644 sdk/go/src/arvados.org/keepclient/hashcheck_test.go
create mode 100644 sdk/go/src/arvados.org/keepclient/keepclient.go
create mode 100644 sdk/go/src/arvados.org/keepclient/keepclient_test.go
create mode 100644 sdk/go/src/arvados.org/keepclient/support.go
create mode 100644 sdk/go/src/arvados.org/streamer/streamer.go
create mode 100644 sdk/go/src/arvados.org/streamer/streamer_test.go
create mode 100644 sdk/go/src/arvados.org/streamer/transfer.go
create mode 100644 sdk/java/.classpath
create mode 100644 sdk/java/.project
create mode 100644 sdk/java/.settings/org.eclipse.jdt.core.prefs
create mode 100644 sdk/java/ArvadosSDKJavaExample.java
create mode 100644 sdk/java/ArvadosSDKJavaExampleWithPrompt.java
create mode 100644 sdk/java/README
create mode 100644 sdk/java/pom.xml
create mode 100644 sdk/java/src/main/java/org/arvados/sdk/java/Arvados.java
create mode 100644 sdk/java/src/main/java/org/arvados/sdk/java/MethodDetails.java
create mode 100644 sdk/java/src/main/resources/log4j.properties
create mode 100644 sdk/java/src/test/java/org/arvados/sdk/java/ArvadosTest.java
create mode 100644 sdk/java/src/test/resources/first_pipeline.json
create mode 100644 sdk/python/arvados/events.py
delete mode 100644 sdk/python/arvados/fuse.py
delete mode 100755 sdk/python/bin/arv-mount
delete mode 100755 sdk/python/build.sh
create mode 100644 sdk/python/run_test_server.py
rename sdk/python/{setup.py.src => setup.py} (82%)
delete mode 100644 sdk/python/test_mount.py
create mode 100644 sdk/python/test_websockets.py
delete mode 100644 sdk/ruby/Gemfile.lock
create mode 100644 services/api/app/controllers/arvados/v1/keep_services_controller.rb
create mode 100644 services/api/app/models/keep_service.rb
create mode 100644 services/api/app/models/locator.rb
delete mode 100644 services/api/config/initializers/assign_uuid.rb
delete mode 100644 services/api/config/initializers/secret_token.rb
create mode 100644 services/api/db/migrate/20140519205916_create_keep_services.rb
delete mode 100644 services/api/lib/assign_uuid.rb
create mode 100644 services/api/lib/can_be_an_owner.rb
create mode 100644 services/api/lib/has_uuid.rb
delete mode 100755 services/api/script/import_commits.rb
create mode 100644 services/api/test/fixtures/keep_services.yml
create mode 100644 services/api/test/functional/arvados/v1/filters_test.rb
create mode 100644 services/api/test/functional/arvados/v1/keep_services_controller_test.rb
create mode 100644 services/api/test/integration/keep_proxy_test.rb
create mode 100644 services/api/test/integration/user_sessions_test.rb
create mode 100644 services/api/test/unit/arvados_model_test.rb
copy apps/workbench/test/unit/job_task_test.rb => services/api/test/unit/keep_service_test.rb (61%)
create mode 100644 services/api/test/unit/owner_test.rb
create mode 100755 services/datamanager/experimental/datamanager.py
create mode 100755 services/datamanager/experimental/datamanager_test.py
create mode 120000 services/fuse/.gitignore
create mode 100644 services/fuse/arvados_fuse/__init__.py
create mode 100755 services/fuse/bin/arv-mount
rename {sdk/python => services/fuse}/readme.llfuse (100%)
create mode 100644 services/fuse/requirements.txt
create mode 120000 services/fuse/run_test_server.py
create mode 100644 services/fuse/setup.py
create mode 100644 services/fuse/test_mount.py
create mode 100644 services/keep/src/keep/handler_test.go
via 1db007eb53d0401a7a0ba168add7c4a094790fa5 (commit)
via 675794872a5d064cf0a8177d662555c04b0dae51 (commit)
via d5823126a51b7c31915e01fee100abe9468014e5 (commit)
via c2e70e05178c9569e9de2ac5b3ef47440c49efc5 (commit)
via 3ba5aa15ea0156a4fce63dcb43b7f972b4c760df (commit)
via d54a48fa6fe94e9b80bf32c1d357e4dc3b3d67c3 (commit)
via 1b3750c9ffbec7a76b374023188c5c13882dc651 (commit)
via 25bdeb97230abe28b9d5d7b13aa72549d93df87b (commit)
via 45216b83b108a3c48cdd8b1aaf898ccd93188507 (commit)
via 32eafceeb044696ac7db49bbe1d6329e0e3785c0 (commit)
via 64d339fa3eb693908ea107a10a4c376ba3b51d7b (commit)
via 1f43dd857829bd1134837c43a8ac5d653c0c68b1 (commit)
via 123ce64a39849224481a67cc400a04c5022b639f (commit)
via 52056c365c8936e34bc6b22a01bcacb556737914 (commit)
via 83277602806099428b859b88745ad85836cd6ee4 (commit)
via a2c261dada5b47077c7930a2133bb000631fab66 (commit)
via dffa580d39b977746f6950b835b78b949a862c9d (commit)
via 1924b28c8f715bc08752fb219d1fd8145ccfe84f (commit)
via 0bec8ec8a130cb3af013b6097cf322938fce5671 (commit)
via fa6b0b65fb71b66e36f982f4f25e9751672d0834 (commit)
via 661b2bcd6269fae643fd7d0c46649715716959eb (commit)
via f876a32276a73d89ab695e5954c9ea3816b38db9 (commit)
via 2dc7f15f81ea7f460114482614d8ec5814c36fbf (commit)
via 35cd1ab03e06910a2536bb473529511b8af20b94 (commit)
via 49d953403625ca145081f9ccd914e70d49e51d49 (commit)
via ebf002120164e185691b6bf418a17b23124614a8 (commit)
via 1bb9f9ca3ffe077f2d90d7de65fbee37a717ef23 (commit)
via e1d71c83e17ba6d06e2442ed775f7efd4ea32d84 (commit)
via 735a268880783acc77a2b99a5ac32c819c154ad9 (commit)
via 46e29d7fbf2628a01cb31ff7117732293129fd65 (commit)
via ea4b289bea3baebde1d23bbf38ded4e8da7ff298 (commit)
via 8cc0ba260202de5627af49691d259928ad7ffcc6 (commit)
via 43f38dbf96127a4036be5e8b01f9e82d825ad949 (commit)
via 4b6ae0c2b418fd3192b8248b3e8a614502c47060 (commit)
via e5b3a58e1106fe71d781995560f8b197dbaecbca (commit)
via e817beda3c9aefd99b1ce9b9c77cd2f346e14a01 (commit)
via fc16a366bf1061bfc2dc08ab1477c7febf8c3c5a (commit)
via 9a86712b5b6ca3490739e5b75d809be4c853e9a3 (commit)
via c6a6693dc36615effca5e3363b81199362007c59 (commit)
via 38cef39fbdfeb8176e4c755d12e43a450e868439 (commit)
via 2f32f3483d18e9a89a8b5c13e022495c8681db04 (commit)
via 3986815ae5e7e61c48f3ed979c32358710ef7e20 (commit)
via a2273675f29a0f85cb80e62b3742e82d63c365e9 (commit)
via 64aac6153e1819738d9d80e156572aeb9bf07f97 (commit)
via 2768b056f5d99952d2d2c4ba8cd1dfbb898901e3 (commit)
via c965f26c02b0f358eccf6989e49703d173206486 (commit)
via f1a04b3e3c61cc92501d18863ccf0abb162f9855 (commit)
via 6d1b822d5a168166deb44d4256bf0abcfd618c67 (commit)
via 9cdf7a2f51489403a488c3d06cf252a36b8e4198 (commit)
via 040f1c94dfa1a53356d24e77afdbc0f2e5cfe91c (commit)
via ab710b74b2751f9a0d4eb5c5f950c6bb04865e79 (commit)
via 10bcbe8343f6f91f3c8e338a4a53766f7ba26ef1 (commit)
via 286c3627d978a7862b7f7eea366aa48ab930786d (commit)
via 2f27ee200f6cc4c97d30084e34330efef2068ebf (commit)
via 9c3beb526fe3bdfd6769abd0def5a1634074d353 (commit)
via ce2d2f5807822534756e52ac04bc272dd572d13d (commit)
via 50a277569ad6277d95b7e3be83ddefc7b92661f4 (commit)
via aad9cd74e61cff985944c400c40fe3f85907a1e7 (commit)
via efb58099eebde5bebb4cbfba9ce4ba70a142fc56 (commit)
via c3367d7b827035d0cfc3418bc028a67142696e13 (commit)
via 941bcf698f1cfb498510a13f23d3c9d403b0435f (commit)
via 7ed1dcf8b0bfa8fc78f228a07b2318094b68abea (commit)
via 9482cf9f326ce64f9ea100aa34680278bdd6018e (commit)
via 5da718633e3663073a624db78274cd69e5dfe6e0 (commit)
via 4e9567a57ed7af343e24eeb4dc403a1eb73b1f81 (commit)
via 90744f405977dcfac40d5dea3dbe79391080b80d (commit)
via 471cc718e0cf5a1846feb444887c35c285f33cdf (commit)
via 043002e8d0dfd2a5dbb3cfc135ac21732c199c05 (commit)
via 278fe7048f9035b350a60e032432c9119f151add (commit)
via 7a873b4adfd0a7f94a4e7dfa64eb088caece46df (commit)
via 7b4d7faff279490a40190208bd571a86090e2bf5 (commit)
via d3b11ddc2506de37b8e6538be69237d6d2a60a4a (commit)
via c3a88cbf511aa0954dac271ce6bda9c6e4f3191c (commit)
via 4ec57745d2106e955fea4442c9eccb2fce7246c4 (commit)
via 83c873af757aea4217648cc5a909fcadcf3e93e4 (commit)
via 949c388c5ec3bc4f8cc6b3d503c11dcd20e5bbd4 (commit)
via 03395937ba05b9e3192e346a355c691f45cc7c85 (commit)
via cff5301bbc1e1c8f8421fb56dca5a76dfebb058c (commit)
via 2d9f17f33a9d8737d97705b8b77e3e1c05f7b411 (commit)
via 67176a2637ca895015908c7c3bdb1ab7688c1b2c (commit)
via a797b27604a0f5a277d73e2d3522dec033fd4ecf (commit)
via 6ebfb077cbe7357aadccc7ae4f803c61d66d0279 (commit)
via a792aabc3159439c66098935fea2da685eee7ed2 (commit)
via 7ec5dedd6301ae84db941de986f2f0eacc4532e7 (commit)
via 130bd6ec07cf6844861e49602d33b07dd2402595 (commit)
via a46e35694b573fd5c9b355c51323992670fc87b4 (commit)
via 93842871ab5266e45fb6a29da89462af102a6384 (commit)
via 85ab544a82c685a74d814a0e10c48624810be0af (commit)
via bfa9ee952c1ae3f03fe2f9fa781a132411963030 (commit)
via ce5b843c32f6ee74f02a40044073dd4288d16dee (commit)
via fba37ca64631be9e0bdfd17ca70d85dd2c896bfa (commit)
via ea9592e911a3ccdbbbfeed8812b67e968fe1cc5f (commit)
via 3dccfa028282d8b667a7b447ea061b7eecc8618f (commit)
via b12f667daa270a4e3c656d16f30620ca763f9578 (commit)
via 27f5c1635d56c3f3cb6c5ef069c28db939eec2a1 (commit)
via b534e4a2b167185e59ca657369fee06e5effa6cc (commit)
via 7ca81caa537132acf4be86811e300b8a6ed3baac (commit)
via e678f2a0e5d223ddd5b2a6c6a8d14a8afa6d463d (commit)
via 2b19cf9f9522dd0e8774031a54ce695e73fb72fe (commit)
via fb8dd22df54d0c8f87e97f41e1a1677741a47892 (commit)
via 96b9b6b0a45ffb1965412fe9a12e23d10260ea8e (commit)
via 900f179c96733c2ce9140b2d7767f97feb9eaff6 (commit)
via b093bbdccf67d895337e47bf32b0ab6f22bea632 (commit)
via f71c9e59bfff91da4b89050ceae27dbe3edcdb6c (commit)
via b91db14a4dced9d6ea124e86be3c796e6f2c8e8c (commit)
via a6c79a723f05e11c3b40d459e902eeca894c27b8 (commit)
via fb7f238945e33b07f1c80b0623315c1ecf86bca2 (commit)
via ff60e33ff3d9ad8144b9c269d12d1e5f18455416 (commit)
via 09559ebbb9f52c8b8a47e21d0a9c5720f3a2b7c6 (commit)
via 99cd188a0cbd9143b690750e21abc8d8d5e6dbad (commit)
via e5f3ce60249a14f4fafdd9e0f31be45d1886a888 (commit)
via e6e94ca43f788b28d61c03f81b15ab5647f22d4c (commit)
via acef63e2e3e629da8b6825f33e6de7bf6bcc4fc2 (commit)
via b08f16445f02a02ea9246094657e93b354999b38 (commit)
via 3e6368d077fa4831f93255e271a18842788183fb (commit)
via f54395a1b98c4146a795ce7b18e04c23630ab631 (commit)
via 4742810338ec15a0654d18532f97f5ae41d48c5a (commit)
via 67f17818338153fc6f7b0c65f51e97bbb16f0cc7 (commit)
via d0b6bb76a0a7478794faebd3e1e5ab94b717596d (commit)
via 82393afcb6101fe6f601f6a752589d10b0909f8f (commit)
via 8ef62a19514b4cc0dd886b01902016f19be09ccf (commit)
via 2a493a9215f604c63ab7bc6f0e0956d10af8ef10 (commit)
via 66d5cdb1f34d614e5ecf1da5ef6efcad3a5a51ab (commit)
via a6f78c31607b37d207dcebada38ee05335deac50 (commit)
via d836cb04ab7e577b3f7896d6b49e78b97ed832f8 (commit)
via 7ff85869345089297f5196c4be3cee6f7ee03c6b (commit)
via 100e1ab71d64e21f1c21de2fc305a6f92fa244dc (commit)
via 8aaf3a61c6981160eaa779fb32064895de00e5a6 (commit)
via d455c8373cf39f4310d2b0e13e7a9d02aca0b2ab (commit)
via 81b517450a657fc56b91b25426505bf9b3937db7 (commit)
via 90bf8cae5f1ba931c7cc3be7864cad8ecca1ca5e (commit)
via 95db3bc262b44b508462e1b2d9ce7a55c5ba1ffc (commit)
via fb95d0d2d09c9537f5bdc503e51cf4f091d02c46 (commit)
via def9a846a5d9dd91cc0a1ed9c50dee35b81425c0 (commit)
via 33d63c6d42e824744305df3e720f8e9cbcc87d78 (commit)
via fadf2b0fe1240f607fc91d65d6831621262afeb1 (commit)
via cf32ef421c037692e7ae896f695c61d8e3670f01 (commit)
via 6022ddd1b07217b9b4f31e73493fc259bd19b696 (commit)
via 28195ca73b4c86e0f17ce2db74f3d5669d344e23 (commit)
via 717bee7044a2cd44678e13e116ec1be2a83cfe60 (commit)
via 952599738f3c9f8901c895858865fc90b5e30c1d (commit)
via 34ac761cb1fd2b7b9438765d14ded85dfab0453b (commit)
via e19b02f69914c086f979ec31eb603bb3b456cd15 (commit)
via e7ebb0cb4f642fbb2297e1ed54591244cc886f81 (commit)
via eef1936a73c7c85ba530cca028230241f5171333 (commit)
via 8dea7244cf5e50b9fa70bec15b1db3fd2cdd03bf (commit)
via 9da4a83c2cb602e872bb606503fa438dd3296864 (commit)
via 2d79630f56a010aa0b7544b876c7c31b122c70af (commit)
via 3c3bc28bc6c991d8111dd66bfef6fe310e00f232 (commit)
via 949e27e0dd0a97cf78f0b90636df387fa0d65be3 (commit)
via b20333af04a3507b85c52cc4e50a0e2c3fc04433 (commit)
via a7100af369a892a7f38eb2875320a7c742ec4da8 (commit)
via 60c604d8e89501af180487ae7b39c1e25a66c8f3 (commit)
via faf355bede4c4a9b01ef5658fa925cec6e4b503f (commit)
via 7c21045a213c5cc8846a263124271c93d38d78b1 (commit)
via b249529bb02dd34e54f8816222ebf81d778c957b (commit)
via 568d941d3fe4bc554af0bca6c1dc4d9fc66ce999 (commit)
via 179c431787943f3711f2127d127c33a831378b06 (commit)
via 4556f61d8f4ec294afa7980d1b00882e2a1ffdfa (commit)
via 1a844d06238368c9d5c946a34c0c52485de1c435 (commit)
via dc068f04e966c35eee87af8da280bbbeb9ba3595 (commit)
via 8fa8b34bcc334388d8c885e3f0e192503fdb7616 (commit)
via 04ec74cf7dedfbb0becea0e0cb5018ccf55a31eb (commit)
via 1ca9c477ffa476305a920a0df7ae1e8d5b69c8b2 (commit)
via 087773f25a3df2d35e402f1afc6c7204a0852727 (commit)
via bfd037dee4c82f355816c449dd25921fc2923837 (commit)
via ef47dfeb871015d9da6d5e2e0a04100c2e9e8eee (commit)
via 383aa9f906c32876a71599024084283627070adb (commit)
via f990e6880050eafaf3b6bfd063e36aa016e8682a (commit)
via 28fe4303b1c04142bf0939b05280749e590673f0 (commit)
via f900ccf514a3653a64002fe07d9ce5b16adcfd51 (commit)
via a87ad3026e4f7e1cc2e22082a523fa7143388c88 (commit)
via b2a8e117cd2a02851c69136f76a1e63005386f1d (commit)
via 97d8fa64264069fe6d8ae6c8131fd3cc2f347189 (commit)
via 2a3f67fa270b9660d4dc17b55c48fa781bdba4bb (commit)
via c501af3c5d3216c2ca56ab77f4f05bd74198c622 (commit)
via 5a977746e6df04e3ce1578299e98ed7ec645fcdd (commit)
via 0c1af8806516569044c7354ff58f7371a510594d (commit)
via 16af0b22def5b80a1861788907a2fc45b14e3273 (commit)
via 15945ebab4fc71980b2c6ddceb149a3d7365c29e (commit)
via a9eaabb02fe7110f0e16bcd7f27d1a0cd5eab08b (commit)
via 3aaf11c2dd372b5d34ba317a1a4b761d263f86d6 (commit)
via 6132d8efbc522b71d0084160abaaa87031678bdc (commit)
via eed7af8f901adb263c870a2277ec166467a28d77 (commit)
via d97e3de81c48673b0e1d3927edaaf0e560a9a2ba (commit)
via 14c312c452e0e010d617c02a33b94a178632ac26 (commit)
via 06a0c1d9f2e6cf1d5a9fd00b53071d857252f9fa (commit)
via 5c3c04ad25cfabaa860bb0ea3f3dc078a9562008 (commit)
via 5e968d7875c62a6145b7aefc39f070d14f4c97e8 (commit)
via eff3277fa6800bbc4ac81654f8883bbfd3a85d30 (commit)
via 002f863605469cee7e112f4c16a78e3b6278672c (commit)
via 6c2a704b7a2d721087976b2b8ec4f22cdaf44178 (commit)
via cdf7b162906cb37d4ecf88ff6c72433bcdd8fc84 (commit)
via 722862465129f1f30cbb2432132140883d31b4ca (commit)
via 27fa0d391eb95008acf41ba207bc13b8c4fe794c (commit)
via f7f61eca36d66a723b02ac34db888f5fbdc63fc8 (commit)
via 2de827e57ae9ba1b0d322199d071ae900a5b7e0c (commit)
via d9aa5decc6edce30285df049277de2cf2c138c26 (commit)
via 222ce386e36b3d146e718a5d2f64a95fb30996bb (commit)
via 26d69329e87e343b84a132a4754068aca66ad132 (commit)
via 036a701b45399e0114eed5b0e1ce6b478c614534 (commit)
via b4516edf0a7cd1b584442953a8c965fc65104906 (commit)
via a3cd0039e84373541d6648b76647457be5a7e098 (commit)
via 8fcba3783d9a79bb18a00d339f9b3222f1eccd7f (commit)
via 1c6bc4bcac86195a120e6be564703e7d2133dbe7 (commit)
via 71143e41dbc8755d5ccb97990525bbb05aad69e9 (commit)
via 31c711afc4ff8a1728aeb3e5f405a131047671c9 (commit)
via 88590483c4d24904267b550cbb3af7d5a11d8953 (commit)
via 5b252752cdfd8b129d10913f7e2ec7b47f544ead (commit)
via 2376147b3d039acf08456a53015d59f04eabbf82 (commit)
via fde1e4f00e82c7a776892c1ab9c5edacf05dc1c3 (commit)
via 97252f1f34486073c778c0a1c9de25f2f275cacd (commit)
via ff6a6fb89b42d17693786be6405c267bee445c4d (commit)
via 7fb83a3380e62721801a4980c48ba78208c7b2e2 (commit)
via 45938e41f983ce41d8b55c3f980b7f31bc269124 (commit)
via f91c73aba940adf1e9fbd530d102931af45a63c5 (commit)
via d5c8f2dc3faf77da783c2016630808f6351a4d6f (commit)
via 1a4846b2e916d3cf3958cf77117d710f72fa61cf (commit)
via 297f48f2e6233da1e61cda57af30c9c6b64f0908 (commit)
via 11b48e1b182cef419918d4df1a4998001d665a9a (commit)
via d70ff3d064c9a6da8b8678b249abf7f4b93b6370 (commit)
via 1d5b46697b5d7c68b0bb159fc570ed63c1e3acc3 (commit)
via 9736526e7abfd50eb8f18293f8ac312bf61937e4 (commit)
via 52a3016af3ff21b8fb5402bf70d0aab07f5ee486 (commit)
via 69141a18be1821daf4816046e65b2aea75a975be (commit)
via e65b2e685833e1d850c8d671fd1df9d4e4fea4a3 (commit)
via fdbea9e3c225a3184f8f7c2fac52abde643603c6 (commit)
via a04d67ef0823d6c87e8515cfe6cf88793ef5e3bb (commit)
via df2ce01533175ff7190a5d13fdca4b61f22befd3 (commit)
via 638d136057f4d9ed19f132075079da396217d6fd (commit)
via f493dd4dfab89c228fab05e2b46851211c7fc586 (commit)
via ba764a7a0878b9cf0dd8d22ad4e12774d8e5f550 (commit)
via b63b4b51a7bdaa38960e0b4428141c16c0a07d7a (commit)
via 2b8857f631f58df2baa93077185fb7a5a29c6aad (commit)
via facf07110e28fe552342fbad623d621b43e22b99 (commit)
via 6f3853aef989e8c2243159bbf0ea352948ae4878 (commit)
via 67b4630e47e0f70e3cdbcaa8a7d039543e3c6a34 (commit)
via 7e049a91425a51398f38e6b1ee839a4070483267 (commit)
via b2979b0db0b6b5ee7ad3001ffcc8f76ff4d96f05 (commit)
via 733269172b6b9802c2a00a8f8d19d6a520546a67 (commit)
via a2104e385abe47470dd42836a66360bf62afa57b (commit)
via 17b0eecaa5dd1e0ac006b6ba757f6aee251a139e (commit)
via f45ce8083a98e29720cfba01e8043f6465327c40 (commit)
via 35fb8a1cd59d1dc0ad4be89c64e8b48c750faaeb (commit)
via 0ab985ff1da223e4065273fd1a549284ff3454ee (commit)
via e6aa5b48be1209d74c4c69be3eeca549f02418f3 (commit)
via 2e524eb008f8b70ca1263ccde460365109c66a90 (commit)
via bdc9139d17c184a58e5088270f2ce6ba361fb8a7 (commit)
via 3ac9fd0c91fe202a59e7c3611156bb1a9b8118fe (commit)
via 01436e8b76300759ef4bfea30d7798445d50bf60 (commit)
via eee2c981d6a29eb7f15b8957570bbf8515d3d947 (commit)
via b5f193aa657134822d4df67cabc25c631926395b (commit)
via ff1e29f702d4f3036f5af014ad6e423b886ed0bb (commit)
via 66f1ae7a9be590461592199c6d3646dbc4eba786 (commit)
via 4bd14ccfa216fe1d115772508ac7d7c64ec59a48 (commit)
via 7c8bfeb8d19db4f27b5fb5fd78e0afa3b7d07a89 (commit)
via 1b8120689041941db937883c3132a9c6819b56c5 (commit)
via cbf0429a8a5edd2f8a8d9b01ce39334e07e56bf8 (commit)
via 121fb6bdcdf3731903ce3d21c0a284c20e6a6fca (commit)
via 6abcf1f6bdb82b176a9fbb48b6c7cefa64970a9d (commit)
via 8624ad6e91ed73876bd4f12fe8df2387e3e6330e (commit)
via cbcb69fcbf73a1bde0ae78be8c0ad25f84c3f7c3 (commit)
via 611223d58fcdf5cc6ba434efed2c1ee9234b29a7 (commit)
via c6c3d3d23d1cca50381570d0558470d47e71fd95 (commit)
via 2b03b05de753509c026b4c67857cd49a11f44dcf (commit)
via ccdaeb4b5b55c0e97e4fccc21445e5b9cc53dbe2 (commit)
via 17d83fff53eea039e1483f86efd4a66056fed647 (commit)
via 67fef1f4bec2d314c9d37bb05c55ff1067ba7b49 (commit)
via a998a520deb859216271567f1bf3623f310cf2d6 (commit)
via 51928265eaf8ca6b6319dd231d74604ceb3af287 (commit)
via 181fead894b660893e0e09274e609ec8ee4230a1 (commit)
via 647c8b8c47ef521046bea7675af84b621c235e0f (commit)
via 6f6235983d91e0b9fb5660d0a2825f510bbdac73 (commit)
via 54897c8f978f127a44c0a9d20c1e87cea840b21f (commit)
via 51af13e97bc4725e8cc010c72bbedb667b0a0e0f (commit)
via e9359f96365d629a688cbbc2f7d063fabf535a9f (commit)
via 228f1ecbb98438fcd5bbe59465c830be637d38ce (commit)
via ee056b0ceb9ce569e0ee9a64b41ead728636772a (commit)
via 3e237c89424489bad02cde9be33f715269e0c6b8 (commit)
via 00ba956a67072f8b4a77fe71d3dc1e4dd8f70e98 (commit)
via 98fd371d846022d8ccc25e8234d913e436ecce69 (commit)
via 9c444153e80d3a872e11ca5898491c747a881a4d (commit)
via 0f7fa46c1311ddd2aa6e7f0c280b98a6d69d4ec8 (commit)
via 2e04dd8e9f872506922744dd449cccb99b55a847 (commit)
via 752bd0d292c7fd6eb55b39cdc9d7373c7f35e0ec (commit)
via 67c754c065dbe79e14a3c60640e6e604af32d0bd (commit)
via 77c4def0b319e3720dba05a3c1fb0ab78323f227 (commit)
via 65c155b7f691ce6a885125618bde3c9d68f6b47e (commit)
via d433ba0f548414219b3d976125e1ea530e1ba9ef (commit)
via d17ef1d036b4262f6c6c40324cc56d04d26581d3 (commit)
via c436da861845723ab18f56dba96052cf2569e539 (commit)
via 6a7ffd91ec95950588b95d3f29599d07d8447c16 (commit)
via 22233bfa18060d000e303d7734ec3016f7e80c8e (commit)
via ebddfbe7fbca80ecf852bbb20af9c6b584394691 (commit)
via 603bccd66ac868c2accf9dff9c3ca6b7feeed962 (commit)
via 1f763a5b1ad5c65a3265b4284958ecc0fe336f50 (commit)
via 9143c3ec039d6c89512055f70c2fcc6e1065f1d7 (commit)
via 415347a3354031b48c22cae56c7bbfdcb76d607c (commit)
via a8918e636507200148758302dc6b9a081dc2f206 (commit)
via a74ae790b5a0682fa00423626103482c145e1b91 (commit)
via 66d12ae6dc72d45cc3cb3fcc007cb41371371616 (commit)
via f1b5f32b00d481e06d600cd6009d0995ecd19699 (commit)
via e419f135d46050250fdeb10b6e2a2a254caa85d4 (commit)
via aade22d7587e9f5921edb18ad76792a60eaa92fb (commit)
via 2e9a14d193db2948e14804539494f3b2384a87b8 (commit)
via ba4fcbd29b2615d9cc64010d756de49eac5109a5 (commit)
via 8ee3fe6685a716918a403f559c626c3b38e411f2 (commit)
via 2e273679fbf3f73ac7b7cfcf9ef8380047e959a0 (commit)
via ab5ded7cdf302ad156c58d47f59ab07e3a14ec69 (commit)
via abcde4a0bed9e80fc0925e70d151c7893043bc82 (commit)
via c13b9d5300b7f778e2fc05f9d043db4122d15aa1 (commit)
via c7fed8bfbd8a0e6edf83142b50bed4fe53c10c5c (commit)
via d28bf64e878b8d45e1ace6409e94027a039d3909 (commit)
via 72493a2fef971fc685ecef42c2b697338da69d2c (commit)
via 4d1481ed38e238e2e39d37775cb8cd86150bd04e (commit)
via c4fcddbe2a01ebbc3a4898dfa8744eb6fc45227e (commit)
via 84c471b1cfb20116b2d7d26215c2517cb57ba53f (commit)
via a5034fccf4a829a36d6e2670a9f62e4f7a545f2f (commit)
via 72c312b352a88740a44fba9e274d72bbabb489a7 (commit)
via ba4693cda66632d3da1a711b6910441958ecee01 (commit)
via 2e5fef753892523984f18c26fc16cfd599115f34 (commit)
via a0a7b1a0c6f43a80449a76c00fb0c30858d38233 (commit)
via bfb190a4c3f5bd995ccae37536c3234b14eaf3ed (commit)
via 389f092ce9dc3a08245530fcf70d535783e62813 (commit)
via de9903cfc08ea7c3da459e7c4ee5a744d52a7c89 (commit)
via d034adbaf26a19e8fd48124cadd5108d2d3de642 (commit)
via a3650fa043500139ac36587a4b61ffed1a2dc1a3 (commit)
via f7538ca2df4a43ff60f87675f52a59edacfcdc7e (commit)
via f4925bb0e7d9de484579b71087f181b9dbea5bff (commit)
via ab66542f7c9c2dd4909e1bf3d03ef5df5f95a6f9 (commit)
via ec4e2b3707c030dab6081db499adc5ac369e61bd (commit)
via b189f5ed7a6fd3585535b9d9d3d587115cf383e7 (commit)
via 2fce84531f36daa2323276f0c6b147efe82852ec (commit)
via 5254bebf574f0f72bb0321e944d089ad6f6c25e2 (commit)
via 42c9be2a3187291502efcebefc09ce603fd31106 (commit)
via b586267c7ff0a5973ecf2f83b3fa5eb452669cfc (commit)
via 4efaeba6eb371d03aa8c8f052b63c2b3404de063 (commit)
via f76947a7c1ba973a11e563b0977d54a2ece2ce38 (commit)
via e3ce426fda2e7d2283d7092f988245c6900c8949 (commit)
via cd2672dc235efaacd533aadeef489994fe684a25 (commit)
via 40cc2b01c2a3ff911549c2d31c8195905109633d (commit)
via 74236320d68bf092f7f76f7ccf4f7a974735c6ab (commit)
via d0bf7a1ff103285e54433d3bcb67c2138b534542 (commit)
via bb6f6fb4021045b86ef58b3a975cf60b58807fa2 (commit)
via 264c7fdb6c651ef73cfe4f0a280bf6672846eada (commit)
via 1ea7294edb4aa80f13d805ef29875a39caab471c (commit)
from 8b030cb82d414bfa0559a205c150f4bfe792caba (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 1db007eb53d0401a7a0ba168add7c4a094790fa5
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Fri May 23 12:04:19 2014 -0400
2044: Sharing link now shown in "Sharing and permissions" panel, no longer uses
a modal popup. Produces download link that is confirmed works.
diff --git a/apps/workbench/app/controllers/collections_controller.rb b/apps/workbench/app/controllers/collections_controller.rb
index 3e981e1..1d71041 100644
--- a/apps/workbench/app/controllers/collections_controller.rb
+++ b/apps/workbench/app/controllers/collections_controller.rb
@@ -171,6 +171,12 @@ class CollectionsController < ApplicationController
end
end
+ helper_method :download_link
+
+ def download_link
+ collections_url + "/download/#{@object.uuid}/#{@search_sharing.first.api_token}"
+ end
+
def share
a = ApiClientAuthorization.create(scopes: sharing_scopes)
@search_sharing = search_scopes.select { |s| s.scopes != ['all'] }
diff --git a/apps/workbench/app/views/collections/_sharing_button.html.erb b/apps/workbench/app/views/collections/_sharing_button.html.erb
index 36952d6..b2ed43a 100644
--- a/apps/workbench/app/views/collections/_sharing_button.html.erb
+++ b/apps/workbench/app/views/collections/_sharing_button.html.erb
@@ -1,8 +1,17 @@
<% if @search_sharing.any? %>
- <% linktext = "Shared" %>
- <% btnstyle = "btn-success" %>
+ <div>Shared at:
+ <span class="pull-right">
+ <%= link_to "Unshare", unshare_collection_url, {
+ class: 'btn-xs btn-info',
+ remote: true,
+ method: 'post'
+ } %></span>
+ <div class="smaller-text" style="word-break: break-all"><%= link_to download_link, download_link %></div>
+</div>
<% else %>
- <% linktext = "Share" %>
- <% btnstyle = "btn-info" %>
+ <%= link_to "Create sharing link", share_collection_url, {
+ class: 'btn-xs btn-info',
+ remote: true,
+ method: 'post'
+ } %>
<% end %>
-<%= link_to linktext, sharing_popup_collection_url(id: @object.uuid), {class: "btn #{btnstyle}", :remote => true, 'data-toggle' => "modal", 'data-target' => '#collection-sharing-modal-window'} %>
diff --git a/apps/workbench/app/views/collections/_sharing_popup.html.erb b/apps/workbench/app/views/collections/_sharing_popup.html.erb
deleted file mode 100644
index f7f0555..0000000
--- a/apps/workbench/app/views/collections/_sharing_popup.html.erb
+++ /dev/null
@@ -1,37 +0,0 @@
-
-<div class="modal-dialog">
- <div class="modal-content">
- <div class="modal-header">
- <button type="button" class="close" onClick="reset_form()" data-dismiss="modal" aria-hidden="true">×</button>
- <h4 class="modal-title">Sharing</h4>
- </div>
- <div class="modal-body">
- <div id="sharing-text" style="text-align: center; word-wrap: break-word">
- <% if @search_sharing.any? %>
- Use this link to share this collection:<br>
- <big>
- <% link = collections_url + "/download/#{@object.uuid}/#{@search_sharing.first.api_token}" %>
- <%= link_to link, link %>
- </big>
- <% else %>
- Not shared.
- <% end %>
- </div>
- <div style="text-align: center; padding-top: 1em">
- <% if @search_sharing and @search_sharing.any? %>
- <%= link_to "Unshare", unshare_collection_url, {
- class: 'btn btn-success',
- remote: true,
- method: 'post'
- } %>
- <% else %>
- <%= link_to "Share", share_collection_url, {
- class: 'btn btn-info',
- remote: true,
- method: 'post'
- } %>
- <% end %>
- </div>
- </div>
- </div>
-</div>
diff --git a/apps/workbench/app/views/collections/sharing_popup.js.erb b/apps/workbench/app/views/collections/sharing_popup.js.erb
index 933f08d..d2e0d9f 100644
--- a/apps/workbench/app/views/collections/sharing_popup.js.erb
+++ b/apps/workbench/app/views/collections/sharing_popup.js.erb
@@ -1,2 +1 @@
-$("#collection-sharing-modal-window").html("<%= escape_javascript(render partial: 'sharing_popup') %>");
$("#sharing-button").html("<%= escape_javascript(render partial: 'sharing_button') %>");
diff --git a/apps/workbench/app/views/collections/show.html.erb b/apps/workbench/app/views/collections/show.html.erb
index c26b74c..0be6705 100644
--- a/apps/workbench/app/views/collections/show.html.erb
+++ b/apps/workbench/app/views/collections/show.html.erb
@@ -79,7 +79,7 @@
<input type="text" class="form-control" placeholder="Search"/>
-->
- <div id="sharing-button" style="text-align: center">
+ <div id="sharing-button">
<%= render partial: 'sharing_button' %>
</div>
commit 675794872a5d064cf0a8177d662555c04b0dae51
Merge: 06a0c1d d582312
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Thu May 22 16:30:34 2014 -0400
Merge remote-tracking branch 'origin/master' into 2044-share-button
diff --cc apps/workbench/app/controllers/collections_controller.rb
index 509b9f4,3b4943f..3e981e1
--- a/apps/workbench/app/controllers/collections_controller.rb
+++ b/apps/workbench/app/controllers/collections_controller.rb
@@@ -110,99 -120,44 +120,76 @@@ class CollectionsController < Applicati
self.response_body = file_enumerator opts
end
++ def sharing_scopes
++ ["GET /arvados/v1/collections/#{@object.uuid}", "GET /arvados/v1/keep_services"]
++ end
++
+ def search_scopes
- ApiClientAuthorization.where(filters: [['scopes', '=', ["GET /arvados/v1/collections/#{@object.uuid}", "GET /arvados/v1/collections/#{@object.uuid}/"]]])
++ ApiClientAuthorization.where(filters: [['scopes', '=', sharing_scopes]])
+ end
+
def show
return super if !@object
- @provenance = []
- @output2job = {}
- @output2colorindex = {}
- @sourcedata = {params[:uuid] => {uuid: params[:uuid]}}
- @protected = {}
- @search_sharing = search_scopes.select { |s| s.scopes != ['all'] }
-
- colorindex = -1
- any_hope_left = true
- while any_hope_left
- any_hope_left = false
- Job.where(output: @sourcedata.keys).sort_by { |a| a.finished_at || a.created_at }.reverse.each do |job|
- if !@output2colorindex[job.output]
- any_hope_left = true
- @output2colorindex[job.output] = (colorindex += 1) % 10
- @provenance << {job: job, output: job.output}
- @sourcedata.delete job.output
- @output2job[job.output] = job
- job.dependencies.each do |new_source_data|
- unless @output2colorindex[new_source_data]
- @sourcedata[new_source_data] = {uuid: new_source_data}
- end
- end
- end
- end
- end
-
- Link.where(head_uuid: @sourcedata.keys | @output2job.keys).each do |link|
- if link.link_class == 'resources' and link.name == 'wants'
- @protected[link.head_uuid] = true
- if link.tail_uuid == current_user.uuid
- @is_persistent = true
- end
+ if current_user
+ jobs_with = lambda do |conds|
+ Job.limit(RELATION_LIMIT).where(conds)
+ .results.sort_by { |j| j.finished_at || j.created_at }
end
+ @output_of = jobs_with.call(output: @object.uuid)
+ @log_of = jobs_with.call(log: @object.uuid)
+ folder_links = Link.limit(RELATION_LIMIT).order("modified_at DESC")
+ .where(head_uuid: @object.uuid, link_class: 'name').results
+ folder_hash = Group.where(uuid: folder_links.map(&:tail_uuid)).to_hash
+ @folders = folder_links.map { |link| folder_hash[link.tail_uuid] }
+ @permissions = Link.limit(RELATION_LIMIT).order("modified_at DESC")
+ .where(head_uuid: @object.uuid, link_class: 'permission',
+ name: 'can_read').results
+ @logs = Log.limit(RELATION_LIMIT).order("created_at DESC")
+ .where(object_uuid: @object.uuid).results
+ @is_persistent = Link.limit(1)
+ .where(head_uuid: @object.uuid, tail_uuid: current_user.uuid,
+ link_class: 'resources', name: 'wants')
+ .results.any?
++ @search_sharing = search_scopes.select { |s| s.scopes != ['all'] }
end
- Link.where(tail_uuid: @sourcedata.keys).each do |link|
- if link.link_class == 'data_origin'
- @sourcedata[link.tail_uuid][:data_origins] ||= []
- @sourcedata[link.tail_uuid][:data_origins] << [link.name, link.head_uuid]
- end
- end
- Collection.where(uuid: @sourcedata.keys).each do |collection|
- if @sourcedata[collection.uuid]
- @sourcedata[collection.uuid][:collection] = collection
- end
- end
-
- Collection.where(uuid: @object.uuid).each do |u|
- @prov_svg = ProvenanceHelper::create_provenance_graph(u.provenance, "provenance_svg",
- {:request => request,
- :direction => :bottom_up,
- :combine_jobs => :script_only}) rescue nil
- @used_by_svg = ProvenanceHelper::create_provenance_graph(u.used_by, "used_by_svg",
- {:request => request,
- :direction => :top_down,
- :combine_jobs => :script_only,
- :pdata_only => true}) rescue nil
- end
+ @prov_svg = ProvenanceHelper::create_provenance_graph(@object.provenance, "provenance_svg",
+ {:request => request,
+ :direction => :bottom_up,
+ :combine_jobs => :script_only}) rescue nil
+ @used_by_svg = ProvenanceHelper::create_provenance_graph(@object.used_by, "used_by_svg",
+ {:request => request,
+ :direction => :top_down,
+ :combine_jobs => :script_only,
+ :pdata_only => true}) rescue nil
end
+ def sharing_popup
+ @search_sharing = search_scopes.select { |s| s.scopes != ['all'] }
+ respond_to do |format|
+ format.html
+ format.js
+ end
+ end
+
+ def share
- a = ApiClientAuthorization.create(scopes: ["GET /arvados/v1/collections/#{@object.uuid}", "GET /arvados/v1/collections/#{@object.uuid}/"])
++ a = ApiClientAuthorization.create(scopes: sharing_scopes)
+ @search_sharing = search_scopes.select { |s| s.scopes != ['all'] }
+ render 'sharing_popup'
+ end
+
+ def unshare
+ @search_sharing = search_scopes.select { |s| s.scopes != ['all'] }
+ @search_sharing.each do |s|
+ s.destroy
+ end
+ @search_sharing = search_scopes.select { |s| s.scopes != ['all'] }
+ render 'sharing_popup'
+ end
+
protected
- def find_usable_token
- # Iterate over every token available to make it the current token and
+ def find_usable_token(token_list)
+ # Iterate over every given token to make it the current token and
# yield the given block.
# If the block succeeds, return the token it used.
# Otherwise, render an error response based on the most specific
diff --cc apps/workbench/app/views/collections/_sharing_button.html.erb
index b4f59f7,0000000..36952d6
mode 100644,000000..100644
--- a/apps/workbench/app/views/collections/_sharing_button.html.erb
+++ b/apps/workbench/app/views/collections/_sharing_button.html.erb
@@@ -1,8 -1,0 +1,8 @@@
+<% if @search_sharing.any? %>
+ <% linktext = "Shared" %>
+ <% btnstyle = "btn-success" %>
+<% else %>
+ <% linktext = "Share" %>
+ <% btnstyle = "btn-info" %>
+<% end %>
- <%= link_to linktext, sharing_popup_collection_url(id: @object.uuid), {class: "btn-xs #{btnstyle}", :remote => true, 'data-toggle' => "modal", 'data-target' => '#collection-sharing-modal-window'} %>
++<%= link_to linktext, sharing_popup_collection_url(id: @object.uuid), {class: "btn #{btnstyle}", :remote => true, 'data-toggle' => "modal", 'data-target' => '#collection-sharing-modal-window'} %>
diff --cc apps/workbench/app/views/collections/_sharing_popup.html.erb
index 719f8fb,0000000..f7f0555
mode 100644,000000..100644
--- a/apps/workbench/app/views/collections/_sharing_popup.html.erb
+++ b/apps/workbench/app/views/collections/_sharing_popup.html.erb
@@@ -1,37 -1,0 +1,37 @@@
+
+<div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" onClick="reset_form()" data-dismiss="modal" aria-hidden="true">×</button>
+ <h4 class="modal-title">Sharing</h4>
+ </div>
+ <div class="modal-body">
+ <div id="sharing-text" style="text-align: center; word-wrap: break-word">
+ <% if @search_sharing.any? %>
+ Use this link to share this collection:<br>
+ <big>
- <% link = collection_url + "?reader_tokens[]=#{@search_sharing.first.api_token}" %>
++ <% link = collections_url + "/download/#{@object.uuid}/#{@search_sharing.first.api_token}" %>
+ <%= link_to link, link %>
+ </big>
+ <% else %>
+ Not shared.
+ <% end %>
+ </div>
+ <div style="text-align: center; padding-top: 1em">
+ <% if @search_sharing and @search_sharing.any? %>
+ <%= link_to "Unshare", unshare_collection_url, {
+ class: 'btn btn-success',
+ remote: true,
+ method: 'post'
+ } %>
+ <% else %>
+ <%= link_to "Share", share_collection_url, {
+ class: 'btn btn-info',
+ remote: true,
+ method: 'post'
+ } %>
+ <% end %>
+ </div>
+ </div>
+ </div>
+</div>
diff --cc apps/workbench/app/views/collections/_show_files.html.erb
index 28c3396,c5c1279..74e02f7
--- a/apps/workbench/app/views/collections/_show_files.html.erb
+++ b/apps/workbench/app/views/collections/_show_files.html.erb
@@@ -10,12 -3,8 +3,9 @@@
<div class="col-md-6"></div>
<div class="col-md-6">
<div class="pull-right">
- <span id="sharing-button">
- <%= render partial: 'sharing_button' %>
- </span>
- Collection storage status:
+ <span style="padding-left: 1em">Collection storage status:</span>
<%= render partial: 'toggle_persist', locals: { uuid: @object.uuid, current_state: (@is_persistent ? 'persistent' : 'cache') } %>
+
</div>
</div>
</div>
@@@ -46,38 -38,31 +39,35 @@@
:class => 'persistent-selection',
:friendly_type => "File",
:friendly_name => "#{@object.uuid}/#{file_path}",
- :href => "#{url_for controller: 'collections', action: 'show', id: @object.uuid }/#{file_path}",
- :title => "Click to add this item to your selection list"
+ :href => url_for(controller: 'collections', action: 'show_file',
+ uuid: @object.uuid, file: file_path),
+ :title => "Include #{file_path} in your selections",
} %>
- </td>
- <td>
- <%= file[0] %>
- </td>
-
- <td>
- <%= link_to (if CollectionsHelper::is_image file[1]
- image_tag "#{url_for @object}/#{file_path}", class: "file-list-inline-image"
- else
- file[1]
- end),
- {controller: 'collections', action: 'show_file', uuid: @object.uuid, file: file_path, size: file[2], disposition: 'inline'},
- {title: file_path} %>
- </td>
-
- <td style="text-align:right">
- <%= raw(human_readable_bytes_html(file[2])) %>
- </td>
-
- <td>
- <div style="display:inline-block">
- <%= link_to raw('<i class="glyphicon glyphicon-download-alt"></i>'), {controller: 'collections', action: 'show_file', uuid: @object.uuid, file: file_path, size: file[2], disposition: 'attachment'}, {class: 'btn btn-info btn-sm', title: 'Download'} %>
- </div>
- </td>
- </tr>
- <% end; end %>
- </tbody>
- </table>
+ <%= link_to(raw('<i class="fa fa-search"></i>'),
+ link_params.merge(disposition: 'inline'),
+ {title: "View #{file_path}", class: "btn btn-info btn-sm"}) %>
+ <%= link_to(raw('<i class="fa fa-download"></i>'),
+ link_params.merge(disposition: 'attachment'),
+ {title: "Download #{file_path}", class: "btn btn-info btn-sm"}) %>
+ </div>
+ <% if CollectionsHelper::is_image(filename) %>
+ <div class="collection_files_name"><i class="fa fa-fw fa-bar-chart-o"></i> <%= filename %></div>
+ </div>
+ <div class="collection_files_inline">
+ <%= link_to(image_tag("#{url_for @object}/#{file_path}"),
+ link_params.merge(disposition: 'inline'),
+ {title: file_path}) %>
+ </div>
+ <% else %>
+ <div class="collection_files_name"><i class="fa fa-fw fa-file"></i> <%= filename %></div>
+ </div>
+ <% end %>
+ </li>
+ <% end # if file or directory %>
+ <% end # file_tree.each %>
+ <%= raw(dirstack.map { |_| "</ul>" }.join("</li>")) %>
+ <% end # if file_tree %>
+
+<% content_for :footer_html do %>
+<div id="collection-sharing-modal-window" class="modal fade" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"></div>
+<% end %>
diff --cc apps/workbench/app/views/collections/show.html.erb
index 0000000,9fc67ac..c26b74c
mode 000000,100644..100644
--- a/apps/workbench/app/views/collections/show.html.erb
+++ b/apps/workbench/app/views/collections/show.html.erb
@@@ -1,0 -1,105 +1,111 @@@
+ <div class="row row-fill-height">
+ <div class="col-md-6">
+ <div class="panel panel-info">
+ <div class="panel-heading">
+ <h3 class="panel-title">
+ <% default_name = "Collection #{@object.uuid}" %>
+ <% name_html = render_editable_attribute @object, 'name', nil, {data: {emptytext: default_name}} %>
+ <%= (/\S/.match(name_html)) ? name_html : default_name %>
+ </h3>
+ </div>
+ <div class="panel-body">
+ <img src="/favicon.ico" class="pull-right" alt="" style="opacity: 0.3"/>
+ <% if not (@output_of.andand.any? or @log_of.andand.any?) %>
+ <p><i>No source information available.</i></p>
+ <% end %>
+
+ <% if @output_of.andand.any? %>
+ <p>Output of jobs:<br />
+ <%= render_arvados_object_list_start(@output_of, 'Show all jobs',
+ jobs_path(filter: [['output', '=', @object.uuid]].to_json)) do |job| %>
+ <%= link_to_if_arvados_object(job, friendly_name: true) %><br />
+ <% end %>
+ </p>
+ <% end %>
+
+ <% if @log_of.andand.any? %>
+ <p>Log of jobs:<br />
+ <%= render_arvados_object_list_start(@log_of, 'Show all jobs',
+ jobs_path(filter: [['log', '=', @object.uuid]].to_json)) do |job| %>
+ <%= link_to_if_arvados_object(job, friendly_name: true) %><br />
+ <% end %>
+ </p>
+ <% end %>
+ </div>
+ </div>
+ </div>
+ <div class="col-md-3">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h3 class="panel-title">
+ Activity
+ </h3>
+ </div>
+ <div class="panel-body smaller-text">
+ <!--
+ <input type="text" class="form-control" placeholder="Search"/>
+ -->
+ <div style="height:0.5em;"></div>
+ <% if not @logs.andand.any? %>
+ <p>
+ Created: <%= @object.created_at.to_s(:long) %>
+ </p>
+ <p>
+ Last modified: <%= @object.modified_at.to_s(:long) %> by <%= link_to_if_arvados_object @object.modified_by_user_uuid, friendly_name: true %>
+ </p>
+ <% else %>
+ <%= render_arvados_object_list_start(@logs, 'Show all activity',
+ logs_path(filters: [['object_uuid','=', at object.uuid]].to_json)) do |log| %>
+ <p>
+ <%= time_ago_in_words(log.event_at) %> ago: <%= log.summary %>
+ <% if log.object_uuid %>
+ <%= link_to_if_arvados_object log.object_uuid, link_text: raw('<i class="fa fa-hand-o-right"></i>') %>
+ <% end %>
+ </p>
+ <% end %>
+ <% end %>
+ </div>
+ </div>
+ </div>
+ <div class="col-md-3">
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h3 class="panel-title">
+ Sharing and permissions
+ </h3>
+ </div>
+ <div class="panel-body">
+ <!--
+ <input type="text" class="form-control" placeholder="Search"/>
+ -->
++
++ <div id="sharing-button" style="text-align: center">
++ <%= render partial: 'sharing_button' %>
++ </div>
++
+ <div style="height:0.5em;"></div>
+ <% if @folders.andand.any? %>
+ <p>Included in folders:<br />
+ <%= render_arvados_object_list_start(@folders, 'Show all folders',
+ links_path(filter: [['head_uuid', '=', @object.uuid],
+ ['link_class', '=', 'name']].to_json)) do |folder| %>
+ <%= link_to_if_arvados_object(folder, friendly_name: true) %><br />
+ <% end %>
+ </p>
+ <% end %>
+ <% if @permissions.andand.any? %>
+ <p>Readable by:<br />
+ <%= render_arvados_object_list_start(@permissions, 'Show all permissions',
+ links_path(filter: [['head_uuid', '=', @object.uuid],
+ ['link_class', '=', 'permission']].to_json)) do |link| %>
+ <%= link_to_if_arvados_object(link.tail_uuid, friendly_name: true) %><br />
+ <% end %>
+ </p>
+ <% end %>
++
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <%= render file: 'application/show.html.erb' %>
diff --cc apps/workbench/config/routes.rb
index 43eb7ae,c12cc98..6e3d66b
--- a/apps/workbench/config/routes.rb
+++ b/apps/workbench/config/routes.rb
@@@ -39,13 -40,13 +40,16 @@@ ArvadosWorkbench::Application.routes.dr
get 'compare', on: :collection
end
resources :links
- match '/collections/graph' => 'collections#graph'
+ get '/collections/graph' => 'collections#graph'
resources :collections do
post 'set_persistent', on: :member
+ get 'sharing_popup', :on => :member
+ post 'share', :on => :member
+ post 'unshare', :on => :member
end
+ get('/collections/download/:uuid/:reader_token/*file' => 'collections#show_file',
+ format: false)
+ get '/collections/download/:uuid/:reader_token' => 'collections#show_file_links'
get '/collections/:uuid/*file' => 'collections#show_file', :format => false
resources :folders do
match 'remove/:item_uuid', on: :member, via: :delete, action: :remove_item
diff --cc services/api/app/models/arvados_model.rb
index 290e156,bfd228e..adff09d
--- a/services/api/app/models/arvados_model.rb
+++ b/services/api/app/models/arvados_model.rb
@@@ -187,26 -187,15 +187,17 @@@ class ArvadosModel < ActiveRecord::Bas
def ensure_owner_uuid_is_permitted
raise PermissionDeniedError if !current_user
- if self.respond_to? :owner_uuid=
+ if respond_to? :owner_uuid=
self.owner_uuid ||= current_user.uuid
- if self.owner_uuid_changed?
- if current_user.uuid == self.owner_uuid or
- current_user.can? write: self.owner_uuid
- # current_user is, or has :write permission on, the new owner
- else
- logger.warn "User #{current_user.uuid} tried to change owner_uuid of #{self.class.to_s} #{self.uuid} to #{self.owner_uuid} but does not have permission to write to #{self.owner_uuid}"
- raise PermissionDeniedError
- end
- end
+ end
+ if self.owner_uuid_changed?
- if current_user.uuid == self.owner_uuid or
+ if new_record?
+ return true
- elsif current_user.uuid == self.owner_uuid_was or
- current_user.uuid == self.uuid or
- current_user.can? write: self.owner_uuid_was
- # current user is, or has :write permission on, the previous owner
- return true
++ elsif current_user.uuid == self.owner_uuid or
+ current_user.can? write: self.owner_uuid
+ # current_user is, or has :write permission on, the new owner
else
- logger.warn "User #{current_user.uuid} tried to change owner_uuid of #{self.class.to_s} #{self.uuid} to #{self.owner_uuid} but does not have permission to write to #{self.owner_uuid}"
+ logger.warn "User #{current_user.uuid} tried to modify #{self.class.to_s} #{self.uuid} but does not have permission to write #{self.owner_uuid_was}"
raise PermissionDeniedError
end
end
commit 06a0c1d9f2e6cf1d5a9fd00b53071d857252f9fa
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Thu May 8 09:34:27 2014 -0400
Adding missing file.
diff --git a/apps/workbench/app/views/collections/_sharing_button.html.erb b/apps/workbench/app/views/collections/_sharing_button.html.erb
new file mode 100644
index 0000000..b4f59f7
--- /dev/null
+++ b/apps/workbench/app/views/collections/_sharing_button.html.erb
@@ -0,0 +1,8 @@
+<% if @search_sharing.any? %>
+ <% linktext = "Shared" %>
+ <% btnstyle = "btn-success" %>
+<% else %>
+ <% linktext = "Share" %>
+ <% btnstyle = "btn-info" %>
+<% end %>
+<%= link_to linktext, sharing_popup_collection_url(id: @object.uuid), {class: "btn-xs #{btnstyle}", :remote => true, 'data-toggle' => "modal", 'data-target' => '#collection-sharing-modal-window'} %>
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list