{"action":"created","comment":{"url":"https://api.github.com/repos/refinery-platform/refinery-platform/pulls/comments/171372575","pull_request_review_id":100213503,"id":171372575,"diff_hunk":"@@ -2979,6 +2979,38 @@ def test_get_with_invalid_tool_type_request_param(self):\n         self._make_tools_get_request(tool_type=\"coffee\")\n         self.assertEqual(self.get_response.data, [])\n \n+    def _test_launch_vis_container(self, user_has_permission=True):\n+        self.create_tool(ToolDefinition.VISUALIZATION)\n+        self.assertFalse(self.tool.is_running())\n+\n+        if user_has_permission:\n+            assign_perm('core.read_dataset', self.user, self.tool.dataset)\n+\n+        # Need to set_password() to be able to login. Otherwise\n+        # usr.password in the hash representation which is not what the\n+        # login() expects\n+        temp_password = \"password\"\n+        self.user.set_password(temp_password)\n+        self.user.save()\n+        self.client.login(username=self.user.username,\n+                          password=temp_password)\n+\n+        with mock.patch.object(VisualizationTool, \"launch\") as launch_mock:\n+            get_response = self.client.get(\n+                \"{}/\".format(self.tool.get_relative_container_url())","path":"refinery/tool_manager/tests.py","position":31,"original_position":31,"commit_id":"a86d7bf5628e21958fbb369e2b5bcf9597b9e580","original_commit_id":"a86d7bf5628e21958fbb369e2b5bcf9597b9e580","user":{"login":"mccalluc","id":730388,"avatar_url":"https://avatars2.githubusercontent.com/u/730388?v=4","gravatar_id":"","url":"https://api.github.com/users/mccalluc","html_url":"https://github.com/mccalluc","followers_url":"https://api.github.com/users/mccalluc/followers","following_url":"https://api.github.com/users/mccalluc/following{/other_user}","gists_url":"https://api.github.com/users/mccalluc/gists{/gist_id}","starred_url":"https://api.github.com/users/mccalluc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mccalluc/subscriptions","organizations_url":"https://api.github.com/users/mccalluc/orgs","repos_url":"https://api.github.com/users/mccalluc/repos","events_url":"https://api.github.com/users/mccalluc/events{/privacy}","received_events_url":"https://api.github.com/users/mccalluc/received_events","type":"User","site_admin":false},"body":"Is the trailing slash required? ","created_at":"2018-02-28T20:17:53Z","updated_at":"2018-02-28T20:17:53Z","html_url":"https://github.com/refinery-platform/refinery-platform/pull/2638#discussion_r171372575","pull_request_url":"https://api.github.com/repos/refinery-platform/refinery-platform/pulls/2638","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/refinery-platform/refinery-platform/pulls/comments/171372575"},"html":{"href":"https://github.com/refinery-platform/refinery-platform/pull/2638#discussion_r171372575"},"pull_request":{"href":"https://api.github.com/repos/refinery-platform/refinery-platform/pulls/2638"}}},"pull_request":{"url":"https://api.github.com/repos/refinery-platform/refinery-platform/pulls/2638","id":172044864,"html_url":"https://github.com/refinery-platform/refinery-platform/pull/2638","diff_url":"https://github.com/refinery-platform/refinery-platform/pull/2638.diff","patch_url":"https://github.com/refinery-platform/refinery-platform/pull/2638.patch","issue_url":"https://api.github.com/repos/refinery-platform/refinery-platform/issues/2638","number":2638,"state":"open","locked":false,"title":"Scottx611x/persistent visualization urls","user":{"login":"scottx611x","id":5629547,"avatar_url":"https://avatars2.githubusercontent.com/u/5629547?v=4","gravatar_id":"","url":"https://api.github.com/users/scottx611x","html_url":"https://github.com/scottx611x","followers_url":"https://api.github.com/users/scottx611x/followers","following_url":"https://api.github.com/users/scottx611x/following{/other_user}","gists_url":"https://api.github.com/users/scottx611x/gists{/gist_id}","starred_url":"https://api.github.com/users/scottx611x/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scottx611x/subscriptions","organizations_url":"https://api.github.com/users/scottx611x/orgs","repos_url":"https://api.github.com/users/scottx611x/repos","events_url":"https://api.github.com/users/scottx611x/events{/privacy}","received_events_url":"https://api.github.com/users/scottx611x/received_events","type":"User","site_admin":false},"body":"I noticed this morning that although we have the ability to relaunch `VisualizationTools` from the UI, if one was to share the url of a running `VisualizationTool` with someone else who accesses said url after said `VisualizationTool's` container had been purged then they would get the \"Please Wait\" page indefinitely.\r\n\r\nThis PR relaunches `VisualizationTools` if they aren't already running when their url is accessed\r\n![feb-28-2018 14-17-20](https://user-images.githubusercontent.com/5629547/36807926-2b7e8ba0-1c92-11e8-94e7-2e726a77bddc.gif)","created_at":"2018-02-28T19:11:18Z","updated_at":"2018-02-28T20:17:53Z","closed_at":null,"merged_at":null,"merge_commit_sha":"651e7a5b583fbe16e10f0a487529b73da63604d3","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":{"url":"https://api.github.com/repos/refinery-platform/refinery-platform/milestones/52","html_url":"https://github.com/refinery-platform/refinery-platform/milestone/52","labels_url":"https://api.github.com/repos/refinery-platform/refinery-platform/milestones/52/labels","id":3038832,"number":52,"title":"Release 1.6.3","description":"Technical Debt\r\n\r\nNotes:\r\n* will need to \"reset\" migrations for the file_server app after deployment with `manage.py migrate --fake file_server zero` (see #2393)\r\n* stale Django contenttypes of DiskQuota model should be removed by running `manage.py migrate` (PR #2599)\r\n","creator":{"login":"jkmarx","id":9956764,"avatar_url":"https://avatars3.githubusercontent.com/u/9956764?v=4","gravatar_id":"","url":"https://api.github.com/users/jkmarx","html_url":"https://github.com/jkmarx","followers_url":"https://api.github.com/users/jkmarx/followers","following_url":"https://api.github.com/users/jkmarx/following{/other_user}","gists_url":"https://api.github.com/users/jkmarx/gists{/gist_id}","starred_url":"https://api.github.com/users/jkmarx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jkmarx/subscriptions","organizations_url":"https://api.github.com/users/jkmarx/orgs","repos_url":"https://api.github.com/users/jkmarx/repos","events_url":"https://api.github.com/users/jkmarx/events{/privacy}","received_events_url":"https://api.github.com/users/jkmarx/received_events","type":"User","site_admin":false},"open_issues":16,"closed_issues":48,"state":"open","created_at":"2018-01-16T13:04:08Z","updated_at":"2018-02-28T19:11:18Z","due_on":"2018-02-26T08:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/refinery-platform/refinery-platform/pulls/2638/commits","review_comments_url":"https://api.github.com/repos/refinery-platform/refinery-platform/pulls/2638/comments","review_comment_url":"https://api.github.com/repos/refinery-platform/refinery-platform/pulls/comments{/number}","comments_url":"https://api.github.com/repos/refinery-platform/refinery-platform/issues/2638/comments","statuses_url":"https://api.github.com/repos/refinery-platform/refinery-platform/statuses/a86d7bf5628e21958fbb369e2b5bcf9597b9e580","head":{"label":"refinery-platform:scottx611x/persistent_visualization_urls","ref":"scottx611x/persistent_visualization_urls","sha":"a86d7bf5628e21958fbb369e2b5bcf9597b9e580","user":{"login":"refinery-platform","id":16256162,"avatar_url":"https://avatars0.githubusercontent.com/u/16256162?v=4","gravatar_id":"","url":"https://api.github.com/users/refinery-platform","html_url":"https://github.com/refinery-platform","followers_url":"https://api.github.com/users/refinery-platform/followers","following_url":"https://api.github.com/users/refinery-platform/following{/other_user}","gists_url":"https://api.github.com/users/refinery-platform/gists{/gist_id}","starred_url":"https://api.github.com/users/refinery-platform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/refinery-platform/subscriptions","organizations_url":"https://api.github.com/users/refinery-platform/orgs","repos_url":"https://api.github.com/users/refinery-platform/repos","events_url":"https://api.github.com/users/refinery-platform/events{/privacy}","received_events_url":"https://api.github.com/users/refinery-platform/received_events","type":"Organization","site_admin":false},"repo":{"id":2838735,"name":"refinery-platform","full_name":"refinery-platform/refinery-platform","owner":{"login":"refinery-platform","id":16256162,"avatar_url":"https://avatars0.githubusercontent.com/u/16256162?v=4","gravatar_id":"","url":"https://api.github.com/users/refinery-platform","html_url":"https://github.com/refinery-platform","followers_url":"https://api.github.com/users/refinery-platform/followers","following_url":"https://api.github.com/users/refinery-platform/following{/other_user}","gists_url":"https://api.github.com/users/refinery-platform/gists{/gist_id}","starred_url":"https://api.github.com/users/refinery-platform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/refinery-platform/subscriptions","organizations_url":"https://api.github.com/users/refinery-platform/orgs","repos_url":"https://api.github.com/users/refinery-platform/repos","events_url":"https://api.github.com/users/refinery-platform/events{/privacy}","received_events_url":"https://api.github.com/users/refinery-platform/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/refinery-platform/refinery-platform","description":"The Refinery Platform is a data management, analysis and visualization system for bioinformatics and computational biology applications. The platforms consists of three major components: a data repository with rich metadata capabilities, a workflow engine based on the popular Galaxy system, and visualization tools to support the exploration and interpretation of results at all stages of the analysis process.","fork":false,"url":"https://api.github.com/repos/refinery-platform/refinery-platform","forks_url":"https://api.github.com/repos/refinery-platform/refinery-platform/forks","keys_url":"https://api.github.com/repos/refinery-platform/refinery-platform/keys{/key_id}","collaborators_url":"https://api.github.com/repos/refinery-platform/refinery-platform/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/refinery-platform/refinery-platform/teams","hooks_url":"https://api.github.com/repos/refinery-platform/refinery-platform/hooks","issue_events_url":"https://api.github.com/repos/refinery-platform/refinery-platform/issues/events{/number}","events_url":"https://api.github.com/repos/refinery-platform/refinery-platform/events","assignees_url":"https://api.github.com/repos/refinery-platform/refinery-platform/assignees{/user}","branches_url":"https://api.github.com/repos/refinery-platform/refinery-platform/branches{/branch}","tags_url":"https://api.github.com/repos/refinery-platform/refinery-platform/tags","blobs_url":"https://api.github.com/repos/refinery-platform/refinery-platform/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/refinery-platform/refinery-platform/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/refinery-platform/refinery-platform/git/refs{/sha}","trees_url":"https://api.github.com/repos/refinery-platform/refinery-platform/git/trees{/sha}","statuses_url":"https://api.github.com/repos/refinery-platform/refinery-platform/statuses/{sha}","languages_url":"https://api.github.com/repos/refinery-platform/refinery-platform/languages","stargazers_url":"https://api.github.com/repos/refinery-platform/refinery-platform/stargazers","contributors_url":"https://api.github.com/repos/refinery-platform/refinery-platform/contributors","subscribers_url":"https://api.github.com/repos/refinery-platform/refinery-platform/subscribers","subscription_url":"https://api.github.com/repos/refinery-platform/refinery-platform/subscription","commits_url":"https://api.github.com/repos/refinery-platform/refinery-platform/commits{/sha}","git_commits_url":"https://api.github.com/repos/refinery-platform/refinery-platform/git/commits{/sha}","comments_url":"https://api.github.com/repos/refinery-platform/refinery-platform/comments{/number}","issue_comment_url":"https://api.github.com/repos/refinery-platform/refinery-platform/issues/comments{/number}","contents_url":"https://api.github.com/repos/refinery-platform/refinery-platform/contents/{+path}","compare_url":"https://api.github.com/repos/refinery-platform/refinery-platform/compare/{base}...{head}","merges_url":"https://api.github.com/repos/refinery-platform/refinery-platform/merges","archive_url":"https://api.github.com/repos/refinery-platform/refinery-platform/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/refinery-platform/refinery-platform/downloads","issues_url":"https://api.github.com/repos/refinery-platform/refinery-platform/issues{/number}","pulls_url":"https://api.github.com/repos/refinery-platform/refinery-platform/pulls{/number}","milestones_url":"https://api.github.com/repos/refinery-platform/refinery-platform/milestones{/number}","notifications_url":"https://api.github.com/repos/refinery-platform/refinery-platform/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/refinery-platform/refinery-platform/labels{/name}","releases_url":"https://api.github.com/repos/refinery-platform/refinery-platform/releases{/id}","deployments_url":"https://api.github.com/repos/refinery-platform/refinery-platform/deployments","created_at":"2011-11-23T20:23:20Z","updated_at":"2018-02-08T06:15:10Z","pushed_at":"2018-02-28T19:11:18Z","git_url":"git://github.com/refinery-platform/refinery-platform.git","ssh_url":"git@github.com:refinery-platform/refinery-platform.git","clone_url":"https://github.com/refinery-platform/refinery-platform.git","svn_url":"https://github.com/refinery-platform/refinery-platform","homepage":"http://www.refinery-platform.org","size":76594,"stargazers_count":84,"watchers_count":84,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":14,"mirror_url":null,"archived":false,"open_issues_count":444,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":14,"open_issues":444,"watchers":84,"default_branch":"develop"}},"base":{"label":"refinery-platform:develop","ref":"develop","sha":"9dad32d9d05b29086826242ec7f92e2a4b349f3b","user":{"login":"refinery-platform","id":16256162,"avatar_url":"https://avatars0.githubusercontent.com/u/16256162?v=4","gravatar_id":"","url":"https://api.github.com/users/refinery-platform","html_url":"https://github.com/refinery-platform","followers_url":"https://api.github.com/users/refinery-platform/followers","following_url":"https://api.github.com/users/refinery-platform/following{/other_user}","gists_url":"https://api.github.com/users/refinery-platform/gists{/gist_id}","starred_url":"https://api.github.com/users/refinery-platform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/refinery-platform/subscriptions","organizations_url":"https://api.github.com/users/refinery-platform/orgs","repos_url":"https://api.github.com/users/refinery-platform/repos","events_url":"https://api.github.com/users/refinery-platform/events{/privacy}","received_events_url":"https://api.github.com/users/refinery-platform/received_events","type":"Organization","site_admin":false},"repo":{"id":2838735,"name":"refinery-platform","full_name":"refinery-platform/refinery-platform","owner":{"login":"refinery-platform","id":16256162,"avatar_url":"https://avatars0.githubusercontent.com/u/16256162?v=4","gravatar_id":"","url":"https://api.github.com/users/refinery-platform","html_url":"https://github.com/refinery-platform","followers_url":"https://api.github.com/users/refinery-platform/followers","following_url":"https://api.github.com/users/refinery-platform/following{/other_user}","gists_url":"https://api.github.com/users/refinery-platform/gists{/gist_id}","starred_url":"https://api.github.com/users/refinery-platform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/refinery-platform/subscriptions","organizations_url":"https://api.github.com/users/refinery-platform/orgs","repos_url":"https://api.github.com/users/refinery-platform/repos","events_url":"https://api.github.com/users/refinery-platform/events{/privacy}","received_events_url":"https://api.github.com/users/refinery-platform/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/refinery-platform/refinery-platform","description":"The Refinery Platform is a data management, analysis and visualization system for bioinformatics and computational biology applications. The platforms consists of three major components: a data repository with rich metadata capabilities, a workflow engine based on the popular Galaxy system, and visualization tools to support the exploration and interpretation of results at all stages of the analysis process.","fork":false,"url":"https://api.github.com/repos/refinery-platform/refinery-platform","forks_url":"https://api.github.com/repos/refinery-platform/refinery-platform/forks","keys_url":"https://api.github.com/repos/refinery-platform/refinery-platform/keys{/key_id}","collaborators_url":"https://api.github.com/repos/refinery-platform/refinery-platform/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/refinery-platform/refinery-platform/teams","hooks_url":"https://api.github.com/repos/refinery-platform/refinery-platform/hooks","issue_events_url":"https://api.github.com/repos/refinery-platform/refinery-platform/issues/events{/number}","events_url":"https://api.github.com/repos/refinery-platform/refinery-platform/events","assignees_url":"https://api.github.com/repos/refinery-platform/refinery-platform/assignees{/user}","branches_url":"https://api.github.com/repos/refinery-platform/refinery-platform/branches{/branch}","tags_url":"https://api.github.com/repos/refinery-platform/refinery-platform/tags","blobs_url":"https://api.github.com/repos/refinery-platform/refinery-platform/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/refinery-platform/refinery-platform/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/refinery-platform/refinery-platform/git/refs{/sha}","trees_url":"https://api.github.com/repos/refinery-platform/refinery-platform/git/trees{/sha}","statuses_url":"https://api.github.com/repos/refinery-platform/refinery-platform/statuses/{sha}","languages_url":"https://api.github.com/repos/refinery-platform/refinery-platform/languages","stargazers_url":"https://api.github.com/repos/refinery-platform/refinery-platform/stargazers","contributors_url":"https://api.github.com/repos/refinery-platform/refinery-platform/contributors","subscribers_url":"https://api.github.com/repos/refinery-platform/refinery-platform/subscribers","subscription_url":"https://api.github.com/repos/refinery-platform/refinery-platform/subscription","commits_url":"https://api.github.com/repos/refinery-platform/refinery-platform/commits{/sha}","git_commits_url":"https://api.github.com/repos/refinery-platform/refinery-platform/git/commits{/sha}","comments_url":"https://api.github.com/repos/refinery-platform/refinery-platform/comments{/number}","issue_comment_url":"https://api.github.com/repos/refinery-platform/refinery-platform/issues/comments{/number}","contents_url":"https://api.github.com/repos/refinery-platform/refinery-platform/contents/{+path}","compare_url":"https://api.github.com/repos/refinery-platform/refinery-platform/compare/{base}...{head}","merges_url":"https://api.github.com/repos/refinery-platform/refinery-platform/merges","archive_url":"https://api.github.com/repos/refinery-platform/refinery-platform/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/refinery-platform/refinery-platform/downloads","issues_url":"https://api.github.com/repos/refinery-platform/refinery-platform/issues{/number}","pulls_url":"https://api.github.com/repos/refinery-platform/refinery-platform/pulls{/number}","milestones_url":"https://api.github.com/repos/refinery-platform/refinery-platform/milestones{/number}","notifications_url":"https://api.github.com/repos/refinery-platform/refinery-platform/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/refinery-platform/refinery-platform/labels{/name}","releases_url":"https://api.github.com/repos/refinery-platform/refinery-platform/releases{/id}","deployments_url":"https://api.github.com/repos/refinery-platform/refinery-platform/deployments","created_at":"2011-11-23T20:23:20Z","updated_at":"2018-02-08T06:15:10Z","pushed_at":"2018-02-28T19:11:18Z","git_url":"git://github.com/refinery-platform/refinery-platform.git","ssh_url":"git@github.com:refinery-platform/refinery-platform.git","clone_url":"https://github.com/refinery-platform/refinery-platform.git","svn_url":"https://github.com/refinery-platform/refinery-platform","homepage":"http://www.refinery-platform.org","size":76594,"stargazers_count":84,"watchers_count":84,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":14,"mirror_url":null,"archived":false,"open_issues_count":444,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":14,"open_issues":444,"watchers":84,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/refinery-platform/refinery-platform/pulls/2638"},"html":{"href":"https://github.com/refinery-platform/refinery-platform/pull/2638"},"issue":{"href":"https://api.github.com/repos/refinery-platform/refinery-platform/issues/2638"},"comments":{"href":"https://api.github.com/repos/refinery-platform/refinery-platform/issues/2638/comments"},"review_comments":{"href":"https://api.github.com/repos/refinery-platform/refinery-platform/pulls/2638/comments"},"review_comment":{"href":"https://api.github.com/repos/refinery-platform/refinery-platform/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/refinery-platform/refinery-platform/pulls/2638/commits"},"statuses":{"href":"https://api.github.com/repos/refinery-platform/refinery-platform/statuses/a86d7bf5628e21958fbb369e2b5bcf9597b9e580"}},"author_association":"OWNER"}}
{"actor":{"display_login":"mccalluc"}}