From a625e334721df9002ef2150e2808f508e1bb4c5a Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Thu, 31 Oct 2019 15:35:12 -0400 Subject: [PATCH 001/101] Initial addition of vue-fa --- client/package.json | 1 + client/yarn.lock | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/client/package.json b/client/package.json index 9161e57aca2..d16be42bdeb 100644 --- a/client/package.json +++ b/client/package.json @@ -12,6 +12,7 @@ "license": "AFL-3.0", "dependencies": { "@babel/polyfill": "^7.4.0", + "@fortawesome/vue-fontawesome": "^0.1.7", "@handsontable/vue": "^2.0.0-beta1", "@johmun/vue-tags-input": "^2.0.1", "@vue/test-utils": "1.0.0-beta.29", diff --git a/client/yarn.lock b/client/yarn.lock index eb875cefffd..6df98942090 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -826,6 +826,11 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@fortawesome/vue-fontawesome@^0.1.7": + version "0.1.7" + resolved "https://registry.yarnpkg.com/@fortawesome/vue-fontawesome/-/vue-fontawesome-0.1.7.tgz#121867297cafd141af78c67d92ab9f1ad4b7328b" + integrity sha512-YCw2Q2m4fxzyFsPOH3uDYMoJztTD+pT+AAyse4LFpbdrBg+r8ueaVT8BFnXEjrGwMDJJeXrwJ5AOC6q/JWBI4w== + "@handsontable/vue@^2.0.0-beta1": version "2.0.0" resolved "https://registry.yarnpkg.com/@handsontable/vue/-/vue-2.0.0.tgz#28ae7d247a89738088abc32584562925dde18db0" From 8d776a69e5108b8feeb4ed224b06f69e4b2a74dd Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Thu, 31 Oct 2019 15:36:49 -0400 Subject: [PATCH 002/101] Add core fa icon libs --- client/package.json | 2 ++ client/yarn.lock | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/client/package.json b/client/package.json index d16be42bdeb..0b585f0161d 100644 --- a/client/package.json +++ b/client/package.json @@ -12,6 +12,8 @@ "license": "AFL-3.0", "dependencies": { "@babel/polyfill": "^7.4.0", + "@fortawesome/fontawesome-svg-core": "^1.2.25", + "@fortawesome/free-solid-svg-icons": "^5.11.2", "@fortawesome/vue-fontawesome": "^0.1.7", "@handsontable/vue": "^2.0.0-beta1", "@johmun/vue-tags-input": "^2.0.1", diff --git a/client/yarn.lock b/client/yarn.lock index 6df98942090..71267f5b1c2 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -826,6 +826,25 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@fortawesome/fontawesome-common-types@^0.2.25": + version "0.2.25" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.25.tgz#6df015905081f2762e5cfddeb7a20d2e9b16c786" + integrity sha512-3RuZPDuuPELd7RXtUqTCfed14fcny9UiPOkdr2i+cYxBoTOfQgxcDoq77fHiiHcgWuo1LoBUpvGxFF1H/y7s3Q== + +"@fortawesome/fontawesome-svg-core@^1.2.25": + version "1.2.25" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.25.tgz#24b03391d14f0c6171e8cad7057c687b74049790" + integrity sha512-MotKnn53JKqbkLQiwcZSBJVYtTgIKFbh7B8+kd05TSnfKYPFmjKKI59o2fpz5t0Hzl35vVGU6+N4twoOpZUrqA== + dependencies: + "@fortawesome/fontawesome-common-types" "^0.2.25" + +"@fortawesome/free-solid-svg-icons@^5.11.2": + version "5.11.2" + resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.11.2.tgz#2f2f1459743a27902b76655a0d0bc5ec4d945631" + integrity sha512-zBue4i0PAZJUXOmLBBvM7L0O7wmsDC8dFv9IhpW5QL4kT9xhhVUsYg/LX1+5KaukWq4/cbDcKT+RT1aRe543sg== + dependencies: + "@fortawesome/fontawesome-common-types" "^0.2.25" + "@fortawesome/vue-fontawesome@^0.1.7": version "0.1.7" resolved "https://registry.yarnpkg.com/@fortawesome/vue-fontawesome/-/vue-fontawesome-0.1.7.tgz#121867297cafd141af78c67d92ab9f1ad4b7328b" From b2221cacb10d2a86d0acf8f0de384599d9a12af5 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Wed, 6 Nov 2019 13:57:54 -0500 Subject: [PATCH 003/101] Minor version bump after rebase, inclusion of fontawesome-free --- client/package.json | 4 ++-- client/yarn.lock | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/client/package.json b/client/package.json index 0b585f0161d..8354b5dca64 100644 --- a/client/package.json +++ b/client/package.json @@ -12,9 +12,10 @@ "license": "AFL-3.0", "dependencies": { "@babel/polyfill": "^7.4.0", + "@fortawesome/fontawesome-free": "^5.11.2", "@fortawesome/fontawesome-svg-core": "^1.2.25", "@fortawesome/free-solid-svg-icons": "^5.11.2", - "@fortawesome/vue-fontawesome": "^0.1.7", + "@fortawesome/vue-fontawesome": "^0.1.8", "@handsontable/vue": "^2.0.0-beta1", "@johmun/vue-tags-input": "^2.0.1", "@vue/test-utils": "1.0.0-beta.29", @@ -27,7 +28,6 @@ "d3": "3", "decode-uri-component": "^0.2.0", "flush-promises": "^1.0.2", - "font-awesome": "^4.7.0", "glob": "^7.1.4", "handsontable": "^2.0.0", "imask": "^4.1.5", diff --git a/client/yarn.lock b/client/yarn.lock index 71267f5b1c2..1c1a9065ba2 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -831,6 +831,11 @@ resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.25.tgz#6df015905081f2762e5cfddeb7a20d2e9b16c786" integrity sha512-3RuZPDuuPELd7RXtUqTCfed14fcny9UiPOkdr2i+cYxBoTOfQgxcDoq77fHiiHcgWuo1LoBUpvGxFF1H/y7s3Q== +"@fortawesome/fontawesome-free@^5.11.2": + version "5.11.2" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.11.2.tgz#8644bc25b19475779a7b7c1fc104bc0a794f4465" + integrity sha512-XiUPoS79r1G7PcpnNtq85TJ7inJWe0v+b5oZJZKb0pGHNIV6+UiNeQWiFGmuQ0aj7GEhnD/v9iqxIsjuRKtEnQ== + "@fortawesome/fontawesome-svg-core@^1.2.25": version "1.2.25" resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.25.tgz#24b03391d14f0c6171e8cad7057c687b74049790" @@ -845,10 +850,10 @@ dependencies: "@fortawesome/fontawesome-common-types" "^0.2.25" -"@fortawesome/vue-fontawesome@^0.1.7": - version "0.1.7" - resolved "https://registry.yarnpkg.com/@fortawesome/vue-fontawesome/-/vue-fontawesome-0.1.7.tgz#121867297cafd141af78c67d92ab9f1ad4b7328b" - integrity sha512-YCw2Q2m4fxzyFsPOH3uDYMoJztTD+pT+AAyse4LFpbdrBg+r8ueaVT8BFnXEjrGwMDJJeXrwJ5AOC6q/JWBI4w== +"@fortawesome/vue-fontawesome@^0.1.8": + version "0.1.8" + resolved "https://registry.yarnpkg.com/@fortawesome/vue-fontawesome/-/vue-fontawesome-0.1.8.tgz#615347c56d285eb634315f59fe4f4156e4eee8b4" + integrity sha512-SdFiUD+vFDA/xKuEbnQTVrK8FDxoV0eyQaiHxmCcjAc0+vQe0Kf6oGm28opNPIt8MTgKWR3+Yg3xXP455Ae4tQ== "@handsontable/vue@^2.0.0-beta1": version "2.0.0" @@ -5941,11 +5946,6 @@ follow-redirects@^1.0.0: dependencies: debug "=3.1.0" -font-awesome@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133" - integrity sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM= - for-in@^0.1.3: version "0.1.8" resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" From cc85a701b76a5582d46cecc7bda29a79386168a4 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Tue, 26 Nov 2019 18:43:18 -0500 Subject: [PATCH 004/101] Incremental work getting fa5 working. --- client/galaxy/style/scss/base.scss | 12 ++++++++++-- client/galaxy/style/scss/dataset.scss | 7 ++++--- client/galaxy/style/scss/mixins.scss | 9 ++++++--- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/client/galaxy/style/scss/base.scss b/client/galaxy/style/scss/base.scss index f9ac0766b5e..e35d739d64b 100644 --- a/client/galaxy/style/scss/base.scss +++ b/client/galaxy/style/scss/base.scss @@ -8,8 +8,16 @@ @import "overrides.scss"; // Fontawesome configuration. -$fa-font-path: "../../../node_modules/font-awesome/fonts/"; -@import "../../../node_modules/font-awesome/scss/font-awesome.scss"; +//$fa-font-path: "../../../node_modules/font-awesome/fonts/"; +//@import "../../../node_modules/font-awesome/scss/font-awesome.scss"; + +$fa-font-path: "../../../node_modules/@fortawesome/fontawesome-free/webfonts/"; +@import "../../../node_modules/@fortawesome/fontawesome-free/scss/fontawesome"; +@import "../../../node_modules/@fortawesome/fontawesome-free/scss/brands"; +@import "../../../node_modules/@fortawesome/fontawesome-free/scss/regular"; +@import "../../../node_modules/@fortawesome/fontawesome-free/scss/solid"; +@import "../../../node_modules/@fortawesome/fontawesome-free/scss/v4-shims"; +@import "../../../node_modules/@fortawesome/fontawesome-free/scss/_variables"; @import "select2.scss"; @import "jquery.rating.scss"; diff --git a/client/galaxy/style/scss/dataset.scss b/client/galaxy/style/scss/dataset.scss index 1c57cbe23a9..8ddfe473c5e 100644 --- a/client/galaxy/style/scss/dataset.scss +++ b/client/galaxy/style/scss/dataset.scss @@ -1,5 +1,6 @@ @import "sprite-history-states.scss"; @import "sprite-history-buttons.scss"; +@import "~@fortawesome/fontawesome-free/scss/_variables"; // ---------------------------------------------------------------------------- dataset states //.dataset .state-icon { @@ -117,7 +118,7 @@ background: $state-default-bg; .state-icon { &:before { - content: $fa-var-clock-o; + content: $fa-var-clock; } } } @@ -143,7 +144,7 @@ background: $state-default-bg; .state-icon { &:before { - content: $fa-var-trash-o; + content: $fa-var-trash; } } } @@ -165,7 +166,7 @@ background: $state-default-bg; .state-icon { &:before { - content: $fa-var-clock-o; + content: $fa-var-clock; } } } diff --git a/client/galaxy/style/scss/mixins.scss b/client/galaxy/style/scss/mixins.scss index 81f7b907670..233c938d394 100644 --- a/client/galaxy/style/scss/mixins.scss +++ b/client/galaxy/style/scss/mixins.scss @@ -1,6 +1,9 @@ -$fa-font-path: "~font-awesome/fonts/"; -@import "~font-awesome/scss/font-awesome.scss"; -@import "~font-awesome/scss/_mixins"; +//$fa-font-path: "~font-awesome/fonts/"; +//@import "~font-awesome/scss/font-awesome.scss"; +//@import "~font-awesome/scss/_mixins"; +$fa-font-path: "../../../node_modules/@fortawesome/fontawesome-free/webfonts/"; +@import "~@fortawesome/fontawesome-free/scss/fontawesome"; +@import "~@fortawesome/fontawesome-free/scss/_variables"; // Utility mixin expands to container edges @mixin fill() { From a4f01d0c413eda8eae7c7352dbffe8af60625f91 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Wed, 11 Dec 2019 15:54:06 -0500 Subject: [PATCH 005/101] Test two svg-based fontawesome-vue icons in the workflow list --- .../scripts/components/Workflow/WorkflowList.vue | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/client/galaxy/scripts/components/Workflow/WorkflowList.vue b/client/galaxy/scripts/components/Workflow/WorkflowList.vue index 5015e2a3f1d..ec8ee95faa8 100644 --- a/client/galaxy/scripts/components/Workflow/WorkflowList.vue +++ b/client/galaxy/scripts/components/Workflow/WorkflowList.vue @@ -23,11 +23,11 @@ - + Create - + Import @@ -80,6 +80,14 @@ + + diff --git a/client/galaxy/scripts/components/admin/Jobs.vue b/client/galaxy/scripts/components/admin/Jobs.vue index 9fea9b53a7d..ce60f9909a7 100644 --- a/client/galaxy/scripts/components/admin/Jobs.vue +++ b/client/galaxy/scripts/components/admin/Jobs.vue @@ -132,12 +132,7 @@ @@ -167,12 +162,7 @@ @@ -188,6 +178,7 @@ import { getAppRoot } from "onload/loadConfig"; import UtcDate from "components/UtcDate"; import axios from "axios"; +import JobDetails from "./JobDetails"; function cancelJob(jobId, message) { const url = `${getAppRoot()}api/jobs/${jobId}`; @@ -195,7 +186,7 @@ function cancelJob(jobId, message) { } export default { - components: { UtcDate }, + components: { UtcDate, JobDetails }, data() { return { jobsItems: [], @@ -206,7 +197,6 @@ export default { { key: "user" }, { key: "tool_id", label: "Tool", tdClass: ["break-word"] }, { key: "state" }, - { key: "input_dataset", label: "Inputs" }, { key: "job_runner_name", label: "Job Runner" }, { key: "job_runner_external_id", label: "PID/Cluster ID", sortable: true } ], diff --git a/lib/galaxy/webapps/galaxy/controllers/admin.py b/lib/galaxy/webapps/galaxy/controllers/admin.py index 192ca3e5d64..1fb22973525 100644 --- a/lib/galaxy/webapps/galaxy/controllers/admin.py +++ b/lib/galaxy/webapps/galaxy/controllers/admin.py @@ -1541,11 +1541,6 @@ class AdminGalaxy(controller.JSAppLauncher, AdminActions, UsesQuotaMixin, QuotaP def prepare_jobs_list(jobs): res = [] for job in jobs: - inputs = "" - try: - inputs = ", ".join(['{} {}'.format(da.dataset.id, da.dataset.state) for da in job.input_datasets]) - except Exception: - inputs = 'Unable to determine inputs' res.append({ 'job_info': { 'id': job.id, @@ -1555,7 +1550,6 @@ class AdminGalaxy(controller.JSAppLauncher, AdminActions, UsesQuotaMixin, QuotaP 'update_time': job.update_time.isoformat(), 'tool_id': job.tool_id, 'state': job.state, - 'input_dataset': inputs, 'command_line': job.command_line, 'job_runner_name': job.job_runner_name, 'job_runner_external_id': job.job_runner_external_id From c66969a7d867fbe20c630d43ee6d1daa8f201a08 Mon Sep 17 00:00:00 2001 From: Sergey Golitsynskiy Date: Sat, 21 Dec 2019 15:59:55 -0500 Subject: [PATCH 037/101] Correct typos, update location of api tests --- doc/source/api/guidelines.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/source/api/guidelines.rst b/doc/source/api/guidelines.rst index c49f94f8ce1..4260144da2f 100644 --- a/doc/source/api/guidelines.rst +++ b/doc/source/api/guidelines.rst @@ -14,14 +14,14 @@ these guidelines. should properly set the status code according to the result - in particular 2XX responses should be used for successful requests, 4XX for various kinds of client errors, and 5XX for the errors on the server side. - - If there is an error processing some part of request (one item in a list + - If there is an error processing some part of the request (one item in a list for instance), the status code should be set to reflect the error and the partial result may or may not be returned depending on the controller - this behavior should be documented. - API methods should throw a finite number of exceptions (defined in :mod:`galaxy.exceptions`) and these should subclass `MessageException` and not paste/wsgi HTTP exceptions. When possible, - the framework itself should be responsible catching these exceptions, + the framework itself should be responsible for catching these exceptions, setting the status code, and building an error response. - Error responses should not consist of plain text strings - they should be dictionaries describing the error and containing the following:: @@ -53,7 +53,7 @@ consider them when modifying the API. changes and so a second opinion on API changes should be sought. - New API functionality should include functional tests. These functional tests should be implemented in Python and placed in - `test/functional/api`. + `lib/galaxy_test/api`. - Changes to reflect modifications to the API should be pushed upstream to the BioBlend project if possible. From 0419350a1b94b2fda38f660b85e7b8e82e20bea8 Mon Sep 17 00:00:00 2001 From: Nuwan Goonasekera <2070605+nuwang@users.noreply.github.com> Date: Sun, 22 Dec 2019 11:56:41 +0530 Subject: [PATCH 038/101] Fix incorrect reference to app --- lib/galaxy/model/tool_shed_install/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/galaxy/model/tool_shed_install/__init__.py b/lib/galaxy/model/tool_shed_install/__init__.py index c9364c43485..a48f0509369 100644 --- a/lib/galaxy/model/tool_shed_install/__init__.py +++ b/lib/galaxy/model/tool_shed_install/__init__.py @@ -137,7 +137,7 @@ class ToolShedRepository(object): self.shed_config_filename = shed_tool_conf_dict['config_filename'] return shed_tool_conf_dict # Very last resort, get default shed_tool_config file for this instance - shed_tool_conf_dict = self.app.toolbox.default_shed_tool_conf_dict() + shed_tool_conf_dict = app.toolbox.default_shed_tool_conf_dict() self.shed_config_filename = shed_tool_conf_dict['config_filename'] return shed_tool_conf_dict From 4a89e8220a7bd89ae0c72bc0c66bc515df7f710f Mon Sep 17 00:00:00 2001 From: Marcel Bargull Date: Mon, 23 Dec 2019 19:27:32 +0100 Subject: [PATCH 039/101] mulled: use threading.Event in PrintProgress to avoid unnecessary waiting --- lib/galaxy/tool_util/deps/mulled/util.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/galaxy/tool_util/deps/mulled/util.py b/lib/galaxy/tool_util/deps/mulled/util.py index d005d89ffd6..57e76127180 100644 --- a/lib/galaxy/tool_util/deps/mulled/util.py +++ b/lib/galaxy/tool_util/deps/mulled/util.py @@ -8,7 +8,6 @@ import re import sys import tarfile import threading -import time from io import BytesIO import packaging.version @@ -293,13 +292,13 @@ def split_container_name(name): class PrintProgress(object): def __init__(self): self.thread = threading.Thread(target=self.progress) - self.stop = False + self.stop = threading.Event() def progress(self): - while not self.stop: + while not self.stop.is_set(): print(".", end="") sys.stdout.flush() - time.sleep(60) + self.stop.wait(60) print("") def __enter__(self): @@ -307,7 +306,7 @@ class PrintProgress(object): return self def __exit__(self, exc_type, exc_val, exc_tb): - self.stop = True + self.stop.set() self.thread.join() From 6b4f0b4a50472dcf1b7c8aeeac15e9467c32d5e4 Mon Sep 17 00:00:00 2001 From: guerler Date: Fri, 27 Dec 2019 13:40:34 -0500 Subject: [PATCH 040/101] Ensure that the user has a private role before login --- lib/galaxy/web/framework/webapp.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/galaxy/web/framework/webapp.py b/lib/galaxy/web/framework/webapp.py index c8c4811aaaa..e4f35a8cf41 100644 --- a/lib/galaxy/web/framework/webapp.py +++ b/lib/galaxy/web/framework/webapp.py @@ -712,6 +712,9 @@ class GalaxyWebTransaction(base.DefaultWebTransaction, - add the disk usage of the current session to the user's total disk usage """ self.user_checks(user) + # Make sure that user has a private role + if not self.app.security_agent.get_private_user_role(user): + self.app.security_agent.create_private_user_role(user) # Set the previous session prev_galaxy_session = self.galaxy_session prev_galaxy_session.is_valid = False From 10c23226626809576efb9d243f3ccb3900940619 Mon Sep 17 00:00:00 2001 From: guerler Date: Fri, 27 Dec 2019 14:55:29 -0500 Subject: [PATCH 041/101] Move user creation helper from user manager to security model --- lib/galaxy/managers/users.py | 7 +------ lib/galaxy/model/security.py | 12 ++++++++++++ lib/galaxy/web/framework/webapp.py | 4 +--- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/lib/galaxy/managers/users.py b/lib/galaxy/managers/users.py index 7ca6d1d1aaa..5ef93c7e7d3 100644 --- a/lib/galaxy/managers/users.py +++ b/lib/galaxy/managers/users.py @@ -102,12 +102,7 @@ class UserManager(base.ModelManager, deletable.PurgableManagerMixin): # TODO:?? flush needed for permissions below? If not, make optional except exc.IntegrityError as db_err: raise exceptions.Conflict(str(db_err)) - # can throw an sqlalx.IntegrityError if username not unique - self.app.security_agent.create_private_user_role(user) - # We set default user permissions, before we log in and set the default history permissions - if hasattr(self.app.config, "new_user_dataset_access_role_default_private"): - permissions = self.app.config.new_user_dataset_access_role_default_private - self.app.security_agent.user_set_default_permissions(user, default_access_private=permissions) + self.app.security_agent.create_user_role(user, self.app) return user def delete(self, user, flush=True): diff --git a/lib/galaxy/model/security.py b/lib/galaxy/model/security.py index 698942a7d00..c364aa063a2 100644 --- a/lib/galaxy/model/security.py +++ b/lib/galaxy/model/security.py @@ -656,6 +656,18 @@ class GalaxyRBACAgent(RBACAgent): self.sa_session.flush() return assoc + def create_user_role(self, user, app): + # Create private user role if necessary + if self.app.security_agent.get_private_user_role(user): + self.app.security_agent.create_private_user_role(user) + # Create default user permissions if necessary + if not user.default_permissions: + if hasattr(self.app.config, "new_user_dataset_access_role_default_private"): + permissions = self.app.config.new_user_dataset_access_role_default_private + self.app.security_agent.user_set_default_permissions(user, default_access_private=permissions) + else: + self.app.security_agent.user_set_default_permissions(user, history=True, dataset=True) + def create_private_user_role(self, user): # Create private role role = self.model.Role(name=user.email, description='Private Role for ' + user.email, type=self.model.Role.types.PRIVATE) diff --git a/lib/galaxy/web/framework/webapp.py b/lib/galaxy/web/framework/webapp.py index e4f35a8cf41..34ed238999c 100644 --- a/lib/galaxy/web/framework/webapp.py +++ b/lib/galaxy/web/framework/webapp.py @@ -712,9 +712,7 @@ class GalaxyWebTransaction(base.DefaultWebTransaction, - add the disk usage of the current session to the user's total disk usage """ self.user_checks(user) - # Make sure that user has a private role - if not self.app.security_agent.get_private_user_role(user): - self.app.security_agent.create_private_user_role(user) + self.app.security_agent.create_user_role(user, self.app) # Set the previous session prev_galaxy_session = self.galaxy_session prev_galaxy_session.is_valid = False From fe81adf429a522b6583baa2457ba9946a48e0d75 Mon Sep 17 00:00:00 2001 From: guerler Date: Fri, 27 Dec 2019 14:58:36 -0500 Subject: [PATCH 042/101] Use parsed local parameter in user role initialization helper --- lib/galaxy/model/security.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/galaxy/model/security.py b/lib/galaxy/model/security.py index c364aa063a2..1e28f29082e 100644 --- a/lib/galaxy/model/security.py +++ b/lib/galaxy/model/security.py @@ -658,15 +658,15 @@ class GalaxyRBACAgent(RBACAgent): def create_user_role(self, user, app): # Create private user role if necessary - if self.app.security_agent.get_private_user_role(user): - self.app.security_agent.create_private_user_role(user) + if app.security_agent.get_private_user_role(user): + app.security_agent.create_private_user_role(user) # Create default user permissions if necessary if not user.default_permissions: - if hasattr(self.app.config, "new_user_dataset_access_role_default_private"): - permissions = self.app.config.new_user_dataset_access_role_default_private - self.app.security_agent.user_set_default_permissions(user, default_access_private=permissions) + if hasattr(app.config, "new_user_dataset_access_role_default_private"): + permissions = app.config.new_user_dataset_access_role_default_private + app.security_agent.user_set_default_permissions(user, default_access_private=permissions) else: - self.app.security_agent.user_set_default_permissions(user, history=True, dataset=True) + app.security_agent.user_set_default_permissions(user, history=True, dataset=True) def create_private_user_role(self, user): # Create private role From b318f6ad082bee4b1e67e5fd779ce37064f2ecc8 Mon Sep 17 00:00:00 2001 From: guerler Date: Fri, 27 Dec 2019 15:01:50 -0500 Subject: [PATCH 043/101] Create private user role only if user role is not available --- lib/galaxy/model/security.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/galaxy/model/security.py b/lib/galaxy/model/security.py index 1e28f29082e..206a2040c75 100644 --- a/lib/galaxy/model/security.py +++ b/lib/galaxy/model/security.py @@ -658,7 +658,7 @@ class GalaxyRBACAgent(RBACAgent): def create_user_role(self, user, app): # Create private user role if necessary - if app.security_agent.get_private_user_role(user): + if not app.security_agent.get_private_user_role(user): app.security_agent.create_private_user_role(user) # Create default user permissions if necessary if not user.default_permissions: From 09a23326ef05a479c3bee854300e31dd71ece245 Mon Sep 17 00:00:00 2001 From: guerler Date: Fri, 27 Dec 2019 15:07:16 -0500 Subject: [PATCH 044/101] Use local security agent instead of app in create user roles --- lib/galaxy/model/security.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/galaxy/model/security.py b/lib/galaxy/model/security.py index 206a2040c75..6505d60f521 100644 --- a/lib/galaxy/model/security.py +++ b/lib/galaxy/model/security.py @@ -658,15 +658,15 @@ class GalaxyRBACAgent(RBACAgent): def create_user_role(self, user, app): # Create private user role if necessary - if not app.security_agent.get_private_user_role(user): - app.security_agent.create_private_user_role(user) + if not self.get_private_user_role(user): + self.create_private_user_role(user) # Create default user permissions if necessary if not user.default_permissions: if hasattr(app.config, "new_user_dataset_access_role_default_private"): permissions = app.config.new_user_dataset_access_role_default_private - app.security_agent.user_set_default_permissions(user, default_access_private=permissions) + self.user_set_default_permissions(user, default_access_private=permissions) else: - app.security_agent.user_set_default_permissions(user, history=True, dataset=True) + self.user_set_default_permissions(user, history=True, dataset=True) def create_private_user_role(self, user): # Create private role From d6703f54f6a236d4fae25adb2e4c7731d1262de4 Mon Sep 17 00:00:00 2001 From: John Chilton Date: Sat, 28 Dec 2019 16:42:25 -0500 Subject: [PATCH 045/101] Version 19.9.1 of tool-util (tag galaxy-tool-util-19.9.1). --- packages/tool_util/HISTORY.rst | 2 +- packages/tool_util/galaxy/project_galaxy_tool_util.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/tool_util/HISTORY.rst b/packages/tool_util/HISTORY.rst index 52c2df7066e..6612c61b83a 100644 --- a/packages/tool_util/HISTORY.rst +++ b/packages/tool_util/HISTORY.rst @@ -6,7 +6,7 @@ History .. to_doc --------------------- -19.9.1.dev0 +19.9.1 (2019-12-28) --------------------- diff --git a/packages/tool_util/galaxy/project_galaxy_tool_util.py b/packages/tool_util/galaxy/project_galaxy_tool_util.py index 0ee2dfac196..3a4ac74fc90 100644 --- a/packages/tool_util/galaxy/project_galaxy_tool_util.py +++ b/packages/tool_util/galaxy/project_galaxy_tool_util.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -__version__ = '19.9.1.dev0' +__version__ = '19.9.1' PROJECT_NAME = "galaxy-tool-util" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" From 2e91dd121ffc71e8fe7de132f64f38a2c2c3700d Mon Sep 17 00:00:00 2001 From: John Chilton Date: Sat, 28 Dec 2019 16:43:30 -0500 Subject: [PATCH 046/101] Starting work on tool-util 19.9.2 --- packages/tool_util/HISTORY.rst | 6 ++++++ packages/tool_util/galaxy/project_galaxy_tool_util.py | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/tool_util/HISTORY.rst b/packages/tool_util/HISTORY.rst index 6612c61b83a..cec433c3e50 100644 --- a/packages/tool_util/HISTORY.rst +++ b/packages/tool_util/HISTORY.rst @@ -5,6 +5,12 @@ History .. to_doc +--------------------- +19.9.2.dev0 +--------------------- + + + --------------------- 19.9.1 (2019-12-28) --------------------- diff --git a/packages/tool_util/galaxy/project_galaxy_tool_util.py b/packages/tool_util/galaxy/project_galaxy_tool_util.py index 3a4ac74fc90..c9c01454c57 100644 --- a/packages/tool_util/galaxy/project_galaxy_tool_util.py +++ b/packages/tool_util/galaxy/project_galaxy_tool_util.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -__version__ = '19.9.1' +__version__ = '19.9.2.dev0' PROJECT_NAME = "galaxy-tool-util" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" From 67b7148d09a090f0223f98e1a69693ddc9196353 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Sun, 29 Dec 2019 19:15:20 +0100 Subject: [PATCH 047/101] Test return code --- lib/galaxy/jobs/runners/util/cli/shell/local.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/galaxy/jobs/runners/util/cli/shell/local.py b/lib/galaxy/jobs/runners/util/cli/shell/local.py index 6132655b5ff..2af0e2c509a 100644 --- a/lib/galaxy/jobs/runners/util/cli/shell/local.py +++ b/lib/galaxy/jobs/runners/util/cli/shell/local.py @@ -34,6 +34,8 @@ class LocalShell(BaseShellExec): True >>> exec_result.stdout.strip() == u'Hello World' True + >>> exec_result.returncode + 0 >>> exec_result = exec_python("import time; time.sleep(10)", timeout=1, timeout_check_interval=.1) >>> exec_result.stdout == u'' True From 3859735c27b894aaa30dec2f62206e7bee001596 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Sun, 29 Dec 2019 19:13:17 +0100 Subject: [PATCH 048/101] Fix LocalShell returncode It appears polling once after completionn is necessary to get the correct returncode. --- lib/galaxy/jobs/runners/util/cli/shell/local.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/galaxy/jobs/runners/util/cli/shell/local.py b/lib/galaxy/jobs/runners/util/cli/shell/local.py index 2af0e2c509a..c4deeeb3624 100644 --- a/lib/galaxy/jobs/runners/util/cli/shell/local.py +++ b/lib/galaxy/jobs/runners/util/cli/shell/local.py @@ -65,6 +65,8 @@ class LocalShell(BaseShellExec): kill_pg(p.pid) return Bunch(stdout=u'', stderr=TIMEOUT_ERROR_MESSAGE, returncode=TIMEOUT_RETURN_CODE) outf.seek(0) + # Need to poll once to establish return code + p.poll() return Bunch(stdout=_read_str(outf), stderr=_read_str(p.stderr), returncode=p.returncode) From 50ab5397b6dfa985b8d98ec772ede52e25cf1419 Mon Sep 17 00:00:00 2001 From: John Chilton Date: Wed, 20 Nov 2019 20:57:16 +0100 Subject: [PATCH 049/101] Fix none type exception in provided metadata handling. --- lib/galaxy/tool_util/provided_metadata.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/galaxy/tool_util/provided_metadata.py b/lib/galaxy/tool_util/provided_metadata.py index 6c68d4488b6..b8be575e4c4 100644 --- a/lib/galaxy/tool_util/provided_metadata.py +++ b/lib/galaxy/tool_util/provided_metadata.py @@ -110,7 +110,7 @@ class LegacyToolProvidedMetadata(BaseToolProvidedMetadata): line = stringify_dictionary_keys(json.loads(line)) assert 'type' in line except Exception: - log.exception('(%s) Got JSON data from tool, but data is improperly formatted or no "type" key in data' % job_wrapper.job_id) + log.exception('(%s) Got JSON data from tool, but data is improperly formatted or no "type" key in data' % getattr(job_wrapper, "job_id", None)) log.debug('Offending data was: %s' % line) continue # Set the dataset id if it's a dataset entry and isn't set. From 3626950f6ed88c2c2e29d5f31c598aaf76e4c4b9 Mon Sep 17 00:00:00 2001 From: xgaia Date: Mon, 6 Jan 2020 15:13:15 +0100 Subject: [PATCH 050/101] add missing env --- tools/interactive/interactivetool_askomics.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/interactive/interactivetool_askomics.xml b/tools/interactive/interactivetool_askomics.xml index cc18516e770..94cf111a2f3 100644 --- a/tools/interactive/interactivetool_askomics.xml +++ b/tools/interactive/interactivetool_askomics.xml @@ -16,6 +16,7 @@ Galaxy ${__user_name__} ${__user_email__} + ${__user_name__} $__galaxy_url__ From 5f15d5caa4402d0a5ac162f663e10c8530a7f564 Mon Sep 17 00:00:00 2001 From: xgaia Date: Mon, 6 Jan 2020 15:17:06 +0100 Subject: [PATCH 051/101] upgrade tool to 3.2.1 --- tools/interactive/interactivetool_askomics.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/interactive/interactivetool_askomics.xml b/tools/interactive/interactivetool_askomics.xml index 94cf111a2f3..e2ec52f1144 100644 --- a/tools/interactive/interactivetool_askomics.xml +++ b/tools/interactive/interactivetool_askomics.xml @@ -1,7 +1,7 @@ a visual SPARQL query builder - askomics/flaskomics-with-dependencies:3.2.0 + askomics/flaskomics-with-dependencies:3.2.1 From 54e8dc64e3d3ddc2816432c4df9d02f09da9a180 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Mon, 6 Jan 2020 12:32:51 -0500 Subject: [PATCH 052/101] Add static-safe mapping to config management; was previously only defined in uwsgi default args which not everything uses. --- lib/galaxy/config/config_manage.py | 6 ++++++ lib/galaxy/config/sample/galaxy.yml.sample | 5 +++++ lib/galaxy/config/sample/reports.yml.sample | 5 +++++ lib/galaxy/config/sample/tool_shed.yml.sample | 5 +++++ lib/galaxy/config/script.py | 3 +++ 5 files changed, 24 insertions(+) diff --git a/lib/galaxy/config/config_manage.py b/lib/galaxy/config/config_manage.py index aacfea0c046..f88eff40452 100644 --- a/lib/galaxy/config/config_manage.py +++ b/lib/galaxy/config/config_manage.py @@ -101,6 +101,12 @@ UWSGI_OPTIONS = OrderedDict([ 'default': '/favicon.ico=static/favicon.ico', 'type': 'str', }), + ('static-safe', { + 'key': 'static-safe', + 'desc': """Allow serving images out of `client`. Most modern Galaxy interfaces bundle all of this, but some older pages still serve these via symlink, requiring this rule.""", + 'default': 'client/galaxy/images', + 'type': 'str', + }), ('master', { 'desc': """Enable the master process manager. Disabled by default for maximum compatibility with CTRL+C, but should be enabled for use with --daemon and/or production deployments.""", 'default': False, diff --git a/lib/galaxy/config/sample/galaxy.yml.sample b/lib/galaxy/config/sample/galaxy.yml.sample index eccf4c67895..9fa6e76623f 100644 --- a/lib/galaxy/config/sample/galaxy.yml.sample +++ b/lib/galaxy/config/sample/galaxy.yml.sample @@ -50,6 +50,11 @@ uwsgi: # Mapping to serve the favicon. static-map: /favicon.ico=static/favicon.ico + # Allow serving images out of `client`. Most modern Galaxy interfaces + # bundle all of this, but some older pages still serve these via + # symlink, requiring this rule. + static-safe: client/galaxy/images + # Enable the master process manager. Disabled by default for maximum # compatibility with CTRL+C, but should be enabled for use with # --daemon and/or production deployments. diff --git a/lib/galaxy/config/sample/reports.yml.sample b/lib/galaxy/config/sample/reports.yml.sample index a0d21cbc3a0..b207fd53bd7 100644 --- a/lib/galaxy/config/sample/reports.yml.sample +++ b/lib/galaxy/config/sample/reports.yml.sample @@ -32,6 +32,11 @@ uwsgi: # Mapping to serve the favicon. static-map: /favicon.ico=static/favicon.ico + # Allow serving images out of `client`. Most modern Galaxy interfaces + # bundle all of this, but some older pages still serve these via + # symlink, requiring this rule. + static-safe: client/galaxy/images + # Enable the master process manager. Disabled by default for maximum # compatibility with CTRL+C, but should be enabled for use with # --daemon and/or production deployments. diff --git a/lib/galaxy/config/sample/tool_shed.yml.sample b/lib/galaxy/config/sample/tool_shed.yml.sample index b8e5b169221..236e4b7430c 100644 --- a/lib/galaxy/config/sample/tool_shed.yml.sample +++ b/lib/galaxy/config/sample/tool_shed.yml.sample @@ -32,6 +32,11 @@ uwsgi: # Mapping to serve the favicon. static-map: /favicon.ico=static/favicon.ico + # Allow serving images out of `client`. Most modern Galaxy interfaces + # bundle all of this, but some older pages still serve these via + # symlink, requiring this rule. + static-safe: client/galaxy/images + # Enable the master process manager. Disabled by default for maximum # compatibility with CTRL+C, but should be enabled for use with # --daemon and/or production deployments. diff --git a/lib/galaxy/config/script.py b/lib/galaxy/config/script.py index f8bcb54cd66..03cfc0cd22f 100644 --- a/lib/galaxy/config/script.py +++ b/lib/galaxy/config/script.py @@ -37,6 +37,7 @@ DEFAULT_DB_CONN = 'sqlite:///./database/universe.sqlite?isolation_level=IMMEDIAT SAMPLES_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), 'sample')) GALAXY_CONFIG_TEMPLATE_FILE = os.path.join(SAMPLES_PATH, 'galaxy.yml.sample') STATIC_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, 'web', 'framework', 'static')) +CLIENT_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, os.pardir, 'client')) MSG_CONFIG_SUMMARY = """ For help on configuring Galaxy, consult the documentation at: \n {} @@ -55,6 +56,7 @@ GALAXY_CONFIG_SUBSTITUTIONS = { ' static-map: /static/style=static/style/blue': ' static-map: /static=${static_path}/style/blue', ' static-map: /static=static': ' static-map: /static=${static_path}', ' static-map: /favicon.ico=static/favicon.ico': ' static-map: /static=${static_path}/favicon.ico', + ' static-safe: client/galaxy/images': ' ${client_path}/galaxy/images', ' virtualenv: .venv': ' #venv: .venv # not used when running installed', ' pythonpath: lib': ' #pythonpath: lib # not used when running installed', ' #config_dir: false': ' config_dir: ${config_dir}', @@ -147,6 +149,7 @@ def _handle_galaxy_yml(args, config_dir, data_dir): uwsgi_transport=uwsgi_transport, config_dir=config_dir, data_dir=data_dir, + client_dir=CLIENT_PATH, static_path=STATIC_PATH, database_connection=args.db_conn, ) From f682307d19374cf6755c73ea9411703b7002fa7c Mon Sep 17 00:00:00 2001 From: John Chilton Date: Tue, 7 Jan 2020 09:23:13 -0500 Subject: [PATCH 053/101] Fix tool shed tests for #9168. --- lib/galaxy/webapps/tool_shed/security/__init__.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/galaxy/webapps/tool_shed/security/__init__.py b/lib/galaxy/webapps/tool_shed/security/__init__.py index 17fc5bd5afe..b212e674e6e 100644 --- a/lib/galaxy/webapps/tool_shed/security/__init__.py +++ b/lib/galaxy/webapps/tool_shed/security/__init__.py @@ -34,6 +34,9 @@ class RBACAgent(object): """ return [x for x in [self.permitted_actions.get(action_string) for action_string in permitted_action_strings] if x is not None] + def create_user_role(self, user, app): + raise Exception("Unimplemented Method") + def create_private_user_role(self, user): raise Exception("Unimplemented Method") @@ -128,6 +131,9 @@ class CommunityRBACAgent(RBACAgent): self.associate_components(role=role, user=user) return role + def create_user_role(self, user, app): + self.get_private_user_role(user, auto_create=True) + def get_item_actions(self, action, item): # item must be one of: Dataset, Library, LibraryFolder, LibraryDataset, LibraryDatasetDatasetAssociation return [permission for permission in item.actions if permission.action == action.action] From e64bdd20e71cadbd7ff8bd8be09c819458d86497 Mon Sep 17 00:00:00 2001 From: John Chilton Date: Tue, 12 Nov 2019 19:43:29 -0500 Subject: [PATCH 054/101] remove unused toolshed_updater mako function --- .../admin/tool_shed_repository/common.mako | 20 ------------------- .../admin/tool_shed_repository/common.mako | 20 ------------------- 2 files changed, 40 deletions(-) diff --git a/lib/tool_shed/webapp/templates/admin/tool_shed_repository/common.mako b/lib/tool_shed/webapp/templates/admin/tool_shed_repository/common.mako index 16f9d793f5b..d2783be488b 100644 --- a/lib/tool_shed/webapp/templates/admin/tool_shed_repository/common.mako +++ b/lib/tool_shed/webapp/templates/admin/tool_shed_repository/common.mako @@ -376,26 +376,6 @@ -<%def name="tool_dependency_installation_updater()"> - <% - can_update = False - if query.count(): - # Get the first tool dependency to get to the tool shed repository. - tool_dependency = query[0] - tool_shed_repository = tool_dependency.tool_shed_repository - can_update = tool_shed_repository.tool_dependencies_being_installed or tool_shed_repository.missing_tool_dependencies - %> - %if can_update: - - %endif - - <%def name="repository_installation_updater()"> <% can_update = False diff --git a/templates/admin/tool_shed_repository/common.mako b/templates/admin/tool_shed_repository/common.mako index 16f9d793f5b..d2783be488b 100644 --- a/templates/admin/tool_shed_repository/common.mako +++ b/templates/admin/tool_shed_repository/common.mako @@ -376,26 +376,6 @@ -<%def name="tool_dependency_installation_updater()"> - <% - can_update = False - if query.count(): - # Get the first tool dependency to get to the tool shed repository. - tool_dependency = query[0] - tool_shed_repository = tool_dependency.tool_shed_repository - can_update = tool_shed_repository.tool_dependencies_being_installed or tool_shed_repository.missing_tool_dependencies - %> - %if can_update: - - %endif - - <%def name="repository_installation_updater()"> <% can_update = False From 2023eb8c85f23135229f2df166e7ade7d8155ec1 Mon Sep 17 00:00:00 2001 From: John Chilton Date: Tue, 12 Nov 2019 19:51:58 -0500 Subject: [PATCH 055/101] Remove unused tool_dependency_status_updates --- .../admin/tool_shed_repository/common.mako | 56 ------------------- .../admin/tool_shed_repository/common.mako | 56 ------------------- 2 files changed, 112 deletions(-) diff --git a/lib/tool_shed/webapp/templates/admin/tool_shed_repository/common.mako b/lib/tool_shed/webapp/templates/admin/tool_shed_repository/common.mako index d2783be488b..fcd2ff6a9a8 100644 --- a/lib/tool_shed/webapp/templates/admin/tool_shed_repository/common.mako +++ b/lib/tool_shed/webapp/templates/admin/tool_shed_repository/common.mako @@ -258,62 +258,6 @@ %endif -<%def name="dependency_status_updater()"> - - - <%def name="repository_installation_status_updater()"> - - <%def name="repository_installation_status_updater()"> - - -%if context.get("message"): - ${render_msg( message, status )} -%endif - -%if tool_shed_repositories: -
-
Monitor installing tool shed repositories
-
- - - - - - - - - %for tool_shed_repository in tool_shed_repositories: - <% - encoded_repository_id = trans.security.encode_id( tool_shed_repository.id ) - ids_of_tool_dependencies_missing_or_being_installed = [ trans.security.encode_id( td.id ) for td in tool_shed_repository.tool_dependencies_missing_or_being_installed ] - link_to_manage_tool_dependencies = tool_shed_repository.status in [ trans.install_model.ToolShedRepository.installation_status.INSTALLING_TOOL_DEPENDENCIES ] - %> - - - - - - - - %endfor -
NameDescriptionOwnerRevisionStatus
${tool_shed_repository.name|h}${tool_shed_repository.description}${tool_shed_repository.owner}${tool_shed_repository.changeset_revision}
${tool_shed_repository.status|h}
-
-
-
-%else: - ${render_msg("There is no repository being installed.", "info")} -%endif diff --git a/lib/tool_shed/webapp/templates/admin/tool_shed_repository/purge_repository_confirmation.mako b/lib/tool_shed/webapp/templates/admin/tool_shed_repository/purge_repository_confirmation.mako deleted file mode 100644 index 36a7f562b66..00000000000 --- a/lib/tool_shed/webapp/templates/admin/tool_shed_repository/purge_repository_confirmation.mako +++ /dev/null @@ -1,74 +0,0 @@ -<%inherit file="/base.mako"/> -<%namespace file="/message.mako" import="render_msg" /> -<%namespace file="/admin/tool_shed_repository/repository_actions_menu.mako" import="*" /> - -<%def name="stylesheets()"> - ${parent.stylesheets()} - ${h.css( "library" )} - - -<%def name="javascripts()"> - ${parent.javascripts()} - - -${render_galaxy_repository_actions( repository )} - -%if message: - ${render_msg( message, status )} -%endif - -
-

- Purging the repository named ${repository.name|h} will result in deletion of all records for the - following associated items from the database. Click the Purge button to purge this repository - and its associated items. -

-
- -
-
Purge tool shed repository ${repository.name|h}
-
- <% - tool_versions = 0 - tool_dependencies = 0 - required_repositories = 0 - orphan_repository_repository_dependency_association_records = 0 - orphan_repository_dependency_records = 0 - # Count this repository's tool version lineage chain links that will be purged. - for tool_version in repository.tool_versions: - for tool_version_association in tool_version.parent_tool_association: - tool_versions += 1 - for tool_version_association in tool_version.child_tool_association: - tool_versions += 1 - tool_versions += 1 - # Count this repository's associated tool dependencies that will be purged. - for tool_dependency in repository.tool_dependencies: - tool_dependencies += 1 - # Count this repository's associated required repositories that will be purged. - for rrda in repository.required_repositories: - required_repositories += 1 - # Count any "orphan" repository_dependency records associated with the repository but not with any - # repository_repository_dependency_association records that will be purged. - for orphan_repository_dependency in \ - trans.sa_session.query( trans.app.install_model.RepositoryDependency ) \ - .filter( trans.app.install_model.RepositoryDependency.table.c.tool_shed_repository_id == repository.id ): - for orphan_rrda in \ - trans.sa_session.query( trans.app.install_model.RepositoryRepositoryDependencyAssociation ) \ - .filter( trans.app.install_model.RepositoryRepositoryDependencyAssociation.table.c.repository_dependency_id == orphan_repository_dependency.id ): - orphan_repository_repository_dependency_association_records += 1 - orphan_repository_dependency_records += 1 - %> - - - - - - -
Tool version records${tool_versions|h}
Tool dependency records${tool_dependencies|h}
Repository dependency records${required_repositories|h}
Orphan repository_repository_dependency_association records${orphan_repository_repository_dependency_association_records|h}
Orphan repository_dependency records${orphan_repository_dependency_records|h}
-
-
- -
-
-
- diff --git a/lib/tool_shed/webapp/templates/admin/tool_shed_repository/reselect_tool_panel_section.mako b/lib/tool_shed/webapp/templates/admin/tool_shed_repository/reselect_tool_panel_section.mako deleted file mode 100644 index d901b6d08e8..00000000000 --- a/lib/tool_shed/webapp/templates/admin/tool_shed_repository/reselect_tool_panel_section.mako +++ /dev/null @@ -1,101 +0,0 @@ -<%inherit file="/base.mako"/> -<%namespace file="/message.mako" import="render_msg" /> -<%namespace file="/admin/tool_shed_repository/common.mako" import="render_dependencies_section" /> -<%namespace file="/admin/tool_shed_repository/common.mako" import="render_readme_section" /> -<%namespace file="/webapps/tool_shed/repository/common.mako" import="*" /> -<%namespace file="/webapps/tool_shed/common/common.mako" import="*" /> - -<%def name="stylesheets()"> - ${parent.stylesheets()} - ${h.css( "library" )} - - -<%def name="javascripts()"> - ${parent.javascripts()} - ${container_javascripts()} - - -%if message: - ${render_msg( message, status )} -%endif - -
-
-
-
- -
-
- <% readme_files_dict = containers_dict.get( 'readme_files', None ) %> - %if readme_files_dict: -
- - -
Repository README files - may contain important installation or license information
-
- ${render_readme_section( containers_dict )} -
- %endif - %if has_repository_dependencies or includes_tool_dependencies: -
- - -
Confirm dependency installation
-
- ${render_dependencies_section( install_resolver_dependencies_check_box, install_repository_dependencies_check_box, install_tool_dependencies_check_box, containers_dict, revision_label=None, export=False )} - %endif - %if shed_tool_conf_select_field: -
- - -
Choose the configuration file whose tool_path setting will be used for installing repositories
-
- <% - if len( shed_tool_conf_select_field.options ) == 1: - select_help = "Your Galaxy instance is configured with 1 shed-related tool configuration file, so repositories will be " - select_help += "installed using its tool_path setting." - else: - select_help = "Your Galaxy instance is configured with %d shed-related tool configuration files, " % len( shed_tool_conf_select_field.options ) - select_help += "so select the file whose tool_path setting you want used for installing repositories." - %> -
- - ${render_select(shed_tool_conf_select_field)} -
- ${select_help|h} -
-
-
- %else: - - %endif - %if includes_tools_for_display_in_tool_panel: -
-
- ${render_checkbox(no_changes_check_box)} - -
- Uncheck and select a different tool panel section to load the tools into a different section in the tool panel. -
-
-
- - -
- Add a new tool panel section to contain the installed tools (optional). -
-
-
- - ${render_select(tool_panel_section_select_field)} -
- Choose an existing section in your tool panel to contain the installed tools (optional). -
-
- %endif -
- -
-
-
-
From 6b10f5c114e79e9e5a67cd8c1993bdedbe5fa209 Mon Sep 17 00:00:00 2001 From: John Chilton Date: Tue, 12 Nov 2019 20:14:35 -0500 Subject: [PATCH 059/101] Remove unused tool shed mako. --- .../deactivate_or_uninstall_repository.mako | 208 ------------------ 1 file changed, 208 deletions(-) delete mode 100644 lib/tool_shed/webapp/templates/admin/tool_shed_repository/deactivate_or_uninstall_repository.mako diff --git a/lib/tool_shed/webapp/templates/admin/tool_shed_repository/deactivate_or_uninstall_repository.mako b/lib/tool_shed/webapp/templates/admin/tool_shed_repository/deactivate_or_uninstall_repository.mako deleted file mode 100644 index 111832fea44..00000000000 --- a/lib/tool_shed/webapp/templates/admin/tool_shed_repository/deactivate_or_uninstall_repository.mako +++ /dev/null @@ -1,208 +0,0 @@ -<%inherit file="/base.mako"/> -<%namespace file="/message.mako" import="render_msg" /> -<%namespace file="/admin/tool_shed_repository/common.mako" import="*" /> -<%namespace file="/admin/tool_shed_repository/repository_actions_menu.mako" import="*" /> -<%namespace file="/webapps/tool_shed/common/common.mako" import="*" /> - -<% -repository = context.get( 'repository', None ) -if isinstance( repository, list ): - repositories = repository -else: - repositories = [ repository ] -%> - -%if len( repositories ) == 1: - ${render_galaxy_repository_actions( repositories[0] )} -%endif - -%if message: - ${render_msg( message, status )} -%endif - -
-
-%for repository in repositories: - -
${repository.name|h}
-
-
- - ${repository.description|h} -
-
-
- - ${repository.changeset_revision|h} -
-
- - ${repository.tool_shed|h} -
-
-
- - ${repository.owner|h} -
-
- - ${repository.deleted|h} -
-
- <% - can_deactivate_repository = repository.can_deactivate - can_uninstall_repository = repository.can_uninstall - %> - %if can_deactivate_repository: - - - - -
- -
-
- * The repository and all of its contents will remain on disk and can still be used by dependent items. -
- %if repository.includes_tools_for_display_in_tool_panel: -
- * The repository's tools will not be loaded into the tool panel. -
- %endif - %if repository.includes_tool_dependencies: -
- * The repository's installed tool dependencies will remain on disk. -
- %endif - %if repository.includes_datatypes: -
- * The repository's datatypes, datatype converters and display applications will be eliminated from the datatypes registry. -
- %endif -
- * The repository record's deleted column in the tool_shed_repository database table will be set to True. -
-
- %endif - %if can_uninstall_repository: - - - - -
- -
-
- * The repository and all of its contents will be removed from disk and can no longer be used by dependent items. -
- %if repository.includes_tools_for_display_in_tool_panel: -
- * The repository's tool tag sets will be removed from the tool config file in which they are defined. -
- %endif - %if repository.includes_tool_dependencies: -
- * The repository's installed tool dependencies will be removed from disk and can no longer be used by dependent items. -
-
- * Each associated tool dependency record's status column in the tool_dependency database table will be set to 'Uninstalled'. -
- %endif - %if repository.includes_datatypes: -
- * The repository's datatypes, datatype converters and display applications will be eliminated from the datatypes registry. -
- %endif -
- * The repository record's deleted column in the tool_shed_repository database table will be set to True. -
-
- * The repository record's uninstalled column in the tool_shed_repository database table will be set to True. -
-
-
- <% - irm = trans.app.installed_repository_manager - repository_tup = irm.get_repository_tuple_for_installed_repository_manager( repository ) - - # Get installed repositories that this repository requires. - installed_dependent_repositories = [] - installed_runtime_dependent_tool_dependencies = [] - installed_dependent_repositories = irm.installed_dependent_repositories_of_installed_repositories.get( repository_tup, [] ) - - # Get this repository's installed tool dependencies. - installed_tool_dependencies = irm.installed_tool_dependencies_of_installed_repositories.get( repository_tup, [] ) - - # Get installed runtime dependent tool dependencies of this repository's installed tool dependencies. - installed_runtime_dependent_tool_dependencies = [] - for itd_tup in installed_tool_dependencies: - installed_dependent_td_tups = \ - irm.installed_runtime_dependent_tool_dependencies_of_installed_tool_dependencies.get( itd_tup, [] ) - if installed_dependent_td_tups: - installed_runtime_dependent_tool_dependencies.extend( installed_dependent_td_tups ) - %> - %if installed_dependent_repositories or installed_runtime_dependent_tool_dependencies: - - - - -
- -
- %if installed_dependent_repositories: - -
    - %for installed_dependent_repository_tup in installed_dependent_repositories: - <% - tool_shed, name, owner, installed_changeset_revision = installed_dependent_repository_tup - %> -
  • Revision ${ installed_changeset_revision | h} of repository ${name | h} owned by ${owner | h}
  • - %endfor -
- %endif - %if installed_runtime_dependent_tool_dependencies: - -
    - %for td_tup in installed_runtime_dependent_tool_dependencies: - <% - tool_shed_repository_id, name, version, type = td_tup - containing_repository = irm.get_containing_repository_for_tool_dependency( td_tup ) - repository_name = containing_repository.name - changeset_revision = containing_repository.changeset_revision - owner = containing_repository.owner - %> -
  • - Version ${version | h} of ${type | h} ${name | h} contained in revision - ${changeset_revision | h} of repository ${repository_name | h} owned by ${owner | h} -
  • - %endfor -
- %endif -
- %endif - %endif -
-
-%endfor -
- <% - can_deactivate_repository = True in map( lambda x: x.can_deactivate, repositories ) - can_uninstall_repository = True in map( lambda x: x.can_uninstall, repositories ) - %> - %if can_deactivate_repository and can_uninstall_repository: - <% deactivate_uninstall_button_text = "Deactivate or Uninstall" %> - ${render_checkbox(remove_from_disk_check_box)} - -

- %elif can_deactivate_repository: - <% deactivate_uninstall_button_text = "Deactivate" %> - %else: - <% deactivate_uninstall_button_text = "Uninstall" %> - ##hack to mimic check box - - %endif - -
-
-
- From e18df9616300aaaf731bba32a524d6056d379ac5 Mon Sep 17 00:00:00 2001 From: John Chilton Date: Wed, 13 Nov 2019 08:44:54 -0500 Subject: [PATCH 060/101] Remove unused browse repository from admin toolshed. --- .../galaxy/controllers/admin_toolshed.py | 11 ------ .../browse_repository.mako | 36 ------------------- 2 files changed, 47 deletions(-) delete mode 100644 templates/admin/tool_shed_repository/browse_repository.mako diff --git a/lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py b/lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py index 618d90fbd68..b0778d2243c 100644 --- a/lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py +++ b/lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py @@ -57,17 +57,6 @@ class AdminToolshed(AdminGalaxy): message=message, status=status)) - @web.expose - @web.require_admin - def browse_repository(self, trans, **kwd): - message = escape(kwd.get('message', '')) - status = kwd.get('status', 'done') - repository = repository_util.get_installed_tool_shed_repository(trans.app, kwd['id']) - return trans.fill_template('/admin/tool_shed_repository/browse_repository.mako', - repository=repository, - message=message, - status=status) - @web.legacy_expose_api @web.require_admin def browse_repositories(self, trans, **kwd): diff --git a/templates/admin/tool_shed_repository/browse_repository.mako b/templates/admin/tool_shed_repository/browse_repository.mako deleted file mode 100644 index 0931cd34f54..00000000000 --- a/templates/admin/tool_shed_repository/browse_repository.mako +++ /dev/null @@ -1,36 +0,0 @@ -<%inherit file="/base.mako"/> -<%namespace file="/message.mako" import="render_msg" /> -<%namespace file="/admin/tool_shed_repository/common.mako" import="*" /> -<%namespace file="/admin/tool_shed_repository/repository_actions_menu.mako" import="*" /> - -<%def name="stylesheets()"> - ${parent.stylesheets()} - ${h.css( "dynatree_skin/ui.dynatree" )} - - -<%def name="javascripts()"> - ${parent.javascripts()} - ## ${h.js( "libs/jquery/jquery-ui", "libs/jquery/jquery.dynatree" )} - ${browse_files(repository.name, repository.repo_files_directory(trans.app))} - - -${render_galaxy_repository_actions( repository )} - -%if message: - ${render_msg( message, status )} -%endif - -
-
Browse ${repository.name|h} revision ${repository.changeset_revision} files
-
-
- -
- Loading... -
-
-
-
-
-
-
From 88a6fdd656eb11b6abcd10247df2437baf7d9d11 Mon Sep 17 00:00:00 2001 From: John Chilton Date: Wed, 13 Nov 2019 11:52:24 -0500 Subject: [PATCH 061/101] Change update_tool_shed_status in tool shed twill test to test API endpoint. --- lib/tool_shed/test/base/twilltestcase.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/tool_shed/test/base/twilltestcase.py b/lib/tool_shed/test/base/twilltestcase.py index d5f92adbe4b..8aa315cb93d 100644 --- a/lib/tool_shed/test/base/twilltestcase.py +++ b/lib/tool_shed/test/base/twilltestcase.py @@ -1580,10 +1580,9 @@ class ShedTwillTestCase(FunctionalTestCase): self.check_for_strings(strings_displayed, strings_not_displayed) def update_tool_shed_status(self): - params = { - 'all_installed_repositories': True - } - self.visit_galaxy_url('/admin_toolshed/update_tool_shed_status_for_installed_repository', params=params) + api_key = get_master_api_key() + response = requests.get(self.galaxy_url + "/api/tool_shed_repositories/check_for_updates?key=" + api_key) + assert response.status_code != 403, response.content def upload_file(self, repository, From 4731e742ef8ec44054aa7b91df2ff80a28053494 Mon Sep 17 00:00:00 2001 From: John Chilton Date: Tue, 7 Jan 2020 13:50:01 -0500 Subject: [PATCH 062/101] Cleanup now unused update check code? --- lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py | 9 --------- .../galaxy_install/grids/admin_toolshed_grids.py | 4 ---- 2 files changed, 13 deletions(-) diff --git a/lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py b/lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py index b0778d2243c..3662647a770 100644 --- a/lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py +++ b/lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py @@ -1266,12 +1266,3 @@ class AdminToolshed(AdminGalaxy): id=trans.security.encode_id(repository.id), message=message, status=status)) - - @web.expose - @web.require_admin - def update_tool_shed_status_for_installed_repository(self, trans, **kwd): - message, status = repository_util.check_for_updates(trans.app, trans.install_model, kwd.get('id', None)) - return trans.response.send_redirect(web.url_for(controller='admin', - action='repositories', - message=message, - status=status)) diff --git a/lib/tool_shed/galaxy_install/grids/admin_toolshed_grids.py b/lib/tool_shed/galaxy_install/grids/admin_toolshed_grids.py index 289cad2458d..b78e6d22ea2 100644 --- a/lib/tool_shed/galaxy_install/grids/admin_toolshed_grids.py +++ b/lib/tool_shed/galaxy_install/grids/admin_toolshed_grids.py @@ -150,10 +150,6 @@ class InstalledRepositoryGrid(grids.Grid): visible=False, filterable="standard")) global_actions = [ - grids.GridAction(label="Update tool shed status", - url_args=dict(controller='admin_toolshed', - action='update_tool_shed_status_for_installed_repository', - all_installed_repositories=True)) ] operations = [grids.GridOperation(label="Update tool shed status", condition=(lambda item: not item.deleted), From 6ba2fafa5ea18a841789917a0c41727e6c987191 Mon Sep 17 00:00:00 2001 From: xgaia Date: Mon, 6 Jan 2020 15:13:15 +0100 Subject: [PATCH 063/101] add missing env --- tools/interactive/interactivetool_askomics.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/interactive/interactivetool_askomics.xml b/tools/interactive/interactivetool_askomics.xml index cc18516e770..94cf111a2f3 100644 --- a/tools/interactive/interactivetool_askomics.xml +++ b/tools/interactive/interactivetool_askomics.xml @@ -16,6 +16,7 @@ Galaxy ${__user_name__} ${__user_email__} + ${__user_name__} $__galaxy_url__ From 099da43ce8c3d4197067f99335704b5318b3134a Mon Sep 17 00:00:00 2001 From: xgaia Date: Mon, 6 Jan 2020 15:17:06 +0100 Subject: [PATCH 064/101] upgrade tool to 3.2.1 --- tools/interactive/interactivetool_askomics.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/interactive/interactivetool_askomics.xml b/tools/interactive/interactivetool_askomics.xml index 94cf111a2f3..e2ec52f1144 100644 --- a/tools/interactive/interactivetool_askomics.xml +++ b/tools/interactive/interactivetool_askomics.xml @@ -1,7 +1,7 @@ a visual SPARQL query builder - askomics/flaskomics-with-dependencies:3.2.0 + askomics/flaskomics-with-dependencies:3.2.1 From cd3936bfb0f2004f479274c7a6fa7e16b2c145a8 Mon Sep 17 00:00:00 2001 From: Sergey Golitsynskiy Date: Tue, 7 Jan 2020 12:17:02 -0500 Subject: [PATCH 065/101] Check return value of quick_load --- lib/galaxy/tools/toolbox/base.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/galaxy/tools/toolbox/base.py b/lib/galaxy/tools/toolbox/base.py index cc0396fffd1..2e41377c793 100644 --- a/lib/galaxy/tools/toolbox/base.py +++ b/lib/galaxy/tools/toolbox/base.py @@ -839,8 +839,7 @@ class AbstractToolBox(Dictifiable, ManagesIntegratedToolPanelMixin): if os.path.isdir(child_path) and recursive: self.__watch_directory(child_path, elems, integrated_elems, load_panel_dict, recursive) elif self._looks_like_a_tool(child_path): - quick_load(child_path, async_load=False) - tool_loaded = True + tool_loaded = quick_load(child_path, async_load=False) if (tool_loaded or force_watch) and self._tool_watcher: self._tool_watcher.watch_directory(directory, quick_load) From 1cafdf9397fee4f08e8cb8391baaadc8d7d2926b Mon Sep 17 00:00:00 2001 From: Sergey Golitsynskiy Date: Tue, 7 Jan 2020 12:54:45 -0500 Subject: [PATCH 066/101] Make it explicit Co-Authored-By: Nicola Soranzo --- lib/galaxy/tools/toolbox/base.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/galaxy/tools/toolbox/base.py b/lib/galaxy/tools/toolbox/base.py index 2e41377c793..3c25ca9e23a 100644 --- a/lib/galaxy/tools/toolbox/base.py +++ b/lib/galaxy/tools/toolbox/base.py @@ -839,7 +839,8 @@ class AbstractToolBox(Dictifiable, ManagesIntegratedToolPanelMixin): if os.path.isdir(child_path) and recursive: self.__watch_directory(child_path, elems, integrated_elems, load_panel_dict, recursive) elif self._looks_like_a_tool(child_path): - tool_loaded = quick_load(child_path, async_load=False) + tool_id = quick_load(child_path, async_load=False) + tool_loaded = bool(tool_id) if (tool_loaded or force_watch) and self._tool_watcher: self._tool_watcher.watch_directory(directory, quick_load) From ed4f538d2cb35c6ca83fcaa5d4a8adbdd32b590b Mon Sep 17 00:00:00 2001 From: Nicola Soranzo Date: Wed, 8 Jan 2020 12:11:49 +0000 Subject: [PATCH 067/101] Full Python dependencies update using `make update-dependencies`. --- .../default/pinned-dev-requirements.txt | 22 ++++---- .../pipfiles/default/pinned-requirements.txt | 53 +++++++++---------- 2 files changed, 37 insertions(+), 38 deletions(-) diff --git a/lib/galaxy/dependencies/pipfiles/default/pinned-dev-requirements.txt b/lib/galaxy/dependencies/pipfiles/default/pinned-dev-requirements.txt index d5784c22828..34360b2b315 100644 --- a/lib/galaxy/dependencies/pipfiles/default/pinned-dev-requirements.txt +++ b/lib/galaxy/dependencies/pipfiles/default/pinned-dev-requirements.txt @@ -4,20 +4,20 @@ alabaster==0.7.12 argh==0.26.2 atomicwrites==1.3.0 attrs==19.3.0 -babel==2.7.0 +babel==2.8.0 certifi==2019.11.28 chardet==3.0.4 commonmark==0.9.1 configparser==4.0.2 ; python_version < '3.2' contextlib2==0.6.0.post1 ; python_version < '3.5' -coverage==4.5.4 +coverage==5.0.2 docutils==0.15.2 funcsigs==1.0.2 ; python_version < '3.3' -future==0.18.2 +future==0.18.2 ; python_version < '3' gunicorn==19.10.0 idna==2.8 -imagesize==1.1.0 -importlib-metadata==1.2.0 ; python_version < '3.8' +imagesize==1.2.0 +importlib-metadata==1.3.0 ; python_version < '3.8' jinja2==2.10.3 lxml==4.4.2 markdown==3.1.1 @@ -27,24 +27,24 @@ mock==3.0.5 more-itertools==5.0.0 nose==1.3.7 nosehtml==0.4.5 -packaging==19.2 +packaging==20.0 pathlib2==2.3.2 ; python_version < '3.6' pathtools==0.1.2 pluggy==0.13.1 port-for==0.4 psutil==5.6.7 -py==1.8.0 +py==1.8.1 pygithub3==0.5.1 ; python_version < '3' pygments==2.5.2 -pyparsing==2.4.5 +pyparsing==2.4.6 pytest-cov==2.8.1 pytest-html==1.22.1 pytest-metadata==1.8.0 pytest-postgresql==1.4.1 pytest-pythonpath==0.7.3 -pytest==4.6.6 +pytest==4.6.9 pytz==2019.3 -pyyaml==5.2 +pyyaml==5.3 recommonmark==0.6.0 requests==2.22.0 scandir==1.10.0 ; python_version < '3.5' @@ -60,5 +60,5 @@ twill==0.9.1 ; python_version < '3' typing==3.7.4.1 ; python_version < '3.5' urllib3==1.25.7 ; python_version == '2.7' watchdog==0.9.0 -wcwidth==0.1.7 ; sys_platform != 'win32' +wcwidth==0.1.8 ; sys_platform != 'win32' zipp==0.6.0 diff --git a/lib/galaxy/dependencies/pipfiles/default/pinned-requirements.txt b/lib/galaxy/dependencies/pipfiles/default/pinned-requirements.txt index b7ff526367a..c0463e70b71 100644 --- a/lib/galaxy/dependencies/pipfiles/default/pinned-requirements.txt +++ b/lib/galaxy/dependencies/pipfiles/default/pinned-requirements.txt @@ -18,7 +18,7 @@ azure-nspkg==3.0.2 azure-storage-blob==1.3.1 azure-storage-common==1.4.2 azure-storage-nspkg==3.1.0 -babel==2.7.0 +babel==2.8.0 bagit==1.7.0 bcrypt==3.1.7 bdbag==1.5.6 @@ -37,7 +37,7 @@ certifi==2019.11.28 cffi==1.13.2 chardet==3.0.4 cheetah3==3.2.4 -cliff==2.16.0 +cliff==2.17.0 cloudauthz==0.6.0 cloudbridge==2.0.0 cmd2==0.8.9 @@ -53,22 +53,21 @@ dictobj==0.4 docopt==0.6.2 docutils==0.15.2 dogpile.cache==0.9.0 -ecdsa==0.14.1 +ecdsa==0.15 enum34==1.1.6 ; python_version < '3.4' fabric3==1.14.post1 funcsigs==1.0.2 ; python_version < '3.3' functools32==3.2.3.post2 ; python_version < '3.2' -future==0.18.2 futures==3.3.0 ; python_version == '2.6' or python_version == '2.7' galaxy-sequence-utils==1.1.3 google-api-python-client==1.7.8 google-auth-httplib2==0.0.3 -google-auth==1.7.1 +google-auth==1.10.0 gxformat2==0.10.1 h5py==2.10.0 -httplib2==0.14.0 +httplib2==0.15.0 idna==2.8 -importlib-metadata==1.2.0 ; python_version < '3.8' +importlib-metadata==1.3.0 ; python_version < '3.8' ipaddress==1.0.23 ; python_version < '3.3' isa-rwval==0.10.7 iso8601==0.1.12 @@ -78,13 +77,13 @@ jsonpatch==1.24 jsonpointer==2.0 jsonschema==3.2.0 keystoneauth1==3.18.0 -kombu==4.6.6 +kombu==4.6.7 lockfile==0.12.2 lxml==4.4.2 mako==1.1.0 markdown==3.1.1 markupsafe==1.1.1 -mercurial==5.2 +mercurial==5.2.2 mistune==0.8.4 monotonic==1.5 more-itertools==5.0.0 @@ -96,25 +95,25 @@ mypy-extensions==0.4.3 netaddr==0.7.19 netifaces==0.10.9 networkx==1.11 -nodeenv==1.3.3 +nodeenv==1.3.4 nose==1.3.7 -numpy==1.16.5 +numpy==1.16.6 oauth2client==4.1.3 oauthlib==3.1.0 openstacksdk==0.17.0 os-client-config==1.33.0 os-service-types==1.7.0 -osc-lib==1.14.1 -oslo.config==6.12.0 +osc-lib==1.15.0 +oslo.config==7.0.0 oslo.context==2.23.0 -oslo.i18n==3.25.0 -oslo.log==3.45.0 +oslo.i18n==3.25.1 +oslo.log==3.45.2 oslo.serialization==2.29.2 -oslo.utils==3.42.0 -packaging==19.2 -paramiko==2.7.0 +oslo.utils==3.42.1 +packaging==20.0 +paramiko==2.7.1 parsley==1.3 -paste==3.2.3 +paste==3.2.4 pastedeploy==2.0.1 pastescript==3.2.0 pathlib2==2.3.2 ; python_version < '3.6' @@ -133,16 +132,16 @@ pyjwt==1.7.1 pykwalify==1.7.0 pynacl==1.3.0 pyopenssl==19.1.0 -pyparsing==2.4.5 +pyparsing==2.4.6 pyperclip==1.7.0 -pyrsistent==0.15.6 +pyrsistent==0.15.7 pysam==0.15.2 pysftp==0.2.9 python-cinderclient==4.0.0 python-dateutil==2.8.1 python-genomespaceclient==1.2.0 python-glanceclient==2.12.0 -python-jose==3.0.1 +python-jose==3.1.0 python-keystoneclient==3.17.0 python-neutronclient==6.9.0 python-novaclient==11.0.0 @@ -150,7 +149,7 @@ python-openid==2.2.5 ; python_version < '3.0' python-swiftclient==3.6.0 pytz==2019.3 pyuwsgi==2.0.18.post0 -pyyaml==5.2 +pyyaml==5.3 rdflib-jsonld==0.4.0 rdflib==4.2.2 repoze.lru==0.7 @@ -172,8 +171,8 @@ simplejson==3.17.0 six==1.11.0 social-auth-core[openidconnect]==3.1.0+gx0 sqlalchemy-migrate==0.13.0 -sqlalchemy-utils==0.35.0 -sqlalchemy==1.3.11 +sqlalchemy-utils==0.36.1 +sqlalchemy==1.3.12 sqlparse==0.3.0 stevedore==1.31.0 subprocess32==3.5.4 ; python_version < '3.0' @@ -184,11 +183,11 @@ typing-extensions==3.7.4.1 typing==3.7.4.1 ; python_version < '3.5' tzlocal==2.0.0 unicodecsv==0.14.1 ; python_version < '3.0' -uritemplate==3.0.0 +uritemplate==3.0.1 urllib3==1.25.7 ; python_version == '2.7' vine==1.3.0 warlock==1.3.3 -wcwidth==0.1.7 ; sys_platform != 'win32' +wcwidth==0.1.8 ; sys_platform != 'win32' webencodings==0.5.1 webob==1.8.5 whoosh==2.7.4 From b75f46a006df2a076ed9f46b588cc7417bc8797a Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Wed, 8 Jan 2020 16:04:00 -0500 Subject: [PATCH 068/101] Add require_login bypass for entire authnz controller. --- lib/galaxy/web/framework/webapp.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/galaxy/web/framework/webapp.py b/lib/galaxy/web/framework/webapp.py index 31dd71bd584..273eb40cc69 100644 --- a/lib/galaxy/web/framework/webapp.py +++ b/lib/galaxy/web/framework/webapp.py @@ -563,6 +563,10 @@ class GalaxyWebTransaction(base.DefaultWebTransaction, return except IndexError: pass + authnz_controller_base = url_for(controller='authnz', action='index') + if self.request.path.startswith(authnz_controller_base): + # All authnz requests pass through + return # redirect to root if the path is not in the list above if self.request.path not in allowed_paths: login_url = url_for(controller='root', action='login', redirect=self.request.path) From 6326a1eb8bbb2851f51245d777867cc0049f6764 Mon Sep 17 00:00:00 2001 From: John Chilton Date: Thu, 26 Dec 2019 16:00:55 -0500 Subject: [PATCH 069/101] Job Lock component. --- .../scripts/components/admin/JobLock.vue | 45 +++++++++++++++++++ .../galaxy/scripts/components/admin/Jobs.vue | 45 ++++++------------- 2 files changed, 59 insertions(+), 31 deletions(-) create mode 100644 client/galaxy/scripts/components/admin/JobLock.vue diff --git a/client/galaxy/scripts/components/admin/JobLock.vue b/client/galaxy/scripts/components/admin/JobLock.vue new file mode 100644 index 00000000000..d613b8236b6 --- /dev/null +++ b/client/galaxy/scripts/components/admin/JobLock.vue @@ -0,0 +1,45 @@ + + + diff --git a/client/galaxy/scripts/components/admin/Jobs.vue b/client/galaxy/scripts/components/admin/Jobs.vue index ce60f9909a7..5ed69a8bea2 100644 --- a/client/galaxy/scripts/components/admin/Jobs.vue +++ b/client/galaxy/scripts/components/admin/Jobs.vue @@ -1,8 +1,17 @@