Merge remote-tracking branch 'jmchilton/dev' into feature/pr_fs_access_job_version

This commit is contained in:
John Chilton
2017-05-01 10:28:40 -04:00
96 changed files with 564 additions and 298 deletions
+6
View File
@@ -97,6 +97,12 @@ done;
export GALAXY_TEST_SELENIUM_REMOTE=1
export GALAXY_TEST_SELENIUM_REMOTE_PORT="${SELENIUM_PORT}"
# Retry all failed Selenium tests a second time to deal
# with transiently failing tests. Failure information for
# first tests is still populated in database/test_errors
# and available at the top of the Jenkins test report.
export GALAXY_TEST_SELENIUM_RETRIES=1
# Access Galaxy on localhost via port $GALAXY_PORT
export GALAXY_TEST_PORT="${GALAXY_PORT}"
+6 -1
View File
@@ -1,3 +1,4 @@
sudo: false
language: python
python: 2.7
os:
@@ -24,9 +25,13 @@ matrix:
allow_failures:
- env: TOX_ENV=py27-lint-imports
addons:
apt:
packages:
- libxml2-utils
install:
- pip install tox
- if [ "$TOX_ENV" == "validate-test-tools" ]; then sudo apt-get install libxml2-utils; fi
- if [ "$TOX_ENV" == "qunit" ]; then bash -c 'cd test/qunit && npm install'; fi
- if [ "$TOX_ENV" == "first_startup" ]; then bash -c "bash scripts/common_startup.sh && wget -q https://github.com/jmchilton/galaxy-downloads/raw/master/db_gx_rev_0127.sqlite && mv db_gx_rev_0127.sqlite database/universe.sqlite && bash manage_db.sh -c ./config/galaxy.ini.sample upgrade"; fi
+1 -1
View File
@@ -16,7 +16,7 @@ following publications:
a platform for interactive large-scale genome analysis."
Genome Research. 2005 Oct; 15(10):1451-5.
See also: http://wiki.galaxyproject.org/CitingGalaxy
See also: https://galaxyproject.org/citing-galaxy
+5 -5
View File
@@ -22,14 +22,14 @@ OPEN_RESOURCE=bash -c 'open $$0 || xdg-open $$0'
SLIDESHOW_TO_PDF?=bash -c 'docker run --rm -v `pwd`:/cwd astefanutti/decktape /cwd/$$0 /cwd/`dirname $$0`/`basename -s .html $$0`.pdf'
all: help
@echo "This makefile is primarily used for building Galaxy's JS client. A sensible all target is not yet implemented."
@echo "This makefile is used for building Galaxy's JS client, documentation, and drive the release process. A sensible all target is not implemented."
# Building docs requires sphinx and utilities be installed (see issue 3166) as well as pandoc.
# Run following commands to setup the Python portion of these requirements:
docs: ## Generate HTML documentation.
# Run following commands to setup the Python portion of the requirements:
# $ ./scripts/common_startup.sh
# $ . .venv/bin/activate
# $ pip install sphinx sphinx_rtd_theme lxml recommonmark
docs: ## generate Sphinx HTML documentation, including API docs
# $ pip install -r lib/galaxy/dependencies/dev-requirements.txt
# You also need to install pandoc separately.
$(IN_VENV) $(MAKE) -C doc clean
$(IN_VENV) $(MAKE) -C doc html
+15 -3
View File
@@ -95,13 +95,16 @@ window.app = function app( options, bootstrapped ){
var queryObj = QUERY_STRING.parse( args.pop() );
args.push( queryObj );
if( callback ){
callback.apply( this, args );
if ( this.authenticate( args, name ) ) {
callback.apply( this, args );
} else {
this.push( Galaxy.root );
}
}
},
routes : {
'(/)' : 'home',
// TODO: remove annoying 'root' from root urls
'(/)root*' : 'home',
'(/)tours(/)(:tour_id)' : 'show_tours',
'(/)user(/)' : 'show_user',
@@ -109,6 +112,15 @@ window.app = function app( options, bootstrapped ){
'(/)custom_builds' : 'show_custom_builds'
},
require_login: [
'show_user',
'show_user_form'
],
authenticate: function( args, name ) {
return ( Galaxy.user && Galaxy.user.id ) || this.require_login.indexOf( name ) == -1;
},
show_tours : function( tour_id ){
if ( tour_id ){
Tours.giveTour( tour_id );
@@ -197,4 +209,4 @@ window.app = function app( options, bootstrapped ){
pushState : true,
});
});
};
};
@@ -151,7 +151,7 @@ var CitationListView = Backbone.View.extend({
' citations explicitly at this time. When writing up your analysis, please manually',
' review your histories and find all references',
' that should be cited in order to completely describe your work. Also, please remember to',
' <a href="https://wiki.galaxyproject.org/CitingGalaxy">cite Galaxy</a>.',
' <a href="https://galaxyproject.org/citing-galaxy">cite Galaxy</a>.',
'</div>',
].join('');
} else {
@@ -386,7 +386,7 @@ var FolderListView = Backbone.View.extend({
'</table>',
'<div class="empty-folder-message" style="display:none;">',
'This folder is either empty or you do not have proper access permissions to see the contents. If you expected something to show up',
' please consult the <a href="https://wiki.galaxyproject.org/Admin/DataLibraries/LibrarySecurity" target="_blank">library security wikipage</a>',
' please consult the <a href="https://galaxyproject.org/data-libraries/#permissions" target="_blank">library security wikipage</a>',
' or visit the <a href="https://biostar.usegalaxy.org/" target="_blank">Galaxy support site</a>.',
'</div>'
].join(''));
@@ -1151,7 +1151,7 @@ var FolderToolbarView = Backbone.View.extend({
'&nbsp;Details',
'</button>',
'<span class="help-button" data-toggle="tooltip" data-placement="top" title="Visit Libraries Wiki">',
'<a href="https://wiki.galaxyproject.org/DataLibraries/screen/FolderContents" target="_blank">',
'<a href="https://galaxyproject.org/data-libraries/screen/folder-contents/" target="_blank">',
'<button class="primary-button" type="button">',
'<span class="fa fa-question-circle"></span>',
'&nbsp;Help',
@@ -232,7 +232,7 @@ var LibraryListView = Backbone.View.extend({
'<% } else{ %>',
'<div>',
'There are no libraries visible to you here. If you expected some to show up please consult the',
' <a href="https://wiki.galaxyproject.org/Admin/DataLibraries/LibrarySecurity" target="_blank">library security wikipage</a>',
' <a href="https://galaxyproject.org/data-libraries/#permissions" target="_blank">library security wikipage</a>',
' or visit the <a href="https://biostar.usegalaxy.org/" target="_blank">Galaxy support site</a>.',
'</div>',
'<% }%>',
@@ -192,7 +192,7 @@ var LibraryToolbarView = Backbone.View.extend({
'</span>',
'<% } %>',
'<span class="help-button" data-toggle="tooltip" data-placement="top" title="Visit Libraries Wiki">',
'<a href="https://wiki.galaxyproject.org/DataLibraries/screen/ListOfLibraries" target="_blank">',
'<a href="https://galaxyproject.org/data-libraries/screen/list-of-libraries/" target="_blank">',
'<button class="primary-button" type="button"><span class="fa fa-question-circle"></span> Help</button>',
'</a>',
'</span>',
@@ -279,7 +279,7 @@ define( [ 'utils/utils', 'utils/deferred', 'mvc/ui/ui-misc', 'mvc/form/form-view
_.each( options.requirements, function( req, i ) {
requirements_message += req.name + ( req.version ? ' (Version ' + req.version + ')' : '' ) + ( i < nreq - 2 ? ', ' : ( i == nreq - 2 ? ' and ' : '' ) );
});
var requirements_link = $( '<a/>' ).attr( 'target', '_blank' ).attr( 'href', 'https://wiki.galaxyproject.org/Tools/Requirements' ).text( 'here' );
var requirements_link = $( '<a/>' ).attr( 'target', '_blank' ).attr( 'href', 'https://galaxyproject.org/tools/requirements/' ).text( 'here' );
return $( '<span/>' ).append( requirements_message + '. Click ' ).append( requirements_link ).append( ' for more information.' );
}
return 'No requirements found.';
@@ -151,15 +151,16 @@ define([ 'utils/utils', 'utils/deferred', 'mvc/ui/ui-misc', 'mvc/form/form-view'
if ( step.step_type == 'tool' ) {
var data_resolved = true;
FormData.visitInputs( step.inputs, function ( input, name, context ) {
var is_runtime_value = input.value && input.value.__class__ == 'RuntimeValue';
var is_data_input = ([ 'data', 'data_collection' ]).indexOf( input.type ) != -1;
var data_ref = context[ input.data_ref ];
input.step_linked && !self._isDataStep( input.step_linked ) && ( data_resolved = false );
input.options && ( ( input.options.length == 0 && !data_resolved ) || input.wp_linked ) && ( input.is_workflow = true );
data_ref && ( input.is_workflow = ( data_ref.step_linked && !self._isDataStep( data_ref.step_linked ) ) || input.wp_linked );
( is_data_input || ( input.value && input.value.__class__ == 'RuntimeValue' && !input.step_linked ) ) && ( step.collapsed = false );
input.value && input.value.__class__ == 'RuntimeValue' && ( input.value = null );
is_runtime_value && ( input.value = input.default_value );
input.flavor = 'workflow';
if ( !is_data_input && input.type !== 'hidden' && !input.wp_linked ) {
if ( !is_runtime_value && !is_data_input && input.type !== 'hidden' && !input.wp_linked ) {
if ( input.optional || ( !Utils.isEmpty( input.value ) && input.value !== '' ) ) {
input.collapsible_value = input.value;
input.collapsible_preview = true;
@@ -64,67 +64,43 @@ define(['utils/utils'], function( Utils ) {
/** Build color panel */
_build: function() {
var $content = this._content({
label : 'Theme Colors',
colors : this.colors.base,
padding : 10
});
this._content( { colors : this.colors.base } );
for ( var i in this.colors.theme ) {
var line_def = {};
if ( i == 0 ) {
line_def[ 'bottom' ] = true;
} else if ( i != this.colors.theme.length - 1 ) {
line_def[ 'top' ] = true;
line_def[ 'bottom' ] = true;
} else {
if ( i != this.colors.theme.length - 1 ) {
line_def[ 'top' ] = true;
line_def[ 'bottom' ] = true;
} else {
line_def[ 'top' ] = true;
line_def[ 'padding' ] = 5;
}
line_def[ 'top' ] = true;
}
line_def[ 'colors' ] = this.colors.theme[ i ];
this._content( line_def );
}
this._content({
label : 'Standard Colors',
colors : this.colors.standard,
padding : 5
});
this._content( { colors : this.colors.standard } );
},
/** Create content */
_content: function( options ) {
var label = options.label;
var colors = options.colors;
var padding = options.padding;
var top = options.top;
var bottom = options.bottom;
var colors = options.colors;
var $content = $( this._templateContent() );
var $label = $content.find( '.label' );
if ( options.label ) {
$label.html( options.label );
} else {
$label.hide();
}
var $line = $content.find( '.line' );
this.$panel.append( $content );
for ( var i in colors ) {
var $box = $( this._templateBox( colors[ i ] ) );
if ( top ) {
if ( options.top ) {
$box.css( 'border-top', 'none' );
$box.css( 'border-top-left-radius', '0px' );
$box.css( 'border-top-right-radius', '0px' );
}
if ( bottom ) {
if ( options.bottom ) {
$box.css( 'border-bottom', 'none' );
$box.css( 'border-bottom-left-radius', '0px' );
$box.css( 'border-bottom-right-radius', '0px' );
}
$line.append( $box );
}
if (padding) {
$line.css( 'padding-bottom', padding );
}
return $content;
},
@@ -136,7 +112,6 @@ define(['utils/utils'], function( Utils ) {
/** Content template */
_templateContent: function() {
return '<div class="ui-color-picker-content">' +
'<div class="label"/>' +
'<div class="line"/>' +
'</div>';
},
@@ -11,7 +11,7 @@ var Configurations = {
{ src: 'hdca', icon: 'fa-folder-o', tooltip: 'Dataset collection', multiple: false, batch: Batch.LINKED } ],
data_multiple: [
{ src: 'hda', icon: 'fa-files-o', tooltip: 'Multiple datasets', multiple: true, batch: Batch.DISABLED },
{ src: 'hdca', icon: 'fa-folder-o', tooltip: 'Dataset collection', multiple: false, batch: Batch.DISABLED } ],
{ src: 'hdca', icon: 'fa-folder-o', tooltip: 'Dataset collections', multiple: true, batch: Batch.DISABLED } ],
data_collection: [
{ src: 'hdca', icon: 'fa-folder-o', tooltip: 'Dataset collection', multiple: false, batch: Batch.DISABLED } ],
workflow_data: [
@@ -153,7 +153,7 @@ define( [ 'mvc/form/form-view', 'mvc/ui/ui-misc' ], function( Form, Ui ) {
return '<p class="ui-panel-footer">' +
'You are using <strong>' + options.nice_total_disk_usage + '</strong> of disk space in this Galaxy instance. ' +
( Galaxy.config.enable_quotas ? 'Your disk quota is: <strong>' + options.quota + '</strong>. ' : '' ) +
'Is your usage more than expected? See the <a href="https://wiki.galaxyproject.org/Learn/ManagingDatasets" target="_blank">documentation</a> for tips on how to find all of the data in your account.' +
'Is your usage more than expected? See the <a href="https://galaxyproject.org/learn/managing-datasets/" target="_blank">documentation</a> for tips on how to find all of the data in your account.' +
'</p>';
}
});
@@ -151,7 +151,7 @@ define( [ 'utils/utils', 'mvc/form/form-view', 'mvc/tool/tool-form-base' ], func
type : 'text',
value : '',
ignore : '',
help : 'This action will rename the output dataset. Click <a href="https://wiki.galaxyproject.org/Learn/AdvancedWorkflow/Variables">here</a> for more information. Valid inputs are: <strong>' + input_terminal_names.join(', ') + '</strong>.'
help : 'This action will rename the output dataset. Click <a href="https://galaxyproject.org/learn/advanced-workflow/variables/">here</a> for more information. Valid inputs are: <strong>' + input_terminal_names.join(', ') + '</strong>.'
},{
action : 'ChangeDatatypeAction',
pja_arg : 'newtype',
+1 -1
View File
@@ -741,7 +741,7 @@ var HeaderButtons = Backbone.View.extend({
$("#nodeSelectionView").show();
} },
{ icon_class: 'information', title: 'Phyloviz Help', on_click: function() {
window.open('https://wiki.galaxyproject.org/Learn/Visualization/PhylogeneticTree');
window.open('https://galaxyproject.org/learn/visualization/phylogenetic-tree/');
// https://docs.google.com/document/d/1AXFoJgEpxr21H3LICRs3EyMe1B1X_KFPouzIgrCz3zk/edit
} }
],
+10 -1
View File
@@ -772,13 +772,14 @@
.ui-color-picker-label {
float: left;
line-height: 1.2em;
margin-bottom: 5px;
}
.ui-color-picker-view {
height: 100%;
overflow: auto;
display: none;
float: left;
margin-top: 5px;
margin-bottom: 5px;
.ui-color-picker-panel {
width: 210px;
.ui-color-picker-content {
@@ -804,6 +805,14 @@
}
}
}
.ui-color-picker-content:first-child {
padding-top: 5px;
padding-bottom: 10px;
}
.ui-color-picker-content:last-child {
padding-top: 85px;
padding-bottom: 5px;
}
}
}
}
+50 -33
View File
@@ -11,9 +11,10 @@
# values are set to the default value. Relative paths are relative to the root
# Galaxy directory.
#
# Examples of many of these options are explained in more detail in the wiki:
# Examples of many of these options are explained in more detail in the Galaxy
# Community Hub.
#
# https://wiki.galaxyproject.org/Admin/Config
# https://galaxyproject.org/admin/config
#
# Config hackers are encouraged to check there before asking for help.
@@ -119,8 +120,8 @@ paste.app_factory = galaxy.web.buildapp:app_factory
# Slow query logging. Queries slower than the threshold indicated below will
# be logged to debug. A value of '0' is disabled. For example, you would set
# this to .005 to log all queries taking longer than 5 milliseconds
# slow_query_log_threshold = 0
# this to .005 to log all queries taking longer than 5 milliseconds.
#slow_query_log_threshold = 0
# By default, Galaxy will use the same database to track user data and
# tool shed install data. There are many situations in which it is
@@ -179,7 +180,7 @@ paste.app_factory = galaxy.web.buildapp:app_factory
# Path to the directory in which tool dependencies are placed. This is used by
# the Tool Shed to install dependencies and can also be used by administrators
# to manually install or link to dependencies. For details, see:
# https://wiki.galaxyproject.org/Admin/Config/ToolDependencies
# https://galaxyproject.org/admin/config/tool-dependencies
# Set the string to None to explicitly disable tool dependency handling.
# If this option is set to none or an invalid path, installing tools with dependencies
# from the Tool Shed will fail.
@@ -305,9 +306,9 @@ paste.app_factory = galaxy.web.buildapp:app_factory
# applied to the ToolDataTableManager at server start up.
#shed_tool_data_table_config = config/shed_tool_data_table_conf.xml
# Directory where data used by tools is located, see the samples in that
# directory and the wiki for help:
# https://wiki.galaxyproject.org/Admin/DataIntegration
# Directory where data used by tools is located. See the samples in that
# directory and the Galaxy Community Hub for help:
# https://galaxyproject.org/admin/data-integration
#tool_data_path = tool-data
# Directory where Tool Data Table related files will be placed
@@ -441,7 +442,7 @@ paste.app_factory = galaxy.web.buildapp:app_factory
#
# Configuration file for the object store
# If this is set and exists, it overrides any other objectstore settings.
# object_store_config_file = config/object_store_conf.xml
#object_store_config_file = config/object_store_conf.xml
# -- Mail and notification
@@ -461,7 +462,7 @@ paste.app_factory = galaxy.web.buildapp:app_factory
#smtp_password = None
# If your SMTP server requires SSL from the beginning of the connection
# smtp_ssl = False
#smtp_ssl = False
# On the user registration form, users may choose to join a mailing list. This
# is the address used to subscribe to the list. Uncomment and leave empty if you
@@ -483,7 +484,7 @@ paste.app_factory = galaxy.web.buildapp:app_factory
# URL of the support resource for the galaxy instance. Used in activation
# emails.
#instance_resource_url = https://wiki.galaxyproject.org/
#instance_resource_url = https://galaxyproject.org/
# E-mail domains blacklist is used for filtering out users that are using
# disposable email address during the registration. If their address domain
@@ -544,7 +545,7 @@ paste.app_factory = galaxy.web.buildapp:app_factory
# bypass security to display datasets. Please be aware that there are security
# implications if this is allowed. More details (including required changes to
# the proxy server config) are available in the Apache proxy documentation on
# the wiki.
# the Galaxy Community Hub.
#
# The list of servers in this sample config are for the UCSC Main, Test and
# Archaea browsers, but the default if left commented is to not allow any
@@ -586,11 +587,16 @@ nglims_config_file = tool-data/nglims.yaml
# - $locale (complete format string for the server locale),
# - $iso8601 (complete format string as specified by ISO 8601 international
# standard).
# pretty_datetime_format = $locale (UTC)
#pretty_datetime_format = $locale (UTC)
# URL (with schema http/https) of the Galaxy instance as accessible within your
# local network - if specified used as a default by pulsar file staging and
# Jupyter Docker container for communicating back with Galaxy via the API.
#
# If you are attempting to setup GIEs on Mac OS X with Docker for Mac - this
# should likely be the IP address of your machine on the virtualbox network (vboxnet0)
# setup for the Docker host VM. This can found by running ifconfig and using the
# IP address of the network vboxnet0.
#galaxy_infrastructure_url = http://localhost:8080
# If the above URL cannot be determined ahead of time in dynamic environments
@@ -610,19 +616,19 @@ nglims_config_file = tool-data/nglims.yaml
#logo_url = /
# The URL linked by the "Wiki" link in the "Help" menu.
#wiki_url = https://wiki.galaxyproject.org/
#wiki_url = https://galaxyproject.org/
# The URL linked by the "Support" link in the "Help" menu.
#support_url = https://wiki.galaxyproject.org/Support
#support_url = https://galaxyproject.org/support
# The URL linked by the "How to Cite Galaxy" link in the "Help" menu.
#citation_url = https://wiki.galaxyproject.org/CitingGalaxy
#citation_url = https://galaxyproject.org/citing-galaxy
# The URL linked by the "Search" link in the "Help" menu.
#search_url = http://galaxyproject.org/search/usegalaxy/
#search_url = https://galaxyproject.org/search/
# The URL linked by the "Mailing Lists" link in the "Help" menu.
#mailing_lists_url = https://wiki.galaxyproject.org/MailingLists
#mailing_lists_url = https://galaxyproject.org/mailing-lists
# The URL linked by the "Videos" link in the "Help" menu.
#screencasts_url = https://vimeo.com/galaxyproject
@@ -875,10 +881,21 @@ use_interactive = True
#statsd_port=8125
#statsd_prefix=galaxy
# Log to graphite
# Graphite is an external statistics aggregator (https://github.com/graphite-project/carbon)
# Enabling the following options will cause galaxy to log request timing and
# other statistics to the configured graphite instance. The graphite_prefix is
# useful if you are running multiple Galaxy instances and want to segment
# statistics between them within the same aggregator.
#graphite_host=
#graphite_port=2003
#graphite_prefix=galaxy
# -- Data Libraries
# These library upload options are described in much more detail in the wiki:
# https://wiki.galaxyproject.org/Admin/DataLibraries/UploadingLibraryFiles
# These library upload options are described in much more detail in the Galaxy
# Community Hub:
# https://galaxyproject.org/data-libraries/
# Add an option to the library upload form which allows administrators to
# upload a directory of files.
@@ -930,16 +947,16 @@ use_interactive = True
# The higher the boost, the more importance the scoring algorithm gives to the
# given field. Section refers to the tool group in the tool panel. Rest of
# the fields are tool's attributes.
# tool_name_boost = 9
# tool_section_boost = 3
# tool_description_boost = 2
# tool_label_boost = 1
# tool_stub_boost = 5
# tool_help_boost = 0.5
#tool_name_boost = 9
#tool_section_boost = 3
#tool_description_boost = 2
#tool_label_boost = 1
#tool_stub_boost = 5
#tool_help_boost = 0.5
# Limits the number of results in toolbox search. Can be used to tweak how many
# results will appear.
# tool_search_limit = 20
#tool_search_limit = 20
# Enable/ disable Ngram-search for tools. It makes tool
# search results tolerant for spelling mistakes in the query
@@ -964,7 +981,7 @@ use_interactive = True
# User authentication can be delegated to an upstream proxy server (usually
# Apache). The upstream proxy should set a REMOTE_USER header in the request.
# Enabling remote user disables regular logins. For more information, see:
# https://wiki.galaxyproject.org/Admin/Config/ApacheProxy
# https://galaxyproject.org/admin/config/apache-proxy
#use_remote_user = False
# If use_remote_user is enabled and your external authentication
@@ -1007,7 +1024,7 @@ use_interactive = True
# users (email addresses). These users will have access to the Admin section
# of the server, and will have access to create users, groups, roles,
# libraries, and more. For more information, see:
# https://wiki.galaxyproject.org/Admin/Interface
# https://galaxyproject.org/admin/
#admin_users = None
# Force everyone to log in (disable anonymous access).
@@ -1092,7 +1109,7 @@ use_interactive = True
# collections.
#force_beta_workflow_scheduled_for_collections=False
# If multiple job handlers are enabled allow Galaxy to schedule workflow invocations
# If multiple job handlers are enabled, allow Galaxy to schedule workflow invocations
# in multiple handlers simultaneously. This is discouraged because it results in a
# less predictable order of workflow datasets within in histories.
#parallelize_workflow_scheduling_within_histories = False
@@ -1198,7 +1215,7 @@ use_interactive = True
# separate Galaxy into multiple processes. There are more than one way to do
# this, and they are explained in detail in the documentation:
#
# https://wiki.galaxyproject.org/Admin/Config/Performance/Scaling
# https://galaxyproject.org/admin/config/performance/scaling
# By default, Galaxy manages and executes jobs from within a single process and
# notifies itself of new jobs via in-memory queues. Jobs are run locally on
@@ -1287,7 +1304,7 @@ use_interactive = True
# actual user instead of as the user running the Galaxy server process. For
# details on these options, see the documentation at:
#
# https://wiki.galaxyproject.org/Admin/Config/Performance/Cluster
# https://galaxyproject.org/admin/config/performance/cluster
#
#drmaa_external_runjob_script = scripts/drmaa_external_runner.py
#drmaa_external_killjob_script = scripts/drmaa_external_killer.py
@@ -1328,7 +1345,7 @@ use_interactive = True
# under user preferences and can be toggled on and off at
# runtime. Example shown below are not real defaults (no custom
# filters are applied by default), but can be enabled by renaming the
# example.py.sample in the filters directory to example.py.
# examples.py.sample in the filters directory to examples.py.
#tool_filters =
#tool_label_filters =
@@ -6,7 +6,7 @@
# appropriate `apt-get/pip install` statements.
---
-
image: erasche/docker-rstudio-notebook:16.10
image: erasche/docker-rstudio-notebook:17.01
description: |
If you've ever done R analysis, you probably used RStudio. This
familiar R analysis software suite will let you explore your datasets
@@ -20,7 +20,7 @@ password_auth = True
# The image argument was moved to "allowed_images.yml.sample"
# Additional arguments that are passed to the `docker run` command.
#command_inject = --sig-proxy=true -e DEBUG=false
#command_inject = --sig-proxy=true -e DEBUG=false -e DEFAULT_CONTAINER_RUNTIME=120
# URL to access the Galaxy API with from the spawn Docker containter, if empty
# this falls back to galaxy.ini's galaxy_infrastructure_url and finally to the
@@ -14,11 +14,11 @@ function message_failed_connection(){
* @param {String} notebook_access_url: the URL embeded in the page and loaded
*
*/
function load_notebook(notebook_login_url, notebook_access_url, notebook_pubkey_url, username){
function load_notebook(notebook_login_url, notebook_access_url, notebook_pubkey_url){
// Test notebook_login_url for accessibility, executing the login+load function whenever
// we've successfully connected to the IE.
test_ie_availability(notebook_pubkey_url, function(){
var payload = username + "\n" + ie_password;
var payload = "rstudio\nrstudio";
$.ajax({
type: 'GET',
url: notebook_pubkey_url,
@@ -32,7 +32,6 @@ function load_notebook(notebook_login_url, notebook_access_url, notebook_pubkey_
console.log("Found " + exp +" and " + mod);
var rsa = new RSAKey();
rsa.setPublic(mod, exp);
console.log("Encrypting '" + username + "', '" + ie_password + "'");
var enc_hex = rsa.encrypt(payload);
var encrypted = hex2b64(enc_hex);
console.log("E: " + encrypted);
@@ -58,7 +57,10 @@ function load_notebook(notebook_login_url, notebook_access_url, notebook_pubkey_
append_notebook(notebook_access_url);
},
error: function(jqxhr, status, error){
message_failed_connection();
// TODO: Uncomment when rstudio / nginx play nicely and
// don't return http when we asked for HTTPS, thereby
// issuing a mixed-content warning.
//message_failed_connection();
// Do we want to try and load the notebook anyway? Just in case?
append_notebook(notebook_access_url);
}
@@ -1,4 +1,5 @@
<%namespace file="ie.mako" name="ie"/>
<%namespace name="ie" file="ie.mako"/>
<%
import os
import shutil
@@ -7,46 +8,42 @@ import time
# Sets ID and sets up a lot of other variables
ie_request.load_deploy_config()
ie_request.attr.docker_port = 80
# Create tempdir in galaxy
temp_dir = ie_request.temp_dir
PASSWORD = "rstudio"
USERNAME = "rstudio"
# Then override it again
ie_request.notebook_pw = "rstudio"
# Did the user give us an RData file?
if hda.datatype.__class__.__name__ == "RData":
shutil.copy( hda.file_name, os.path.join(temp_dir, '.RData') )
DATASET_HID = hda.hid
# Add all environment variables collected from Galaxy's IE infrastructure
ie_request.launch(
image=trans.request.params.get('image_tag', None),
additional_ids=trans.request.params.get('additional_dataset_ids', None),
env_override={
'notebook_username': USERNAME,
'notebook_password': PASSWORD,
'dataset_hid': DATASET_HID,
}
)
## General IE specific
# Access URLs for the notebook from within galaxy.
# TODO: Make this work without pointing directly to IE. Currently does not work
# through proxy.
notebook_pubkey_url = ie_request.url_template('${PROXY_URL}/rstudio/auth-public-key')
notebook_access_url = ie_request.url_template('${PROXY_URL}/rstudio/')
notebook_login_url = ie_request.url_template('${PROXY_URL}/rstudio/auth-do-sign-in')
notebook_login_url = ie_request.url_template('${PROXY_URL}/rstudio/auth-do-sign-in')
notebook_pubkey_url = ie_request.url_template('${PROXY_URL}/rstudio/auth-public-key')
%>
<html>
<head>
${ ie.load_default_js() }
</head>
<body style="margin:0px">
<body style="margin: 0px">
<script type="text/javascript">
${ ie.default_javascript_variables() }
var notebook_login_url = '${ notebook_login_url }';
var notebook_access_url = '${ notebook_access_url }';
var notebook_pubkey_url = '${ notebook_pubkey_url }';
var notebook_username = '${ USERNAME }';
require.config({
baseUrl: app_root,
paths: {
@@ -65,11 +62,11 @@ requirejs([
'plugin/rstudio'
], function(){
load_when_ready(ie_readiness_url, function(){
load_notebook(notebook_login_url, notebook_access_url, notebook_pubkey_url, "${ USERNAME }");
load_notebook(notebook_login_url, notebook_access_url, notebook_pubkey_url);
});
});
</script>
<div id="main">
<div id="main" width="100%" height="100%">
</div>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

+2 -1
View File
@@ -9,4 +9,5 @@ Special Topics
mulled_containers
grt
chat
webhooks
webhooks
performance_tracking
@@ -0,0 +1,52 @@
Galaxy Performance Tracking
===========================
Tracking performance over time and identifying slow queries in your Galaxy can be an extremely important thing to do, especially for larger Galaxies.
Most performance tracking requires sending metrics to a metrics collection server such as `Graphite <http://graphiteapp.org/>`__ or `StatsD <https://github.com/etsy/statsd/>`__. This document assumes you have already deployed a metrics server.
uWSGI
-----
As you have certainly switched to uWSGI from the default paste server, there is some built-in uWSGI support for performance logging. You can send uWSGI's internal metrics to a carbon (Graphite) server by setting the carbon option in your galaxy.ini:
.. code-block:: ini
[uwsgi]
socket = ...
carbon = 127.0.0.1:2003
Or a StatsD server via:
.. code-block:: ini
[uwsgi]
socket = ...
statsd-push = 127.0.0.1:8125
The `official documentation <http://uwsgi-docs.readthedocs.io/en/latest/Metrics.html#stats-pushers>`__ contains further information on uWSGI and stats servers. In the `uWSGI Stats Server <http://uwsgi-docs.readthedocs.io/en/latest/StatsServer.html>` documentation, you can see an example of the sort of information that you will be able to collect.
API / Route Timing Statistics
-----------------------------
Galaxy provides middleware to automatically log the amount of time controllers take to execute and to send that data to a stats server. Using the stats server of your choice, you can calculate the relevant statistics to ensure that your Galaxy server is performing as expected.
The statsD configuration requires setting the following:
.. code-block:: ini
statsd_host=127.0.0.1
statsd_port=8125
statsd_prefix=galaxy
And the graphite configuration is very similar:
.. code-block:: ini
graphite_host=127.0.0.1
graphite_port=2003
graphite_prefix=galaxy
Most people visualize the statistics using something like `Grafana <https://grafana.com/>`__:
.. image:: grafana.png
+7 -2
View File
@@ -369,8 +369,9 @@ class Configuration( object ):
self.message_box_visible = string_as_bool( kwargs.get( 'message_box_visible', False ) )
self.message_box_content = kwargs.get( 'message_box_content', None )
self.message_box_class = kwargs.get( 'message_box_class', 'info' )
self.support_url = kwargs.get( 'support_url', 'https://wiki.galaxyproject.org/Support' )
self.wiki_url = kwargs.get( 'wiki_url', 'https://wiki.galaxyproject.org/' )
self.support_url = kwargs.get( 'support_url', 'https://galaxyproject.org/support' )
self.citation_url = kwargs.get( 'citation_url', 'https://galaxyproject.org/citing-galaxy' )
self.wiki_url = kwargs.get( 'wiki_url', 'https://galaxyproject.org/' )
self.blog_url = kwargs.get( 'blog_url', None )
self.screencasts_url = kwargs.get( 'screencasts_url', None )
self.library_import_dir = kwargs.get( 'library_import_dir', None )
@@ -569,6 +570,10 @@ class Configuration( object ):
self.statsd_host = kwargs.get( 'statsd_host', '')
self.statsd_port = int( kwargs.get( 'statsd_port', 8125 ) )
self.statsd_prefix = kwargs.get( 'statsd_prefix', 'galaxy' )
# Statistics and profiling with graphite
self.graphite_host = kwargs.get( 'graphite_host', '')
self.graphite_port = int( kwargs.get( 'graphite_port', 2003 ) )
self.graphite_prefix = kwargs.get( 'graphite_prefix', 'galaxy' )
# Logging with fluentd
self.fluent_log = string_as_bool( kwargs.get( 'fluent_log', False ) )
self.fluent_host = kwargs.get( 'fluent_host', 'localhost' )
+3
View File
@@ -91,6 +91,9 @@ class ConditionalDependencies( object ):
def check_statsd( self ):
return self.config.get("statsd_host", None) is not None
def check_graphite( self ):
return self.config.get("graphite_host", None) is not None
def check_weberror( self ):
return ( asbool( self.config["debug"] ) and
asbool( self.config["use_interactive"] ) )
@@ -9,6 +9,7 @@ raven
pbs_python
drmaa
statsd
graphitesend
azure-storage==0.32.0
# PyRods not in PyPI
python-ldap==2.4.27
@@ -3,3 +3,9 @@ NoseHTML
twill==0.9.1
mock
selenium
# Documentation requirements
sphinx
sphinx_rtd_theme
lxml
recommonmark
@@ -22,7 +22,7 @@ WebOb==1.4.1
WebHelpers==1.3
Mako==1.0.2
pytz==2015.4
Babel==2.0
Babel==2.1.1
Beaker==1.7.0
dictobj==0.3.1
nose==1.3.7
+5 -6
View File
@@ -41,13 +41,12 @@ class ConfigSerializer( base.ModelSerializer ):
'logo_src' : lambda i, k, **c: self.url_for( '/static/images/galaxyIcon_noText.png' ),
'terms_url' : _defaults_to( '' ),
# TODO: don't hardcode here - hardcode defaults once in config.py
'wiki_url' : _defaults_to( "http://galaxyproject.org/" ),
'search_url' : _defaults_to( "http://galaxyproject.org/search/usegalaxy/" ),
'mailing_lists' : _defaults_to( "https://wiki.galaxyproject.org/MailingLists" ),
'wiki_url' : _defaults_to( self.app.config.wiki_url ),
'search_url' : _defaults_to( self.app.config.wiki_url.rstrip("/") + "/search/" ),
'mailing_lists' : _defaults_to( self.app.config.wiki_url.rstrip("/") + "/mailing-lists/"),
'screencasts_url' : _defaults_to( "https://vimeo.com/galaxyproject" ),
'citation_url' : _defaults_to( "https://wiki.galaxyproject.org/CitingGalaxy" ),
'support_url' : _defaults_to( "https://wiki.galaxyproject.org/Support" ),
'citation_url' : _defaults_to( self.app.config.citation_url ),
'support_url' : _defaults_to( self.app.config.support_url ),
'lims_doc_url' : _defaults_to( "https://usegalaxy.org/u/rkchak/p/sts" ),
'biostar_url' : _defaults_to( '' ),
'biostar_url_redirect' : lambda *a, **c: self.url_for( controller='biostar', action='biostar_redirect', qualified=True ),
+8
View File
@@ -3512,6 +3512,14 @@ class DatasetCollectionElement( object, Dictifiable ):
else:
return element_object
@property
def dataset_instances( self ):
element_object = self.element_object
if isinstance( element_object, DatasetCollection ):
return element_object.dataset_instances
else:
return [element_object]
def copy_to_collection( self, collection, destination=None, element_destination=None ):
element_object = self.element_object
if element_destination:
-23
View File
@@ -44,7 +44,6 @@ class AzureBlobObjectStore(ObjectStore):
self.transfer_progress = 0
self._parse_config_xml(config_xml)
self._configure_connection()
self.container_lease = self._get_container_lease()
# Clean cache only if value is set in galaxy.ini
if self.cache_size != -1:
@@ -89,28 +88,6 @@ class AzureBlobObjectStore(ObjectStore):
self.account = CloudStorageAccount(self.account_name, self.account_key)
self.service = self.account.create_block_blob_service()
def _get_container_lease(self):
""" Sometimes a handle to a container is not established right away so try
it a few times. Raise error is connection is not established. """
for i in range(5):
try:
self.service.break_container_lease(self.container_name)
container_lease = self.service.acquire_container_lease(self.container_name)
log.debug("Using azure blob store with container '%s'", self.container_name)
return container_lease
except AzureHttpError:
try:
log.debug("container not found, creating azure blob store container with name '%s'", self.container_name)
self.service.create_container(self.container_name)
container_lease = self.service.acquire_container_lease(self.container_name)
return container_lease
except AzureHttpError:
log.exception("Could not get container '%s', attempt %s/5", self.container_name, i + 1)
time.sleep(2)
# All the attempts have been exhausted and connection was not established,
# raise error
raise AzureHttpError
def _construct_path(self, obj, base_dir=None, dir_only=None, extra_dir=None, extra_dir_at_root=False, alt_name=None, obj_dir=False, **kwargs):
# extra_dir should never be constructed from provided data but just
# make sure there are no shenannigans afoot
+9 -4
View File
@@ -153,6 +153,8 @@ GALAXY_LIB_TOOLS_UNVERSIONED = [
# with the version at which they were fixed.
GALAXY_LIB_TOOLS_VERSIONED = {
"sam_to_bam": LooseVersion("1.1.3"),
"PEsortedSAM2readprofile": LooseVersion("1.1.1"),
"fetchflank": LooseVersion("1.0.1"),
}
@@ -1833,8 +1835,10 @@ class Tool( object, Dictifiable ):
populate_model( input.inputs, group_state, tool_dict[ 'inputs' ], other_values )
else:
try:
initial_value = input.get_initial_value( request_context, other_values )
tool_dict = input.to_dict( request_context, other_values=other_values )
tool_dict[ 'value' ] = input.value_to_basic( state_inputs.get( input.name, input.get_initial_value( request_context, other_values ) ), self.app, use_security=True )
tool_dict[ 'value' ] = input.value_to_basic( state_inputs.get( input.name, initial_value ), self.app, use_security=True )
tool_dict[ 'default_value' ] = input.value_to_basic( initial_value, self.app, use_security=True )
tool_dict[ 'text_value' ] = input.value_to_display_text( tool_dict[ 'value' ] )
except Exception as e:
tool_dict = input.to_dict( request_context )
@@ -2310,9 +2314,10 @@ class DatabaseOperationTool( Tool ):
for input_dataset in input_datasets.values():
check_dataset_instance( input_dataset )
for input_dataset_collection in input_dataset_collections.values():
if not input_dataset_collection.collection.populated:
raise ToolInputsNotReadyException()
for input_dataset_collection_pairs in input_dataset_collections.values():
for input_dataset_collection, is_mapped in input_dataset_collection_pairs:
if not input_dataset_collection.collection.populated:
raise ToolInputsNotReadyException()
map( check_dataset_instance, input_dataset_collection.dataset_instances )
+6 -2
View File
@@ -12,8 +12,12 @@ log = logging.getLogger( __name__ )
class ModelOperationToolAction( DefaultToolAction ):
def check_inputs_ready( self, tool, trans, incoming, history ):
history, inp_data, inp_dataset_collections = self._collect_inputs(tool, trans, incoming, history)
def check_inputs_ready( self, tool, trans, incoming, history, execution_cache=None ):
if execution_cache is None:
execution_cache = ToolExecutionCache(trans)
current_user_roles = execution_cache.current_user_roles
history, inp_data, inp_dataset_collections = self._collect_inputs(tool, trans, incoming, history, current_user_roles)
tool.check_inputs_ready( inp_data, inp_dataset_collections )
+2 -2
View File
@@ -37,7 +37,7 @@ class DataManagers( object ):
continue
self.load_from_xml( filename )
if self.app.config.shed_data_manager_config_file:
self.load_from_xml( self.app.config.shed_data_manager_config_file, store_tool_path=False, replace_existing=True )
self.load_from_xml( self.app.config.shed_data_manager_config_file, store_tool_path=True, replace_existing=True )
def load_from_xml( self, xml_filename, store_tool_path=True, replace_existing=False ):
try:
@@ -57,7 +57,7 @@ class DataManagers( object ):
tool_path = '.'
self.tool_path = tool_path
for data_manager_elem in root.findall( 'data_manager' ):
self.load_manager_from_elem( data_manager_elem, replace_existing=replace_existing )
self.load_manager_from_elem( data_manager_elem, tool_path=self.tool_path, replace_existing=replace_existing )
def load_manager_from_elem( self, data_manager_elem, tool_path=None, add_manager=True, replace_existing=False ):
try:
+1 -1
View File
@@ -48,7 +48,7 @@ def execute( trans, tool, param_combinations, history, rerun_remap_job_id=None,
burst_at = getattr( config, 'tool_submission_burst_at', 10 )
burst_threads = getattr( config, 'tool_submission_burst_threads', 1 )
tool_action = tool.action
tool_action = tool.tool_action
if hasattr( tool_action, "check_inputs_ready" ):
for params in execution_tracker.param_combinations:
# This will throw an exception if the tool is not ready.
+18
View File
@@ -248,6 +248,23 @@ class DatasetEmptyValidator( Validator ):
raise ValueError( self.message )
class DatasetExtraFilesPathEmptyValidator( Validator ):
"""Validator that checks if a dataset's extra_files_path exists and is not empty."""
def __init__( self, message=None ):
self.message = message
@classmethod
def from_element( cls, param, elem ):
return cls( elem.get( 'message', None ) )
def validate( self, value, trans=None ):
if value:
if value.get_total_size() == value.get_size():
if self.message is None:
self.message = "The selected dataset's extra_files_path directory is empty or does not exist, this tool expects non-empty extra_files_path directories associated with the selected input."
raise ValueError( self.message )
class MetadataValidator( Validator ):
"""
Validator that checks for missing metadata
@@ -438,6 +455,7 @@ validator_types = dict( expression=ExpressionValidator,
no_options=NoOptionsValidator,
empty_field=EmptyTextfieldValidator,
empty_dataset=DatasetEmptyValidator,
empty_extra_files_path=DatasetExtraFilesPathEmptyValidator,
dataset_metadata_in_file=MetadataInFileColumnValidator,
dataset_metadata_in_data_table=MetadataInDataTableColumnValidator,
dataset_ok_validator=DatasetOkValidator, )
+1 -1
View File
@@ -1041,7 +1041,7 @@ class Admin( object ):
stop_msg += '.'
for job_id in job_ids:
error_msg = "This job was stopped by an administrator: %s <a href='%s' target='_blank'>Contact support</a> for additional help." \
% ( stop_msg, self.app.config.get("support_url", "https://wiki.galaxyproject.org/Support" ) )
% ( stop_msg, self.app.config.get("support_url", "https://galaxyproject.org/support/" ) )
if trans.app.config.track_jobs_in_database:
job = trans.sa_session.query( trans.app.model.Job ).get( job_id )
job.stderr = error_msg
@@ -6,7 +6,9 @@ import random
import stat
import tempfile
import uuid
from subprocess import PIPE, Popen
from sys import platform as _platform
import yaml
@@ -18,6 +20,8 @@ from galaxy.util import string_as_bool_or_none
from galaxy.util.bunch import Bunch
IS_OS_X = _platform == "darwin"
CONTAINER_NAME_PREFIX = 'gie_'
log = logging.getLogger(__name__)
@@ -50,7 +54,8 @@ class InteractiveEnvironmentRequest(object):
self.load_container_interface()
self.attr.docker_hostname = self.attr.viz_config.get("docker", "docker_hostname")
self.attr.docker_connect_port = int(self.attr.viz_config.get("docker", "docker_connect_port")) or None
raw_docker_connect_port = self.attr.viz_config.get("docker", "docker_connect_port")
self.attr.docker_connect_port = int(raw_docker_connect_port) if raw_docker_connect_port else None
# Generate per-request passwords the IE plugin can use to configure
# the destination container.
@@ -438,6 +443,10 @@ class InteractiveEnvironmentRequest(object):
raise Exception("Attempting to launch disallowed image! %s not in list of allowed images [%s]"
% (image, ', '.join(self.allowed_images)))
# Do not allow a None volumes
if not volumes:
volumes = []
if additional_ids is not None:
volumes += self._idsToVolumes(additional_ids)
@@ -485,7 +494,10 @@ class InteractiveEnvironmentRequest(object):
inspect_data = inspect_data[0]
if 'Node' in inspect_data:
return inspect_data['Node']['IP']
elif self.attr.docker_hostname == "localhost":
elif self.attr.docker_hostname == "localhost" and not IS_OS_X:
# If this is on Docker of Mac OS X that Gateway will be an
# IP address only available in the Docker host VM - so we
# stick with localhost.
return inspect_data['NetworkSettings']['Gateway']
else:
return self.attr.docker_hostname
@@ -0,0 +1,38 @@
"""
Middleware for sending request statistics to graphite
"""
from __future__ import absolute_import
import time
try:
import graphitesend
except ImportError:
# This middleware will never be used without graphite. This block allows
# unit tests pass on systems without it.
graphitesend = None
class GraphiteMiddleware(object):
"""
This middleware will log request durations to the configured graphite
instance.
"""
def __init__(self,
application,
graphite_host,
graphite_port,
graphite_prefix):
if not graphitesend:
raise ImportError("graphite middleware configured, but no graphite python module found. "
"Please install the python graphitesend module to use this functionality.")
self.application = application
self.graphite_client = graphitesend.init(graphite_server=graphite_host, graphite_port=int(graphite_port), prefix=graphite_prefix.rstrip('.'))
def __call__(self, environ, start_response):
start_time = time.time()
req = self.application(environ, start_response)
dt = int((time.time() - start_time) * 1000)
self.graphite_client.send(environ.get('controller_action_key', None) or environ.get('PATH_INFO', "NOPATH").strip('/').replace('/', '.'), dt)
return req
@@ -69,9 +69,13 @@ class RemoteUser( object ):
assert self.remote_user_header not in environ
environ[ self.remote_user_header ] = self.single_user
# Apache sets REMOTE_USER to the string '(null)' when using the
# Rewrite* method for passing REMOTE_USER and a user is
# un-authenticated. Any other possible values need to go here as well.
if environ.get(self.remote_user_header, '').startswith('(null)'):
# Throw away garbage headers.
# Apache sets REMOTE_USER to the string '(null)' when using the
# Rewrite* method for passing REMOTE_USER and a user is not authenticated.
# Any other possible values need to go here as well.
log.debug("Discarding invalid remote user header %s:%s.", self.remote_user_header, environ.get(self.remote_user_header, None))
environ.pop(self.remote_user_header)
if self.remote_user_header in environ:
# process remote user with configuration options.
if self.normalize_remote_user_email:
@@ -126,10 +130,7 @@ class RemoteUser( object ):
"""
return self.error( start_response, title, message )
# Apache sets REMOTE_USER to the string '(null)' when using the
# Rewrite* method for passing REMOTE_USER and a user is
# un-authenticated. Any other possible values need to go here as well.
if not environ.get(self.remote_user_header, '(null)').startswith('(null)'):
if environ.get(self.remote_user_header, None):
if not environ[ self.remote_user_header ].count( '@' ):
if self.maildomain is not None:
environ[ self.remote_user_header ] += '@' + self.maildomain
+13 -9
View File
@@ -385,7 +385,13 @@ class GalaxyWebTransaction( base.DefaultWebTransaction,
elif secure_id:
# API authentication via active session
# Associate user using existing session
self._ensure_valid_session( session_cookie )
# This will throw an exception under remote auth with anon users.
try:
self._ensure_valid_session( session_cookie )
except Exception:
log.exception("Exception during Session-based API authentication, this was most likely an attempt to use an anonymous cookie under remote authentication (so, no user), which we don't support.")
self.user = None
self.galaxy_session = None
else:
# Anonymous API interaction -- anything but @expose_api_anonymous will fail past here.
self.user = None
@@ -435,17 +441,13 @@ class GalaxyWebTransaction( base.DefaultWebTransaction,
# cases won't have a cookie set above, so we need to to check some
# things now.
if self.app.config.use_remote_user:
# If this is an api request, and they've passed a key, we let this go.
assert self.app.config.remote_user_header in self.environ, \
"use_remote_user is set but %s header was not provided" % self.app.config.remote_user_header
remote_user_email = self.environ[ self.app.config.remote_user_header ]
remote_user_email = self.environ.get( self.app.config.remote_user_header, None)
if galaxy_session:
# An existing session, make sure correct association exists
if galaxy_session.user is None:
if remote_user_email and galaxy_session.user is None:
# No user, associate
galaxy_session.user = self.get_or_create_remote_user( remote_user_email )
galaxy_session_requires_flush = True
elif (not remote_user_email.startswith('(null)') and # Apache does this, see remoteuser.py
elif (remote_user_email and
(galaxy_session.user.email != remote_user_email) and
((not self.app.config.allow_user_impersonation) or
(remote_user_email not in self.app.config.admin_users_list))):
@@ -456,9 +458,11 @@ class GalaxyWebTransaction( base.DefaultWebTransaction,
user_for_new_session = self.get_or_create_remote_user( remote_user_email )
log.warning( "User logged in as '%s' externally, but has a cookie as '%s' invalidating session",
remote_user_email, galaxy_session.user.email )
else:
elif remote_user_email:
# No session exists, get/create user for new session
user_for_new_session = self.get_or_create_remote_user( remote_user_email )
if ((galaxy_session and galaxy_session.user is None) and user_for_new_session is None):
raise Exception("Remote Authentication Failure - user is unknown and/or not supplied.")
else:
if galaxy_session is not None and galaxy_session.user and galaxy_session.user.external:
# Remote user support is not enabled, but there is an existing
+1 -1
View File
@@ -14,6 +14,6 @@
"eventemitter3": "0.1.6",
"http-proxy": "1.6.0",
"commander": "~2.2",
"sqlite3": "3.1.3"
"sqlite3": "3.1.8"
}
}
@@ -33,8 +33,7 @@ def get_message_for_no_shed_tool_config():
message += 'tag that includes a tool_path attribute value which is a directory relative to the Galaxy installation directory in order to '
message += 'automatically install tools from a tool shed into Galaxy (e.g., the file name shed_tool_conf.xml whose <toolbox> tag is '
message += '<toolbox tool_path="../shed_tools">). For details, see the "Installation of Galaxy tool shed repository tools into a local '
message += 'Galaxy instance" section of the Galaxy tool shed wiki at http://wiki.galaxyproject.org/InstallingRepositoriesToGalaxy#'
message += 'Installing_Galaxy_tool_shed_repository_tools_into_a_local_Galaxy_instance.'
message += 'Galaxy instance" section of the Galaxy tool shed wiki at https://galaxyproject.org/installing-repositories-to-galaxy/'
return message
+9
View File
@@ -892,6 +892,15 @@ def wrap_in_middleware( app, global_conf, application_stack, **local_conf ):
conf.get('statsd_port', 8125),
conf.get('statsd_prefix', 'galaxy') ) )
log.debug( "Enabling 'statsd' middleware" )
# graphite request timing and profiling
graphite_host = conf.get('graphite_host', None)
if graphite_host:
from galaxy.web.framework.middleware.graphite import GraphiteMiddleware
app = wrap_if_allowed( app, stack, GraphiteMiddleware,
args=( graphite_host,
conf.get('graphite_port', 2003),
conf.get('graphite_prefix', 'galaxy') ) )
log.debug( "Enabling 'graphite' middleware" )
# If we're using remote_user authentication, add middleware that
# protects Galaxy from improperly configured authentication in the
# upstream server
@@ -961,7 +961,7 @@ class AdminToolshed( AdminGalaxy ):
message += 'attribute value which is a directory relative to the Galaxy installation directory in order '
message += 'to automatically install tools from a Galaxy Tool Shed (e.g., the file name <b>shed_tool_conf.xml</b> '
message += 'whose <b>&lt;toolbox&gt;</b> tag is <b>&lt;toolbox tool_path="../shed_tools"&gt;</b>).<p/>See the '
message += '<a href="https://wiki.galaxyproject.org/InstallingRepositoriesToGalaxy" target="_blank">Installation '
message += '<a href="https://galaxyproject.org/installing-repositories-to-galaxy/" target="_blank">Installation '
message += 'of Galaxy Tool Shed repository tools into a local Galaxy instance</a> section of the Galaxy Tool '
message += 'Shed wiki for all of the details.'
return trans.show_error_message( message )
+1 -1
View File
@@ -45,7 +45,7 @@ class Configuration( object ):
self.message_box_visible = string_as_bool( kwargs.get( 'message_box_visible', False ) )
self.message_box_content = kwargs.get( 'message_box_content', None )
self.message_box_class = kwargs.get( 'message_box_class', 'info' )
self.wiki_url = kwargs.get( 'wiki_url', 'https://wiki.galaxyproject.org/' )
self.wiki_url = kwargs.get( 'wiki_url', 'https://galaxyproject.org/' )
self.blog_url = kwargs.get( 'blog_url', None )
self.screencasts_url = kwargs.get( 'screencasts_url', None )
self.log_events = False
+2 -2
View File
@@ -113,8 +113,8 @@ class Configuration( object ):
self.message_box_visible = string_as_bool( kwargs.get( 'message_box_visible', False ) )
self.message_box_content = kwargs.get( 'message_box_content', None )
self.message_box_class = kwargs.get( 'message_box_class', 'info' )
self.support_url = kwargs.get( 'support_url', 'https://wiki.galaxyproject.org/Support' )
self.wiki_url = kwargs.get( 'wiki_url', 'https://wiki.galaxyproject.org/' )
self.support_url = kwargs.get( 'support_url', 'https://galaxyproject.org/support' )
self.wiki_url = kwargs.get( 'wiki_url', 'https://galaxyproject.org/' )
self.blog_url = kwargs.get( 'blog_url', None )
self.biostar_url = kwargs.get( 'biostar_url', None )
self.screencasts_url = kwargs.get( 'screencasts_url', None )
@@ -14,16 +14,28 @@ class DataManagerHandler( object ):
def __init__( self, app ):
self.app = app
@property
def data_managers_path( self ):
tree, error_message = xml_util.parse_xml( self.app.config.shed_data_manager_config_file )
if tree:
root = tree.getroot()
return root.get( 'tool_path', None )
return None
def data_manager_config_elems_to_xml_file( self, config_elems, config_filename ):
"""
Persist the current in-memory list of config_elems to a file named by the value
of config_filename.
"""
data_managers_path = self.data_managers_path
lock = threading.Lock()
lock.acquire( True )
try:
fh = open( config_filename, 'wb' )
fh.write( '<?xml version="1.0"?>\n<data_managers>\n' )
if data_managers_path is not None:
fh.write( '<?xml version="1.0"?>\n<data_managers tool_path="%s">\n ' % data_managers_path )
else:
fh.write( '<?xml version="1.0"?>\n<data_managers>\n ' )
for elem in config_elems:
fh.write( xml_util.xml_to_string( elem ) )
fh.write( '</data_managers>\n' )
@@ -158,4 +170,4 @@ class DataManagerHandler( object ):
self.app.data_managers.load_manager_from_elem( elem )
# Persist the altered shed_data_manager_config file.
if data_manager_config_has_changes:
self.data_manager_config_elems_to_xml_file( config_elems, shed_data_manager_conf_filename )
self.data_manager_config_elems_to_xml_file( config_elems, shed_data_manager_conf_filename )
+14
View File
@@ -112,6 +112,20 @@ address Docker exposes localhost on to its child containers. This trick
doesn't work on Mac OS X and so GALAXY_TEST_HOST will need to be crafted
carefully ahead of time.
For Selenium test cases a stack trace is usually insufficient to diagnose
problems. For this reason, GALAXY_TEST_ERRORS_DIRECTORY is populated with
a new directory of information for each failing test case. This information
includes a screenshot, a stack trace, and the DOM of the currently rendered
Galaxy instance. The new directories are created with names that include
information about the failed test method name and the timestamp. By default,
GALAXY_TEST_ERRORS_DIRECTORY will be set to database/errors.
The Selenium tests seem to be subject to transient failures at a higher
rate than the rest of the tests in Galaxy. Though this is unfortunate,
they have more moving pieces so this is perhaps not surprising. One can
set the GALAXY_TEST_SELENIUM_RETRIES to a number greater than 0 to
automatically retry every failed test case the specified number of times.
External Tests:
A small subset of tests can be run against an existing Galaxy
@@ -1 +1 @@
{"version":3,"file":"citation-view.js","sources":["../../../src/mvc/citation/citation-view.js"],"names":["define","baseMVC","citationModel","_l","CitationView","Backbone","View","extend","tagName","className","render","this","$el","append","formattedReference","model","entryType","fields","ref","authorsAndYear","_asSentence","author","year","title","pages","address","volume","number","journal","booktitle","howpublished","note","institution","type","_formatBookInfo","doiUrl","doi","url","info","chapter","editor","publisher","series","issn","str","trim","CitationListView","el","initialize","listenTo","collection","renderCitation","events","click .citations-to-bibtex","click .citations-to-formatted","citation","citationView","$","rawTextarea","val","attributes","content","html","citationsElement","each","item","showFormatted","showBibtex","show","hide","select","partialWarningElement","partial","join"],"mappings":"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"}
{"version":3,"file":"citation-view.js","sources":["../../../src/mvc/citation/citation-view.js"],"names":["define","baseMVC","citationModel","_l","CitationView","Backbone","View","extend","tagName","className","render","this","$el","append","formattedReference","model","entryType","fields","ref","authorsAndYear","_asSentence","author","year","title","pages","address","volume","number","journal","booktitle","howpublished","note","institution","type","_formatBookInfo","doiUrl","doi","url","info","chapter","editor","publisher","series","issn","str","trim","CitationListView","el","initialize","listenTo","collection","renderCitation","events","click .citations-to-bibtex","click .citations-to-formatted","citation","citationView","$","rawTextarea","val","attributes","content","html","citationsElement","each","item","showFormatted","showBibtex","show","hide","select","partialWarningElement","partial","join"],"mappings":"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"}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
{"version":3,"file":"library-librarylist-view.js","sources":["../../../src/mvc/library/library-librarylist-view.js"],"names":["define","mod_masthead","mod_baseMVC","mod_utils","mod_toastr","mod_library_model","mod_library_libraryrow_view","_","LibraryListView","Backbone","View","extend","el","events","click .sort-libraries-link","defaults","page_count","show_page","all_fetched","initialize","options","this","that","modal","collection","Libraries","url","urlRoot","fetch","success","render","error","model","response","responseJSON","err_msg","setElement","template","templateLibraryList","libraries_to_render","models","$","hide","sortLibraries","Galaxy","libraries","preferences","get","where","deleted","is_deleted","filter","total_libraries_count","length","page_start","Math","ceil","slice","libraries_shown","$el","html","order","search_term","libraryToolbarView","renderPaginator","renderRows","tooltip","css","fetchDeleted","remove","i","library","renderOne","rowView","LibraryRowView","find","append","sort_clicked","set","sort_order","sortByNameAsc","sortByNameDesc","redirectToHome","window","location","redirectToLogin","searchLibraries","trimmed_term","trim","results","search","searching","join"],"mappings":"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"}
{"version":3,"file":"library-librarylist-view.js","sources":["../../../src/mvc/library/library-librarylist-view.js"],"names":["define","mod_masthead","mod_baseMVC","mod_utils","mod_toastr","mod_library_model","mod_library_libraryrow_view","_","LibraryListView","Backbone","View","extend","el","events","click .sort-libraries-link","defaults","page_count","show_page","all_fetched","initialize","options","this","that","modal","collection","Libraries","url","urlRoot","fetch","success","render","error","model","response","responseJSON","err_msg","setElement","template","templateLibraryList","libraries_to_render","models","$","hide","sortLibraries","Galaxy","libraries","preferences","get","where","deleted","is_deleted","filter","total_libraries_count","length","page_start","Math","ceil","slice","libraries_shown","$el","html","order","search_term","libraryToolbarView","renderPaginator","renderRows","tooltip","css","fetchDeleted","remove","i","library","renderOne","rowView","LibraryRowView","find","append","sort_clicked","set","sort_order","sortByNameAsc","sortByNameDesc","redirectToHome","window","location","redirectToLogin","searchLibraries","trimmed_term","trim","results","search","searching","join"],"mappings":"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"}
@@ -1 +1 @@
{"version":3,"file":"library-librarytoolbar-view.js","sources":["../../../src/mvc/library/library-librarytoolbar-view.js"],"names":["define","mod_toastr","mod_library_model","LibraryToolbarView","Backbone","View","extend","el","defaults","search_term","events","click #create_new_library_btn","click #include_deleted_chk","click #lib_page_size_prompt","keyup .library-search-input","initialize","options","this","_","render","toolbar_template","templateToolBar","is_admin","is_anonym","Galaxy","user","isAdmin","isAnonymous","$el","html","admin_user","anon_user","find","checked","libraries","preferences","get","renderPaginator","paginator_template","templatePaginator","show_page","parseInt","page_count","total_libraries_count","libraries_shown","createLibraryFromModal","event","preventDefault","stopPropagation","self","modal","show","closing_events","title","body","templateNewLibraryInModal","buttons","Create","createNewLibrary","Close","hide","libraryDetails","serializeNewLibrary","validateNewLibrary","library","Library","save","success","libraryListView","collection","add","clearLibraryModal","error","model","response","responseJSON","err_msg","showPageSizePrompt","library_page_size","prompt","set","$","val","name","description","synopsis","includeDeletedChecked","target","with_deleted","fetchDeleted","searchLibraries","template","join"],"mappings":"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"}
{"version":3,"file":"library-librarytoolbar-view.js","sources":["../../../src/mvc/library/library-librarytoolbar-view.js"],"names":["define","mod_toastr","mod_library_model","LibraryToolbarView","Backbone","View","extend","el","defaults","search_term","events","click #create_new_library_btn","click #include_deleted_chk","click #lib_page_size_prompt","keyup .library-search-input","initialize","options","this","_","render","toolbar_template","templateToolBar","is_admin","is_anonym","Galaxy","user","isAdmin","isAnonymous","$el","html","admin_user","anon_user","find","checked","libraries","preferences","get","renderPaginator","paginator_template","templatePaginator","show_page","parseInt","page_count","total_libraries_count","libraries_shown","createLibraryFromModal","event","preventDefault","stopPropagation","self","modal","show","closing_events","title","body","templateNewLibraryInModal","buttons","Create","createNewLibrary","Close","hide","libraryDetails","serializeNewLibrary","validateNewLibrary","library","Library","save","success","libraryListView","collection","add","clearLibraryModal","error","model","response","responseJSON","err_msg","showPageSizePrompt","library_page_size","prompt","set","$","val","name","description","synopsis","includeDeletedChecked","target","with_deleted","fetchDeleted","searchLibraries","template","join"],"mappings":"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"}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"ui-color-picker.js","sources":["../../../src/mvc/ui/ui-color-picker.js"],"names":["define","Utils","Backbone","View","extend","colors","standard","base","theme","initialize","options","this","merge","setElement","_template","$panel","$","$view","$value","$header","_build","visible","value","$boxes","self","on","css","trigger","fadeIn","fadeOut","new_val","undefined","empty","_getValue","html","_templateCheck","onchange","hex","x","parseInt","toString","slice","rgb","match","_content","label","padding","i","line_def","length","top","bottom","$content","_templateContent","$label","find","hide","$line","append","$box","_templateBox","color"],"mappings":"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"}
{"version":3,"file":"ui-color-picker.js","sources":["../../../src/mvc/ui/ui-color-picker.js"],"names":["define","Utils","Backbone","View","extend","colors","standard","base","theme","initialize","options","this","merge","setElement","_template","$panel","$","$view","$value","$header","_build","visible","value","$boxes","self","on","css","trigger","fadeIn","fadeOut","new_val","undefined","empty","_getValue","html","_templateCheck","onchange","hex","x","parseInt","toString","slice","rgb","match","_content","i","line_def","length","$content","_templateContent","$line","find","append","$box","_templateBox","top","bottom","color"],"mappings":"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"}
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"user-preferences.js","sources":["../../../src/mvc/user/user-preferences.js"],"names":["define","Form","Ui","Model","Backbone","extend","initialize","options","user_id","Galaxy","user","id","this","set","information","title","description","url","icon","password","submit_title","communication","permissions","api_key","submit_icon","toolbox_filters","openids","onclick","window","location","href","root","custom_builds","logout","modal","show","body","buttons","Cancel","hide","Sign out","View","model","message","Message","setElement","render","self","config","$","getJSON","data","$preferences","addClass","append","$el","_","escape","email","$table","use_remote_user","_addLink","enable_communication_server","has_user_tool_filters","enable_openid","_templateFooter","empty","action","get","$row","_templateLink","$a","find","on","attr","nice_total_disk_usage","enable_quotas","quota","Forms","page","form_id","ajax","type","done","response","form","inputs","operations","submit","ButtonIcon","tooltip","submit_tooltip","_submit","fail","status","persistent","JSON","stringify","create","contentType","matchModel","input","input_id","field_list","value","update","responseJSON","err_msg"],"mappings":"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"}
{"version":3,"file":"user-preferences.js","sources":["../../../src/mvc/user/user-preferences.js"],"names":["define","Form","Ui","Model","Backbone","extend","initialize","options","user_id","Galaxy","user","id","this","set","information","title","description","url","icon","password","submit_title","communication","permissions","api_key","submit_icon","toolbox_filters","openids","onclick","window","location","href","root","custom_builds","logout","modal","show","body","buttons","Cancel","hide","Sign out","View","model","message","Message","setElement","render","self","config","$","getJSON","data","$preferences","addClass","append","$el","_","escape","email","$table","use_remote_user","_addLink","enable_communication_server","has_user_tool_filters","enable_openid","_templateFooter","empty","action","get","$row","_templateLink","$a","find","on","attr","nice_total_disk_usage","enable_quotas","quota","Forms","page","form_id","ajax","type","done","response","form","inputs","operations","submit","ButtonIcon","tooltip","submit_tooltip","_submit","fail","status","persistent","JSON","stringify","create","contentType","matchModel","input","input_id","field_list","value","update","responseJSON","err_msg"],"mappings":"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"}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1,2 +1,2 @@
define(["mvc/base-mvc","mvc/citation/citation-model","utils/localization"],function(a,b,c){var d=Backbone.View.extend({tagName:"div",className:"citations",render:function(){return this.$el.append("<p>"+this.formattedReference()+"</p>"),this},formattedReference:function(){var a=this.model,b=a.entryType(),c=a.fields(),d="",e=this._asSentence((c.author?c.author:"")+(c.year?" ("+c.year+")":""))+" ",f=c.title||"",g=c.pages?"pp. "+c.pages:"",h=c.address;if("article"==b){var i=(c.volume?c.volume:"")+(c.number?" ("+c.number+")":"")+(g?", "+g:"");d=e+this._asSentence(f)+(c.journal?"In <em>"+c.journal+", ":"")+this._asSentence(i)+this._asSentence(c.address)+"</em>"}else d="inproceedings"==b||"proceedings"==b?e+this._asSentence(f)+(c.booktitle?"In <em>"+c.booktitle+", ":"")+(g?g:"")+(h?", "+h:"")+".</em>":"mastersthesis"==b||"phdthesis"==b?e+this._asSentence(f)+(c.howpublished?c.howpublished+". ":"")+(c.note?c.note+".":""):"techreport"==b?e+this._asSentence(f)+this._asSentence(c.institution)+this._asSentence(c.number)+this._asSentence(c.type):"book"==b||"inbook"==b||"incollection"==b?e+" "+this._formatBookInfo(c):e+" "+this._asSentence(f)+this._asSentence(c.howpublished)+this._asSentence(c.note);var j="";c.doi&&(j="http://dx.doi.org/"+c.doi,d+='[<a href="'+j+'" target="_blank">doi:'+c.doi+"</a>]");var k=c.url||j;return k&&(d+='[<a href="'+k+'" target="_blank">Link</a>]'),d},_formatBookInfo:function(a){var b="";return a.chapter&&(b+=a.chapter+" in "),a.title&&(b+="<em>"+a.title+"</em>"),a.editor&&(b+=", Edited by "+a.editor+", "),a.publisher&&(b+=", "+a.publisher),a.pages&&(b+=", pp. "+a.pages),a.series&&(b+=", <em>"+a.series+"</em>"),a.volume&&(b+=", Vol."+a.volume),a.issn&&(b+=", ISBN: "+a.issn),b+"."},_asSentence:function(a){return a&&a.trim()?a+". ":""}}),e=Backbone.View.extend({el:"#citations",initialize:function(){this.listenTo(this.collection,"add",this.renderCitation)},events:{"click .citations-to-bibtex":"showBibtex","click .citations-to-formatted":"showFormatted"},renderCitation:function(a){var b=new d({model:a});this.$(".citations-formatted").append(b.render().el);var c=this.$(".citations-bibtex-text");c.val(c.val()+"\n\r"+a.attributes.content)},render:function(){this.$el.html(this.citationsElement()),this.collection.each(function(a){this.renderCitation(a)},this),this.showFormatted()},showBibtex:function(){this.$(".citations-to-formatted").show(),this.$(".citations-to-bibtex").hide(),this.$(".citations-bibtex").show(),this.$(".citations-formatted").hide(),this.$(".citations-bibtex-text").select()},showFormatted:function(){this.$(".citations-to-formatted").hide(),this.$(".citations-to-bibtex").show(),this.$(".citations-bibtex").hide(),this.$(".citations-formatted").show()},partialWarningElement:function(){return this.collection.partial?['<div style="padding:5px 10px">',"<b>Warning: This is a experimental feature.</b> Most Galaxy tools will not annotate"," citations explicitly at this time. When writing up your analysis, please manually"," review your histories and find all references"," that should be cited in order to completely describe your work. Also, please remember to",' <a href="https://wiki.galaxyproject.org/CitingGalaxy">cite Galaxy</a>.',"</div>"].join(""):""},citationsElement:function(){return['<div class="toolForm">','<div class="toolFormTitle">',c("Citations"),' <button type="button" class="btn btn-xs citations-to-bibtex" title="Show all in BibTeX format."><i class="fa fa-pencil-square-o"></i> Show BibTeX</button>',' <button type="button" class="btn btn-xs citations-to-formatted" title="Return to formatted citation list."><i class="fa fa-times"></i> Hide BibTeX</button>',"</div>",'<div class="toolFormBody" style="padding:5px 10px">',this.partialWarningElement(),'<span class="citations-formatted" style="word-wrap: break-word;"></span>',"</div>",'<div class="citations-bibtex toolFormBody" style="padding:5px 10px">','<textarea style="width: 100%; height: 500px;" class="citations-bibtex-text"></textarea>',"</div>","</div>"].join("")}});return{CitationView:d,CitationListView:e}});
define(["mvc/base-mvc","mvc/citation/citation-model","utils/localization"],function(a,b,c){var d=Backbone.View.extend({tagName:"div",className:"citations",render:function(){return this.$el.append("<p>"+this.formattedReference()+"</p>"),this},formattedReference:function(){var a=this.model,b=a.entryType(),c=a.fields(),d="",e=this._asSentence((c.author?c.author:"")+(c.year?" ("+c.year+")":""))+" ",f=c.title||"",g=c.pages?"pp. "+c.pages:"",h=c.address;if("article"==b){var i=(c.volume?c.volume:"")+(c.number?" ("+c.number+")":"")+(g?", "+g:"");d=e+this._asSentence(f)+(c.journal?"In <em>"+c.journal+", ":"")+this._asSentence(i)+this._asSentence(c.address)+"</em>"}else d="inproceedings"==b||"proceedings"==b?e+this._asSentence(f)+(c.booktitle?"In <em>"+c.booktitle+", ":"")+(g?g:"")+(h?", "+h:"")+".</em>":"mastersthesis"==b||"phdthesis"==b?e+this._asSentence(f)+(c.howpublished?c.howpublished+". ":"")+(c.note?c.note+".":""):"techreport"==b?e+this._asSentence(f)+this._asSentence(c.institution)+this._asSentence(c.number)+this._asSentence(c.type):"book"==b||"inbook"==b||"incollection"==b?e+" "+this._formatBookInfo(c):e+" "+this._asSentence(f)+this._asSentence(c.howpublished)+this._asSentence(c.note);var j="";c.doi&&(j="http://dx.doi.org/"+c.doi,d+='[<a href="'+j+'" target="_blank">doi:'+c.doi+"</a>]");var k=c.url||j;return k&&(d+='[<a href="'+k+'" target="_blank">Link</a>]'),d},_formatBookInfo:function(a){var b="";return a.chapter&&(b+=a.chapter+" in "),a.title&&(b+="<em>"+a.title+"</em>"),a.editor&&(b+=", Edited by "+a.editor+", "),a.publisher&&(b+=", "+a.publisher),a.pages&&(b+=", pp. "+a.pages),a.series&&(b+=", <em>"+a.series+"</em>"),a.volume&&(b+=", Vol."+a.volume),a.issn&&(b+=", ISBN: "+a.issn),b+"."},_asSentence:function(a){return a&&a.trim()?a+". ":""}}),e=Backbone.View.extend({el:"#citations",initialize:function(){this.listenTo(this.collection,"add",this.renderCitation)},events:{"click .citations-to-bibtex":"showBibtex","click .citations-to-formatted":"showFormatted"},renderCitation:function(a){var b=new d({model:a});this.$(".citations-formatted").append(b.render().el);var c=this.$(".citations-bibtex-text");c.val(c.val()+"\n\r"+a.attributes.content)},render:function(){this.$el.html(this.citationsElement()),this.collection.each(function(a){this.renderCitation(a)},this),this.showFormatted()},showBibtex:function(){this.$(".citations-to-formatted").show(),this.$(".citations-to-bibtex").hide(),this.$(".citations-bibtex").show(),this.$(".citations-formatted").hide(),this.$(".citations-bibtex-text").select()},showFormatted:function(){this.$(".citations-to-formatted").hide(),this.$(".citations-to-bibtex").show(),this.$(".citations-bibtex").hide(),this.$(".citations-formatted").show()},partialWarningElement:function(){return this.collection.partial?['<div style="padding:5px 10px">',"<b>Warning: This is a experimental feature.</b> Most Galaxy tools will not annotate"," citations explicitly at this time. When writing up your analysis, please manually"," review your histories and find all references"," that should be cited in order to completely describe your work. Also, please remember to",' <a href="https://galaxyproject.org/citing-galaxy">cite Galaxy</a>.',"</div>"].join(""):""},citationsElement:function(){return['<div class="toolForm">','<div class="toolFormTitle">',c("Citations"),' <button type="button" class="btn btn-xs citations-to-bibtex" title="Show all in BibTeX format."><i class="fa fa-pencil-square-o"></i> Show BibTeX</button>',' <button type="button" class="btn btn-xs citations-to-formatted" title="Return to formatted citation list."><i class="fa fa-times"></i> Hide BibTeX</button>',"</div>",'<div class="toolFormBody" style="padding:5px 10px">',this.partialWarningElement(),'<span class="citations-formatted" style="word-wrap: break-word;"></span>',"</div>",'<div class="citations-bibtex toolFormBody" style="padding:5px 10px">','<textarea style="width: 100%; height: 500px;" class="citations-bibtex-text"></textarea>',"</div>","</div>"].join("")}});return{CitationView:d,CitationListView:e}});
//# sourceMappingURL=../../../maps/mvc/citation/citation-view.js.map
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,2 +1,2 @@
define(["layout/masthead","mvc/base-mvc","utils/utils","libs/toastr","mvc/library/library-model","mvc/library/library-libraryrow-view","libs/underscore"],function(a,b,c,d,e,f,g){var h=Backbone.View.extend({el:"#libraries_element",events:{"click .sort-libraries-link":"sort_clicked"},defaults:{page_count:null,show_page:null,all_fetched:!1},initialize:function(a){this.options=g.defaults(this.options||{},a,this.defaults);var b=this;this.modal=null,this.collection=new e.Libraries,this.collection.url=this.collection.urlRoot+"?deleted=false",this.collection.fetch({success:function(){b.render()},error:function(a,b){d.error("undefined"!=typeof b.responseJSON?b.responseJSON.err_msg:"An error ocurred.")}})},render:function(a){this.options=g.extend(this.options,a),this.setElement("#libraries_element");var b=this.templateLibraryList(),c=null,d=null;if($(".tooltip").hide(),"undefined"!=typeof a&&(d="undefined"!=typeof a.models?a.models:null),null!==this.collection&&null===d)this.sortLibraries(),c=Galaxy.libraries.preferences.get("with_deleted")?this.collection.models:this.collection.where({deleted:!1});else if(null!==d)if(Galaxy.libraries.preferences.get("with_deleted"))c=d;else{var e=function(a){return a.get("deleted")===!1};c=g.filter(d,e)}else c=[];(null===this.options.show_page||this.options.show_page<1)&&(this.options.show_page=1),this.options.total_libraries_count=c.length;var f=Galaxy.libraries.preferences.get("library_page_size")*(this.options.show_page-1);this.options.page_count=Math.ceil(this.options.total_libraries_count/Galaxy.libraries.preferences.get("library_page_size")),this.options.total_libraries_count>0&&f<this.options.total_libraries_count?(c=c.slice(f,f+Galaxy.libraries.preferences.get("library_page_size")),this.options.libraries_shown=c.length,Galaxy.libraries.preferences.get("library_page_size")*this.options.show_page>this.options.total_libraries_count+Galaxy.libraries.preferences.get("library_page_size")&&(c=[]),this.$el.html(b({length:1,order:Galaxy.libraries.preferences.get("sort_order"),search_term:Galaxy.libraries.libraryToolbarView.options.search_term})),Galaxy.libraries.libraryToolbarView.renderPaginator(this.options),this.renderRows(c)):(this.$el.html(b({length:0,order:Galaxy.libraries.preferences.get("sort_order"),search_term:Galaxy.libraries.libraryToolbarView.options.search_term})),Galaxy.libraries.libraryToolbarView.renderPaginator(this.options)),$("#center [data-toggle]").tooltip(),$("#center").css("overflow","auto")},fetchDeleted:function(){if(this.options.all_fetched)this.render();else{var a=this;this.collection.url=this.collection.urlRoot+"?deleted=true",this.collection.fetch({remove:!1,success:function(){a.options.all_fetched=!0,a.render()},error:function(a,b){d.error("undefined"!=typeof b.responseJSON?b.responseJSON.err_msg:"An error ocurred.")}})}},renderRows:function(a){for(var b=0;b<a.length;b++){var c=a[b];this.renderOne({library:c})}},renderOne:function(a){var b=a.library,c=new f.LibraryRowView(b);this.$el.find("#library_list_body").append(c.el)},sort_clicked:function(){Galaxy.libraries.preferences.set("asc"===Galaxy.libraries.preferences.get("sort_order")?{sort_order:"desc"}:{sort_order:"asc"}),this.render()},sortLibraries:function(){"name"===Galaxy.libraries.preferences.get("sort_by")&&("asc"===Galaxy.libraries.preferences.get("sort_order")?this.collection.sortByNameAsc():"desc"===Galaxy.libraries.preferences.get("sort_order")&&this.collection.sortByNameDesc())},redirectToHome:function(){window.location="../"},redirectToLogin:function(){window.location="/user/login"},searchLibraries:function(a){var b=$.trim(a);if(""!==b){var c=null;c=this.collection.search(a),this.options.searching=!0,this.render({models:c})}else this.options.searching=!1,this.render()},templateLibraryList:function(){return g.template(['<div class="library_container table-responsive">',"<% if(length === 0) { %>","<% if(search_term.length > 0) { %>","<div>","There are no libraries matching your search. Try different keyword.","</div>","<% } else{ %>","<div>","There are no libraries visible to you here. If you expected some to show up please consult the",' <a href="https://wiki.galaxyproject.org/Admin/DataLibraries/LibrarySecurity" target="_blank">library security wikipage</a>',' or visit the <a href="https://biostar.usegalaxy.org/" target="_blank">Galaxy support site</a>.',"</div>","<% }%>","<% } else{ %>",'<table class="grid table table-condensed">',"<thead>",'<th style="width:30%;">','<a class="sort-libraries-link" title="Click to reverse order" href="#">',"name","</a>",'<span title="Sorted alphabetically" class="fa fa-sort-alpha-<%- order %>"/>',"</th>",'<th style="width:22%;">description</th>','<th style="width:22%;">synopsis</th> ','<th style="width:26%;"></th>',"</thead>",'<tbody id="library_list_body">',"</tbody>","</table>","<% }%>","</div>"].join(""))}});return{LibraryListView:h}});
define(["layout/masthead","mvc/base-mvc","utils/utils","libs/toastr","mvc/library/library-model","mvc/library/library-libraryrow-view","libs/underscore"],function(a,b,c,d,e,f,g){var h=Backbone.View.extend({el:"#libraries_element",events:{"click .sort-libraries-link":"sort_clicked"},defaults:{page_count:null,show_page:null,all_fetched:!1},initialize:function(a){this.options=g.defaults(this.options||{},a,this.defaults);var b=this;this.modal=null,this.collection=new e.Libraries,this.collection.url=this.collection.urlRoot+"?deleted=false",this.collection.fetch({success:function(){b.render()},error:function(a,b){d.error("undefined"!=typeof b.responseJSON?b.responseJSON.err_msg:"An error ocurred.")}})},render:function(a){this.options=g.extend(this.options,a),this.setElement("#libraries_element");var b=this.templateLibraryList(),c=null,d=null;if($(".tooltip").hide(),"undefined"!=typeof a&&(d="undefined"!=typeof a.models?a.models:null),null!==this.collection&&null===d)this.sortLibraries(),c=Galaxy.libraries.preferences.get("with_deleted")?this.collection.models:this.collection.where({deleted:!1});else if(null!==d)if(Galaxy.libraries.preferences.get("with_deleted"))c=d;else{var e=function(a){return a.get("deleted")===!1};c=g.filter(d,e)}else c=[];(null===this.options.show_page||this.options.show_page<1)&&(this.options.show_page=1),this.options.total_libraries_count=c.length;var f=Galaxy.libraries.preferences.get("library_page_size")*(this.options.show_page-1);this.options.page_count=Math.ceil(this.options.total_libraries_count/Galaxy.libraries.preferences.get("library_page_size")),this.options.total_libraries_count>0&&f<this.options.total_libraries_count?(c=c.slice(f,f+Galaxy.libraries.preferences.get("library_page_size")),this.options.libraries_shown=c.length,Galaxy.libraries.preferences.get("library_page_size")*this.options.show_page>this.options.total_libraries_count+Galaxy.libraries.preferences.get("library_page_size")&&(c=[]),this.$el.html(b({length:1,order:Galaxy.libraries.preferences.get("sort_order"),search_term:Galaxy.libraries.libraryToolbarView.options.search_term})),Galaxy.libraries.libraryToolbarView.renderPaginator(this.options),this.renderRows(c)):(this.$el.html(b({length:0,order:Galaxy.libraries.preferences.get("sort_order"),search_term:Galaxy.libraries.libraryToolbarView.options.search_term})),Galaxy.libraries.libraryToolbarView.renderPaginator(this.options)),$("#center [data-toggle]").tooltip(),$("#center").css("overflow","auto")},fetchDeleted:function(){if(this.options.all_fetched)this.render();else{var a=this;this.collection.url=this.collection.urlRoot+"?deleted=true",this.collection.fetch({remove:!1,success:function(){a.options.all_fetched=!0,a.render()},error:function(a,b){d.error("undefined"!=typeof b.responseJSON?b.responseJSON.err_msg:"An error ocurred.")}})}},renderRows:function(a){for(var b=0;b<a.length;b++){var c=a[b];this.renderOne({library:c})}},renderOne:function(a){var b=a.library,c=new f.LibraryRowView(b);this.$el.find("#library_list_body").append(c.el)},sort_clicked:function(){Galaxy.libraries.preferences.set("asc"===Galaxy.libraries.preferences.get("sort_order")?{sort_order:"desc"}:{sort_order:"asc"}),this.render()},sortLibraries:function(){"name"===Galaxy.libraries.preferences.get("sort_by")&&("asc"===Galaxy.libraries.preferences.get("sort_order")?this.collection.sortByNameAsc():"desc"===Galaxy.libraries.preferences.get("sort_order")&&this.collection.sortByNameDesc())},redirectToHome:function(){window.location="../"},redirectToLogin:function(){window.location="/user/login"},searchLibraries:function(a){var b=$.trim(a);if(""!==b){var c=null;c=this.collection.search(a),this.options.searching=!0,this.render({models:c})}else this.options.searching=!1,this.render()},templateLibraryList:function(){return g.template(['<div class="library_container table-responsive">',"<% if(length === 0) { %>","<% if(search_term.length > 0) { %>","<div>","There are no libraries matching your search. Try different keyword.","</div>","<% } else{ %>","<div>","There are no libraries visible to you here. If you expected some to show up please consult the",' <a href="https://galaxyproject.org/data-libraries/#permissions" target="_blank">library security wikipage</a>',' or visit the <a href="https://biostar.usegalaxy.org/" target="_blank">Galaxy support site</a>.',"</div>","<% }%>","<% } else{ %>",'<table class="grid table table-condensed">',"<thead>",'<th style="width:30%;">','<a class="sort-libraries-link" title="Click to reverse order" href="#">',"name","</a>",'<span title="Sorted alphabetically" class="fa fa-sort-alpha-<%- order %>"/>',"</th>",'<th style="width:22%;">description</th>','<th style="width:22%;">synopsis</th> ','<th style="width:26%;"></th>',"</thead>",'<tbody id="library_list_body">',"</tbody>","</table>","<% }%>","</div>"].join(""))}});return{LibraryListView:h}});
//# sourceMappingURL=../../../maps/mvc/library/library-librarylist-view.js.map
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1,2 +1,2 @@
define(["utils/utils"],function(a){return Backbone.View.extend({colors:{standard:["c00000","ff0000","ffc000","ffff00","92d050","00b050","00b0f0","0070c0","002060","7030a0"],base:["ffffff","000000","eeece1","1f497d","4f81bd","c0504d","9bbb59","8064a2","4bacc6","f79646"],theme:[["f2f2f2","7f7f7f","ddd9c3","c6d9f0","dbe5f1","f2dcdb","ebf1dd","e5e0ec","dbeef3","fdeada"],["d8d8d8","595959","c4bd97","8db3e2","b8cce4","e5b9b7","d7e3bc","ccc1d9","b7dde8","fbd5b5"],["bfbfbf","3f3f3f","938953","548dd4","95b3d7","d99694","c3d69b","b2a2c7","92cddc","fac08f"],["a5a5a5","262626","494429","17365d","366092","953734","76923c","5f497a","31859b","e36c09"],["7f7f7e","0c0c0c","1d1b10","0f243e","244061","632423","4f6128","3f3151","205867","974806"]]},initialize:function(b){this.options=a.merge(b,{}),this.setElement(this._template()),this.$panel=this.$(".ui-color-picker-panel"),this.$view=this.$(".ui-color-picker-view"),this.$value=this.$(".ui-color-picker-value"),this.$header=this.$(".ui-color-picker-header"),this._build(),this.visible=!1,this.value(this.options.value),this.$boxes=this.$(".ui-color-picker-box");var c=this;this.$boxes.on("click",function(){c.value($(this).css("background-color")),c.$header.trigger("click")}),this.$header.on("click",function(){c.visible=!c.visible,c.visible?c.$view.fadeIn("fast"):c.$view.fadeOut("fast")})},value:function(a){return void 0!==a&&null!==a&&(this.$value.css("background-color",a),this.$(".ui-color-picker-box").empty(),this.$(this._getValue()).html(this._templateCheck()),this.options.onchange&&this.options.onchange(a)),this._getValue()},_getValue:function(){function a(a){return("0"+parseInt(a).toString(16)).slice(-2)}var b=this.$value.css("background-color");return b=b.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/),b?"#"+a(b[1])+a(b[2])+a(b[3]):null},_build:function(){this._content({label:"Theme Colors",colors:this.colors.base,padding:10});for(var a in this.colors.theme){var b={};0==a?b.bottom=!0:a!=this.colors.theme.length-1?(b.top=!0,b.bottom=!0):(b.top=!0,b.padding=5),b.colors=this.colors.theme[a],this._content(b)}this._content({label:"Standard Colors",colors:this.colors.standard,padding:5})},_content:function(a){var b=(a.label,a.colors),c=a.padding,d=a.top,e=a.bottom,f=$(this._templateContent()),g=f.find(".label");a.label?g.html(a.label):g.hide();var h=f.find(".line");this.$panel.append(f);for(var i in b){var j=$(this._templateBox(b[i]));d&&(j.css("border-top","none"),j.css("border-top-left-radius","0px"),j.css("border-top-right-radius","0px")),e&&(j.css("border-bottom","none"),j.css("border-bottom-left-radius","0px"),j.css("border-bottom-right-radius","0px")),h.append(j)}return c&&h.css("padding-bottom",c),f},_templateCheck:function(){return'<div class="ui-color-picker-check fa fa-check"/>'},_templateContent:function(){return'<div class="ui-color-picker-content"><div class="label"/><div class="line"/></div>'},_templateBox:function(a){return'<div id="'+a+'" class="ui-color-picker-box" style="background-color: #'+a+';"/>'},_template:function(){return'<div class="ui-color-picker"><div class="ui-color-picker-header"><div class="ui-color-picker-value"/><div class="ui-color-picker-label">Select a color</div></div><div class="ui-color-picker-view ui-input"><div class="ui-color-picker-panel"/></div>'}})});
define(["utils/utils"],function(a){return Backbone.View.extend({colors:{standard:["c00000","ff0000","ffc000","ffff00","92d050","00b050","00b0f0","0070c0","002060","7030a0"],base:["ffffff","000000","eeece1","1f497d","4f81bd","c0504d","9bbb59","8064a2","4bacc6","f79646"],theme:[["f2f2f2","7f7f7f","ddd9c3","c6d9f0","dbe5f1","f2dcdb","ebf1dd","e5e0ec","dbeef3","fdeada"],["d8d8d8","595959","c4bd97","8db3e2","b8cce4","e5b9b7","d7e3bc","ccc1d9","b7dde8","fbd5b5"],["bfbfbf","3f3f3f","938953","548dd4","95b3d7","d99694","c3d69b","b2a2c7","92cddc","fac08f"],["a5a5a5","262626","494429","17365d","366092","953734","76923c","5f497a","31859b","e36c09"],["7f7f7e","0c0c0c","1d1b10","0f243e","244061","632423","4f6128","3f3151","205867","974806"]]},initialize:function(b){this.options=a.merge(b,{}),this.setElement(this._template()),this.$panel=this.$(".ui-color-picker-panel"),this.$view=this.$(".ui-color-picker-view"),this.$value=this.$(".ui-color-picker-value"),this.$header=this.$(".ui-color-picker-header"),this._build(),this.visible=!1,this.value(this.options.value),this.$boxes=this.$(".ui-color-picker-box");var c=this;this.$boxes.on("click",function(){c.value($(this).css("background-color")),c.$header.trigger("click")}),this.$header.on("click",function(){c.visible=!c.visible,c.visible?c.$view.fadeIn("fast"):c.$view.fadeOut("fast")})},value:function(a){return void 0!==a&&null!==a&&(this.$value.css("background-color",a),this.$(".ui-color-picker-box").empty(),this.$(this._getValue()).html(this._templateCheck()),this.options.onchange&&this.options.onchange(a)),this._getValue()},_getValue:function(){function a(a){return("0"+parseInt(a).toString(16)).slice(-2)}var b=this.$value.css("background-color");return b=b.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/),b?"#"+a(b[1])+a(b[2])+a(b[3]):null},_build:function(){this._content({colors:this.colors.base});for(var a in this.colors.theme){var b={};0==a?b.bottom=!0:a!=this.colors.theme.length-1?(b.top=!0,b.bottom=!0):b.top=!0,b.colors=this.colors.theme[a],this._content(b)}this._content({colors:this.colors.standard})},_content:function(a){var b=a.colors,c=$(this._templateContent()),d=c.find(".line");this.$panel.append(c);for(var e in b){var f=$(this._templateBox(b[e]));a.top&&(f.css("border-top","none"),f.css("border-top-left-radius","0px"),f.css("border-top-right-radius","0px")),a.bottom&&(f.css("border-bottom","none"),f.css("border-bottom-left-radius","0px"),f.css("border-bottom-right-radius","0px")),d.append(f)}return c},_templateCheck:function(){return'<div class="ui-color-picker-check fa fa-check"/>'},_templateContent:function(){return'<div class="ui-color-picker-content"><div class="line"/></div>'},_templateBox:function(a){return'<div id="'+a+'" class="ui-color-picker-box" style="background-color: #'+a+';"/>'},_template:function(){return'<div class="ui-color-picker"><div class="ui-color-picker-header"><div class="ui-color-picker-value"/><div class="ui-color-picker-label">Select a color</div></div><div class="ui-color-picker-view ui-input"><div class="ui-color-picker-panel"/></div>'}})});
//# sourceMappingURL=../../../maps/mvc/ui/ui-color-picker.js.map
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,2 +1,2 @@
define(["utils/utils","mvc/form/form-view","mvc/tool/tool-form-base"],function(a,b,c){var d=Backbone.View.extend({initialize:function(a){this.form=new b(a)}}),e=Backbone.View.extend({initialize:function(b){var d=this;this.workflow=b.workflow,this.node=b.node,this.node?(this.post_job_actions=this.node.post_job_actions||{},a.deepeach(b.inputs,function(b){b.type&&(-1!=["data","data_collection"].indexOf(b.type)?(b.type="hidden",b.info="Data input '"+b.name+"' ("+a.textify(b.extensions)+")",b.value={__class__:"RuntimeValue"}):b.fixed||(b.collapsible_value={__class__:"RuntimeValue"},b.is_workflow=b.options&&0==b.options.length||-1!=["integer","float"].indexOf(b.type)))}),a.deepeach(b.inputs,function(a){"conditional"==a.type&&(a.test_param.collapsible_value=void 0)}),this._makeSections(b),this.form=new c(a.merge(b,{text_enable:"Set in Advance",text_disable:"Set at Runtime",narrow:!0,initial_errors:!0,sustain_version:!0,cls:"ui-portlet-narrow",postchange:function(b,c){var e=c.model.attributes,f={tool_id:e.id,tool_version:e.version,type:"tool",inputs:$.extend(!0,{},c.data.create())};Galaxy.emit.debug("tool-form-workflow::postchange()","Sending current state.",f),a.request({type:"POST",url:Galaxy.root+"api/workflows/build_module",data:f,success:function(a){c.update(a.config_form),c.errors(a.config_form),d.node.update_field_data(a),Galaxy.emit.debug("tool-form-workflow::postchange()","Received new model.",a),b.resolve()},error:function(a){Galaxy.emit.debug("tool-form-workflow::postchange()","Refresh request failed.",a),b.reject()}})}}))):Galaxy.emit.debug("tool-form-workflow::initialize()","Node not found in workflow.")},_makeSections:function(a){var b=a.inputs,c=a.datatypes,d=this.node.output_terminals&&Object.keys(this.node.output_terminals)[0];if(d){b.push({name:"pja__"+d+"__EmailAction",label:"Email notification",type:"boolean",value:String(Boolean(this.post_job_actions["EmailAction"+d])),ignore:"false",help:"An email notification will be sent when the job has completed.",payload:{host:window.location.host}}),b.push({name:"pja__"+d+"__DeleteIntermediatesAction",label:"Output cleanup",type:"boolean",value:String(Boolean(this.post_job_actions["DeleteIntermediatesAction"+d])),ignore:"false",help:"Upon completion of this step, delete non-starred outputs from completed workflow steps if they are no longer required as inputs."});for(var e in this.node.output_terminals)b.push(this._makeSection(e,c))}},_makeSection:function(a,b){function c(b,e){e=e||[],e.push(b);for(var f in b.inputs){var g=b.inputs[f],h=g.action;if(h){if(g.name="pja__"+a+"__"+g.action,g.pja_arg&&(g.name+="__"+g.pja_arg),g.payload)for(var i in g.payload){var j=g.payload[i];g.payload[g.name+"__"+i]=j,delete j}var k=d.post_job_actions[g.action+a];if(k){for(var l in e)e[l].expanded=!0;g.value=g.pja_arg?k.action_arguments&&k.action_arguments[g.pja_arg]||g.value:"true"}}g.inputs&&c(g,e.slice(0))}}var d=this,e=[],f=[];for(key in b)e.push({0:b[key],1:b[key]});for(key in this.node.input_terminals)f.push(this.node.input_terminals[key].name);e.sort(function(a,b){return a.label>b.label?1:a.label<b.label?-1:0}),e.unshift({0:"Sequences",1:"Sequences"}),e.unshift({0:"Roadmaps",1:"Roadmaps"}),e.unshift({0:"Leave unchanged",1:"__empty__"});var g={title:"Configure Output: '"+a+"'",type:"section",flat:!0,inputs:[{label:"Label",type:"text",value:(output=this.node.getWorkflowOutput(a))&&output.label||"",help:"This will provide a short name to describe the output - this must be unique across workflows.",onchange:function(b){d.workflow.attemptUpdateOutputLabel(d.node,a,b)}},{action:"RenameDatasetAction",pja_arg:"newname",label:"Rename dataset",type:"text",value:"",ignore:"",help:'This action will rename the output dataset. Click <a href="https://wiki.galaxyproject.org/Learn/AdvancedWorkflow/Variables">here</a> for more information. Valid inputs are: <strong>'+f.join(", ")+"</strong>."},{action:"ChangeDatatypeAction",pja_arg:"newtype",label:"Change datatype",type:"select",ignore:"__empty__",value:"__empty__",options:e,help:"This action will change the datatype of the output to the indicated value."},{action:"TagDatasetAction",pja_arg:"tags",label:"Tags",type:"text",value:"",ignore:"",help:"This action will set tags for the dataset."},{title:"Assign columns",type:"section",flat:!0,inputs:[{action:"ColumnSetAction",pja_arg:"chromCol",label:"Chrom column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"startCol",label:"Start column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"endCol",label:"End column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"strandCol",label:"Strand column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"nameCol",label:"Name column",type:"integer",value:"",ignore:""}],help:"This action will set column assignments in the output dataset. Blank fields are ignored."}]};return c(g),g}});return{Default:d,Tool:e}});
define(["utils/utils","mvc/form/form-view","mvc/tool/tool-form-base"],function(a,b,c){var d=Backbone.View.extend({initialize:function(a){this.form=new b(a)}}),e=Backbone.View.extend({initialize:function(b){var d=this;this.workflow=b.workflow,this.node=b.node,this.node?(this.post_job_actions=this.node.post_job_actions||{},a.deepeach(b.inputs,function(b){b.type&&(-1!=["data","data_collection"].indexOf(b.type)?(b.type="hidden",b.info="Data input '"+b.name+"' ("+a.textify(b.extensions)+")",b.value={__class__:"RuntimeValue"}):b.fixed||(b.collapsible_value={__class__:"RuntimeValue"},b.is_workflow=b.options&&0==b.options.length||-1!=["integer","float"].indexOf(b.type)))}),a.deepeach(b.inputs,function(a){"conditional"==a.type&&(a.test_param.collapsible_value=void 0)}),this._makeSections(b),this.form=new c(a.merge(b,{text_enable:"Set in Advance",text_disable:"Set at Runtime",narrow:!0,initial_errors:!0,sustain_version:!0,cls:"ui-portlet-narrow",postchange:function(b,c){var e=c.model.attributes,f={tool_id:e.id,tool_version:e.version,type:"tool",inputs:$.extend(!0,{},c.data.create())};Galaxy.emit.debug("tool-form-workflow::postchange()","Sending current state.",f),a.request({type:"POST",url:Galaxy.root+"api/workflows/build_module",data:f,success:function(a){c.update(a.config_form),c.errors(a.config_form),d.node.update_field_data(a),Galaxy.emit.debug("tool-form-workflow::postchange()","Received new model.",a),b.resolve()},error:function(a){Galaxy.emit.debug("tool-form-workflow::postchange()","Refresh request failed.",a),b.reject()}})}}))):Galaxy.emit.debug("tool-form-workflow::initialize()","Node not found in workflow.")},_makeSections:function(a){var b=a.inputs,c=a.datatypes,d=this.node.output_terminals&&Object.keys(this.node.output_terminals)[0];if(d){b.push({name:"pja__"+d+"__EmailAction",label:"Email notification",type:"boolean",value:String(Boolean(this.post_job_actions["EmailAction"+d])),ignore:"false",help:"An email notification will be sent when the job has completed.",payload:{host:window.location.host}}),b.push({name:"pja__"+d+"__DeleteIntermediatesAction",label:"Output cleanup",type:"boolean",value:String(Boolean(this.post_job_actions["DeleteIntermediatesAction"+d])),ignore:"false",help:"Upon completion of this step, delete non-starred outputs from completed workflow steps if they are no longer required as inputs."});for(var e in this.node.output_terminals)b.push(this._makeSection(e,c))}},_makeSection:function(a,b){function c(b,e){e=e||[],e.push(b);for(var f in b.inputs){var g=b.inputs[f],h=g.action;if(h){if(g.name="pja__"+a+"__"+g.action,g.pja_arg&&(g.name+="__"+g.pja_arg),g.payload)for(var i in g.payload){var j=g.payload[i];g.payload[g.name+"__"+i]=j,delete j}var k=d.post_job_actions[g.action+a];if(k){for(var l in e)e[l].expanded=!0;g.value=g.pja_arg?k.action_arguments&&k.action_arguments[g.pja_arg]||g.value:"true"}}g.inputs&&c(g,e.slice(0))}}var d=this,e=[],f=[];for(key in b)e.push({0:b[key],1:b[key]});for(key in this.node.input_terminals)f.push(this.node.input_terminals[key].name);e.sort(function(a,b){return a.label>b.label?1:a.label<b.label?-1:0}),e.unshift({0:"Sequences",1:"Sequences"}),e.unshift({0:"Roadmaps",1:"Roadmaps"}),e.unshift({0:"Leave unchanged",1:"__empty__"});var g={title:"Configure Output: '"+a+"'",type:"section",flat:!0,inputs:[{label:"Label",type:"text",value:(output=this.node.getWorkflowOutput(a))&&output.label||"",help:"This will provide a short name to describe the output - this must be unique across workflows.",onchange:function(b){d.workflow.attemptUpdateOutputLabel(d.node,a,b)}},{action:"RenameDatasetAction",pja_arg:"newname",label:"Rename dataset",type:"text",value:"",ignore:"",help:'This action will rename the output dataset. Click <a href="https://galaxyproject.org/learn/advanced-workflow/variables/">here</a> for more information. Valid inputs are: <strong>'+f.join(", ")+"</strong>."},{action:"ChangeDatatypeAction",pja_arg:"newtype",label:"Change datatype",type:"select",ignore:"__empty__",value:"__empty__",options:e,help:"This action will change the datatype of the output to the indicated value."},{action:"TagDatasetAction",pja_arg:"tags",label:"Tags",type:"text",value:"",ignore:"",help:"This action will set tags for the dataset."},{title:"Assign columns",type:"section",flat:!0,inputs:[{action:"ColumnSetAction",pja_arg:"chromCol",label:"Chrom column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"startCol",label:"Start column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"endCol",label:"End column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"strandCol",label:"Strand column",type:"integer",value:"",ignore:""},{action:"ColumnSetAction",pja_arg:"nameCol",label:"Name column",type:"integer",value:"",ignore:""}],help:"This action will set column assignments in the output dataset. Blank fields are ignored."}]};return c(g),g}});return{Default:d,Tool:e}});
//# sourceMappingURL=../../../maps/mvc/workflow/workflow-forms.js.map
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -51,11 +51,11 @@
repository tools may include code that produces malicious behavior, so be aware of what you are installing.
</p>
<p>
If you discover a repository that causes problems after installation, contact <a href="https://wiki.galaxyproject.org/Support" target="_blank">Galaxy support</a>,
If you discover a repository that causes problems after installation, contact <a href="https://galaxyproject.org/support" target="_blank">Galaxy support</a>,
sending all necessary information, and appropriate action will be taken.
</p>
<p>
<a href="https://wiki.galaxyproject.org/ToolShedRepositoryFeatures#Contact_repository_owner" target="_blank">Contact the repository owner</a> for
<a href="https://galaxyproject.org/toolshed/repository-features/#contact-repository-owner" target="_blank">Contact the repository owner</a> for
general questions or concerns.
</p>
</div>
+1 -1
View File
@@ -33,7 +33,7 @@
%if trans.app.config.enable_quotas:
Your disk quota is: <strong>${trans.app.quota_agent.get_quota( trans.user, nice_size=True )}</strong>.
%endif
Is your usage more than expected? See the <a href="https://wiki.galaxyproject.org/Learn/ManagingDatasets" target="_blank">documentation</a> for tips on how to find all of the data in your account.
Is your usage more than expected? See the <a href="https://galaxyproject.org/learn/managing-datasets/" target="_blank">documentation</a> for tips on how to find all of the data in your account.
</p>
%endif
%else:
+6 -6
View File
@@ -4,7 +4,7 @@
<%def name="title()">Galaxy Administration</%def>
<h2>Administration</h2>
Please visit <a href="https://wiki.galaxyproject.org/Admin" target="_blank">the Galaxy administration hub</a> to learn how to keep your Galaxy in best shape.
Please visit <a href="https://galaxyproject.org/admin" target="_blank">the Galaxy administration hub</a> to learn how to keep your Galaxy in best shape.
%if message:
${render_msg( message, status )}
%else:
@@ -28,7 +28,7 @@ Please visit <a href="https://wiki.galaxyproject.org/Admin" target="_blank">the
<ul>
%if trans.app.tool_shed_registry and trans.app.tool_shed_registry.tool_sheds:
<li>
<strong>Search Tool Shed</strong> - Search and install new tools and other Galaxy utilities from the Tool Shed. See <a href="https://wiki.galaxyproject.org/Admin/Tools/AddToolFromToolShedTutorial" target="_blank">the tutorial</a>.
<strong>Search Tool Shed</strong> - Search and install new tools and other Galaxy utilities from the Tool Shed. See <a href="https://galaxyproject.org/admin/tools/add-tool-from-toolshed-tutorial" target="_blank">the tutorial</a>.
</li>
%endif
%if tool_shed_repository_ids:
@@ -84,14 +84,14 @@ Please visit <a href="https://wiki.galaxyproject.org/Admin" target="_blank">the
<ul>
%if trans.app.config.enable_quotas:
<li>
<strong>Quotas</strong> - Manage user space quotas. See <a href="https://wiki.galaxyproject.org/Admin/DiskQuotas" target="_blank">wiki</a> for details.
<strong>Quotas</strong> - Manage user space quotas. See <a href="https://galaxyproject.org/admin/disk-quotas" target="_blank">wiki</a> for details.
</li>
%endif
<li>
<strong>Data libraries</strong> - Data libraries enable authorized Galaxy users to share datasets with other groups or users. Only administrators can create data libraries. See <a href="https://wiki.galaxyproject.org/DataLibraries" target="_blank">wiki</a> for details and <a href="https://wiki.galaxyproject.org/Admin/DataLibraries/LibrarySecurity" target="_blank">this page</a> for security description.
<strong>Data libraries</strong> - Data libraries enable authorized Galaxy users to share datasets with other groups or users. Only administrators can create data libraries. See <a href="https://galaxyproject.org/data-libraries" target="_blank">wiki</a> for details.
</li>
<li>
<strong>Local data</strong> - Manage the reference (and other) data that is stored within Tool Data Tables. See <a href="https://wiki.galaxyproject.org/Admin/Tools/DataManagers" target="_blank">wiki</a> for details.
<strong>Local data</strong> - Manage the reference (and other) data that is stored within Tool Data Tables. See <a href="https://galaxyproject.org/admin/tools/data-managers" target="_blank">wiki</a> for details.
</li>
</ul>
<h4>Form definitions</h4>
@@ -104,7 +104,7 @@ Please visit <a href="https://wiki.galaxyproject.org/Admin" target="_blank">the
<h4>Sample tracking</h4>
<ul>
<li>
Please see the <a href="https://wiki.galaxyproject.org/Admin/DataLibraries/LibrarySampleTracking" target="_blank">sample tracking tutorial</a>.
Please see the <a href="https://galaxyproject.org/archive/library-sample-tracking" target="_blank">sample tracking tutorial</a>.
</li>
</ul>
%endif
@@ -67,4 +67,4 @@
<br/>
%endif
${render_msg( 'To find out more information about Data Managers, please visit the <a href="https://wiki.galaxyproject.org/Admin/Tools/DataManagers" target="_blank">wiki.</a>', "info" ) }
${render_msg( 'To find out more information about Data Managers, please visit the <a href="https://galaxyproject.org/admin/tools/data-managers/" target="_blank">wiki.</a>', "info" ) }
@@ -15,12 +15,12 @@
'lims_doc_url' : app.config.get("lims_doc_url", "https://usegalaxy.org/u/rkchak/p/sts"),
'biostar_url' : app.config.biostar_url,
'biostar_url_redirect' : h.url_for( controller='biostar', action='biostar_redirect', qualified=True ),
'support_url' : app.config.get("support_url", "https://wiki.galaxyproject.org/Support"),
'search_url' : app.config.get("search_url", "http://galaxyproject.org/search/usegalaxy/"),
'mailing_lists' : app.config.get("mailing_lists", "https://wiki.galaxyproject.org/MailingLists"),
'support_url' : app.config.get("support_url", "https://galaxyproject.org/support"),
'search_url' : app.config.get("search_url", "http://galaxyproject.org/search/"),
'mailing_lists' : app.config.get("mailing_lists", "https://galaxyproject.org/mailing-lists"),
'screencasts_url' : app.config.get("screencasts_url", "https://vimeo.com/galaxyproject"),
'wiki_url' : app.config.get("wiki_url", "https://wiki.galaxyproject.org/"),
'citation_url' : app.config.get("citation_url", "https://wiki.galaxyproject.org/CitingGalaxy"),
'wiki_url' : app.config.get("wiki_url", "https://galaxyproject.org/"),
'citation_url' : app.config.get("citation_url", "https://galaxyproject.org/citing-galaxy"),
'terms_url' : app.config.get("terms_url", ""),
'allow_user_creation' : app.config.allow_user_creation,
'logo_url' : h.url_for(app.config.get( 'logo_url', '/')),
@@ -78,4 +78,4 @@
});
});
</script>
</%def>
</%def>
+5 -5
View File
@@ -115,13 +115,13 @@
if qa_url:
menu_options = [ [_('Galaxy Q&A'), qa_url, "_blank" ] ]
menu_options.extend( [
[_('Tool Shed Wiki'), app.config.get( "wiki_url", "https://wiki.galaxyproject.org/ToolShed" ), "_blank" ],
[_('Support'), app.config.get( "support_url", "https://wiki.galaxyproject.org/Support" ), "_blank" ],
[_('Search'), app.config.get( "search_url", "http://galaxyproject.org/search/usegalaxy/" ), "_blank" ],
[_('Mailing Lists'), app.config.get( "mailing_lists_url", "https://wiki.galaxyproject.org/MailingLists" ), "_blank" ],
[_('Tool Shed Wiki'), app.config.get( "wiki_url", "https://galaxyproject.org/toolshed" ), "_blank" ],
[_('Support'), app.config.get( "support_url", "https://galaxyproject.org/support" ), "_blank" ],
[_('Search'), app.config.get( "search_url", "http://galaxyproject.org/search/" ), "_blank" ],
[_('Mailing Lists'), app.config.get( "mailing_lists_url", "https://galaxyproject.org/mailing-lists" ), "_blank" ],
[_('Videos'), app.config.get( "screencasts_url", "https://vimeo.com/galaxyproject" ), "_blank" ],
[_('Wiki'), app.config.get( "wiki_url", "http://galaxyproject.org/" ), "_blank" ],
[_('How to Cite Galaxy'), app.config.get( "citation_url", "https://wiki.galaxyproject.org/CitingGalaxy" ), "_blank" ]
[_('How to Cite Galaxy'), app.config.get( "citation_url", "https://galaxyproject.org/citing-galaxy" ), "_blank" ]
] )
tab( "help", _("Help"), None, menu_options=menu_options )
%>
+2 -2
View File
@@ -131,7 +131,7 @@ class JobsApiTestCase( api.ApiTestCase ):
self._assert_has_keys( show_jobs_response.json(), "command_line", "external_id" )
def test_deleting_output_keep_running_until_all_deleted( self ):
history_id, job_state, outputs = self._setup_running_two_output_job( 60 )
history_id, job_state, outputs = self._setup_running_two_output_job( 120 )
# Delete one of the two outputs and make sure the job is still running.
self._raw_update_history_item( history_id, outputs[0]["id"], {"deleted": True} )
@@ -145,7 +145,7 @@ class JobsApiTestCase( api.ApiTestCase ):
assert final_state in ["deleted_new", "deleted"], final_state
def test_purging_output_keep_running_until_all_purged( self ):
history_id, job_state, outputs = self._setup_running_two_output_job( 60 )
history_id, job_state, outputs = self._setup_running_two_output_job( 120 )
# Pretty much right away after the job is running, these paths should be populated -
# if they are grab them and make sure they are deleted at the end of the job.
+54 -4
View File
@@ -13,6 +13,7 @@ from base.populators import (
DatasetCollectionPopulator,
DatasetPopulator,
skip_without_tool,
wait_on,
WorkflowPopulator
)
from galaxy.exceptions import error_codes
@@ -259,6 +260,10 @@ class BaseWorkflowsApiTestCase( api.ApiTestCase ):
def _history_jobs( self, history_id ):
return self._get("jobs", { "history_id": history_id, "order_by": "create_time" } ).json()
def _assert_history_job_count( self, history_id, n ):
jobs = self._history_jobs( history_id )
self.assertEqual( len( jobs ), n )
# Workflow API TODO:
# - Allow history_id as param to workflow run action. (hist_id)
@@ -895,6 +900,50 @@ steps:
content = self.dataset_populator.get_history_dataset_content( history_id )
self.assertEqual(content.strip(), "samp1\t10.0\nsamp2\t20.0\nsamp1\t20.0\nsamp2\t40.0")
def test_filter_failed_mapping( self ):
history_id = self.dataset_populator.new_history()
summary = self._run_jobs("""
class: GalaxyWorkflow
inputs:
- type: collection
label: input_c
steps:
- label: mixed_collection
tool_id: exit_code_from_file
state:
input:
$link: input_c
- label: filtered_collection
tool_id: "__FILTER_FAILED_DATASETS__"
state:
input:
$link: mixed_collection#out_file1
- tool_id: cat1
state:
input1:
$link: filtered_collection
test_data:
input_c:
type: list
elements:
- identifier: i1
content: "0"
- identifier: i2
content: "1"
""", history_id=history_id, wait=True, assert_ok=False)
jobs = summary.jobs
def filter_jobs_by_tool(tool_id):
return [j for j in summary.jobs if j["tool_id"] == tool_id]
assert len(filter_jobs_by_tool("upload1")) == 2, jobs
assert len(filter_jobs_by_tool("exit_code_from_file")) == 2, jobs
assert len(filter_jobs_by_tool("__FILTER_FAILED_DATASETS__")) == 1, jobs
# Follow proves one job was filtered out of the result of cat1
assert len(filter_jobs_by_tool("cat1")) == 1, jobs
def test_workflow_request( self ):
workflow = self.workflow_populator.load_workflow( name="test_for_queue" )
workflow_request, history_id = self._setup_workflow_run( workflow )
@@ -1060,20 +1109,21 @@ steps:
test_data:
test_input: "hello world"
""", history_id=history_id, wait=False)
time.sleep( 2 )
history_id = run_summary.history_id
workflow_id = run_summary.workflow_id
invocation_id = run_summary.invocation_id
# Wait for first two jobs to be scheduled - upload and first cat.
wait_on( lambda: len( self._history_jobs( history_id ) ) >= 2 or None, "history jobs" )
self.dataset_populator.wait_for_history( history_id, assert_ok=True )
invocation = self._invocation_details( workflow_id, invocation_id )
assert invocation[ 'state' ] != 'scheduled'
assert invocation[ 'state' ] != 'scheduled', invocation
# Expect two jobs - the upload and first cat. randomlines shouldn't run
# it is implicitly dependent on second cat.
assert len( self._history_jobs( history_id ) ) == 2
self._assert_history_job_count( history_id, 2 )
self.__review_paused_steps( workflow_id, invocation_id, order_index=2, action=True )
self.wait_for_invocation_and_jobs( history_id, workflow_id, invocation_id )
assert len( self._history_jobs( history_id ) ) == 4
self._assert_history_job_count( history_id, 4 )
def test_run_with_validated_parameter_connection_valid( self ):
history_id = self.dataset_populator.new_history()
+16 -4
View File
@@ -79,7 +79,7 @@ class NavigatesGalaxy(HasDriver):
self.switch_to_main_panel()
yield
finally:
self.driver.switch_to.default_content
self.driver.switch_to.default_content()
def api_get(self, endpoint, data={}, raw=False):
full_url = self.build_url("api/" + endpoint, for_selenium=False)
@@ -148,7 +148,14 @@ class NavigatesGalaxy(HasDriver):
contents = self.api_get("histories/%s/contents" % current_history_id)
history_item = [d for d in contents if d["hid"] == hid][0]
history_item_selector = "#%s-%s" % (history_item["history_content_type"], history_item["id"])
self.wait_for_selector_visible(history_item_selector)
try:
self.wait_for_selector_visible(history_item_selector)
except self.TimeoutException as e:
dataset_elements = self.driver.find_elements_by_css_selector("#current-history-panel .list-items div")
div_ids = [d.get_attribute('id') for d in dataset_elements]
template = "Failed waiting on history item %d to become visible, visible datasets include [%s]."
message = template % (hid, ",".join(div_ids))
raise self.prepend_timeout_message(e, message)
return history_item_selector
def history_panel_wait_for_hid_hidden(self, hid, timeout=60):
@@ -367,8 +374,13 @@ class NavigatesGalaxy(HasDriver):
@retry_during_transitions
def upload_build(self):
start_button = self.wait_for_selector_clickable("div#collection button#btn-build")
start_button.click()
build_button = self.wait_for_selector_clickable("div#collection button#btn-build")
# TODO: Eliminate the need for this hack. This hack is in here because the test
# occasionally fails at the next step because the UI has not transitioned to the
# new content. I assume that means this click is sent before the callback is
# registered.
time.sleep(.5)
build_button.click()
def upload_queue_local_file(self, test_path, tab_id="regular"):
local_upload_button = self.wait_for_selector_clickable("div#%s button#btn-local" % tab_id)
+2 -2
View File
@@ -29,7 +29,7 @@ define([ 'test-app', 'mvc/form/form-input', 'mvc/ui/ui-misc', 'mvc/form/form-dat
ok( dropdown.children().length == 2, 'Found two menu items' );
dropdown.find( '.fa-info-circle' ).parent().click();
this.clock.tick ( window.WAIT_FADE );
ok( form.$( '.ui-message' ).html() === '<span>This tool requires req_name_a (Version req_version_a) and req_name_b (Version req_version_b). Click <a target="_blank" href="https://wiki.galaxyproject.org/Tools/Requirements">here</a> for more information.</span>', 'Check requirements message' );
ok( form.$( '.ui-message' ).html() === '<span>This tool requires req_name_a (Version req_version_a) and req_name_b (Version req_version_b). Click <a target="_blank" href="https://galaxyproject.org/tools/requirements/">here</a> for more information.</span>', 'Check requirements message' );
ok( form.$( '.form-repeat-delete' ).css( 'display' ) == 'none', 'Delete button disabled' );
var $add = form.$( '.form-repeat-add' );
ok( !$add.attr( 'disabled' ), 'Adding new repeat possible' );
@@ -101,4 +101,4 @@ define([ 'test-app', 'mvc/form/form-input', 'mvc/ui/ui-misc', 'mvc/form/form-dat
input.model.set( 'help', '_help (_argument)' );
ok( input.$info.html() == '_help (_argument)', 'Correct help text with argument from help' );
} );
});
});
+2 -2
View File
@@ -698,11 +698,11 @@ define([ 'test-app', 'mvc/ui/ui-misc', 'mvc/ui/ui-select-content', 'mvc/ui/ui-dr
firstvalue : 'id0',
firstlabel : 'hid0: name0',
firstmultiple : true,
totalmultiple : 1,
totalmultiple : 2,
lastvalue : 'id2',
lastlabel : 'hid2: name2',
lastlength : 3,
lastmultiple : false });
lastmultiple : true });
select.model.set( 'multiple', false );
select.model.set( 'type', 'data_collection' );
+32 -23
View File
@@ -6,6 +6,7 @@ import datetime
import json
import os
import time
import traceback
from functools import wraps
@@ -49,6 +50,8 @@ GALAXY_TEST_SELENIUM_REMOTE_PORT = os.environ.get("GALAXY_TEST_SELENIUM_REMOTE_P
GALAXY_TEST_SELENIUM_REMOTE_HOST = os.environ.get("GALAXY_TEST_SELENIUM_REMOTE_HOST", DEFAULT_SELENIUM_REMOTE_HOST)
GALAXY_TEST_SELENIUM_HEADLESS = os.environ.get("GALAXY_TEST_SELENIUM_HEADLESS", DEFAULT_SELENIUM_HEADLESS)
GALAXY_TEST_EXTERNAL_FROM_SELENIUM = os.environ.get("GALAXY_TEST_EXTERNAL_FROM_SELENIUM", None)
# Auto-retry selenium tests this many times.
GALAXY_TEST_SELENIUM_RETRIES = int(os.environ.get("GALAXY_TEST_SELENIUM_RETRIES", "0"))
# Test case data
DEFAULT_PASSWORD = '123456'
@@ -66,32 +69,38 @@ def selenium_test(f):
@wraps(f)
def func_wrapper(self, *args, **kwds):
try:
return f(self, *args, **kwds)
except Exception:
if GALAXY_TEST_ERRORS_DIRECTORY and GALAXY_TEST_ERRORS_DIRECTORY != "0":
if not os.path.exists(GALAXY_TEST_ERRORS_DIRECTORY):
os.makedirs(GALAXY_TEST_ERRORS_DIRECTORY)
result_name = f.__name__ + datetime.datetime.now().strftime("%Y%m%d%H%M%s")
target_directory = os.path.join(GALAXY_TEST_ERRORS_DIRECTORY, result_name)
retry_attempts = 0
while True:
try:
return f(self, *args, **kwds)
except Exception:
if GALAXY_TEST_ERRORS_DIRECTORY and GALAXY_TEST_ERRORS_DIRECTORY != "0":
if not os.path.exists(GALAXY_TEST_ERRORS_DIRECTORY):
os.makedirs(GALAXY_TEST_ERRORS_DIRECTORY)
result_name = f.__name__ + datetime.datetime.now().strftime("%Y%m%d%H%M%s")
target_directory = os.path.join(GALAXY_TEST_ERRORS_DIRECTORY, result_name)
def write_file(name, content):
with open(os.path.join(target_directory, name), "wb") as buf:
buf.write(content.encode("utf-8"))
def write_file(name, content):
with open(os.path.join(target_directory, name), "wb") as buf:
buf.write(content.encode("utf-8"))
os.makedirs(target_directory)
self.driver.save_screenshot(os.path.join(target_directory, "last.png"))
write_file("page_source.txt", self.driver.page_source)
write_file("DOM.txt", self.driver.execute_script("return document.documentElement.outerHTML"))
iframes = self.driver.find_elements_by_css_selector("iframe")
for iframe in iframes:
pass
# TODO: Dump content out for debugging in the future.
# iframe_id = iframe.get_attribute("id")
# if iframe_id:
# write_file("iframe_%s" % iframe_id, "My content")
os.makedirs(target_directory)
self.driver.save_screenshot(os.path.join(target_directory, "last.png"))
write_file("page_source.txt", self.driver.page_source)
write_file("DOM.txt", self.driver.execute_script("return document.documentElement.outerHTML"))
write_file("stacktrace.txt", traceback.format_exc())
iframes = self.driver.find_elements_by_css_selector("iframe")
for iframe in iframes:
pass
# TODO: Dump content out for debugging in the future.
# iframe_id = iframe.get_attribute("id")
# if iframe_id:
# write_file("iframe_%s" % iframe_id, "My content")
raise
if retry_attempts < GALAXY_TEST_SELENIUM_RETRIES:
retry_attempts += 1
else:
raise
return func_wrapper
+1 -3
View File
@@ -29,10 +29,8 @@ class WorkflowRunTestCase(SeleniumTestCase, UsesHistoryItemAssertions):
with self.main_panel():
self.workflow_run_submit()
time.sleep(.5)
self.wait_for_history()
self.home()
self.history_panel_wait_for_hid_ok(2)
self.history_panel_wait_for_hid_ok(3)
self.history_panel_click_item_title(hid=2, wait=True)
self.assert_item_summary_includes(2, "2 sequences")
+6
View File
@@ -8,6 +8,8 @@ whitelist_externals = bash
deps =
flake8
flake8-docstrings
# The next dep can be removed when https://gitlab.com/pycqa/flake8-docstrings/issues/19 is fixed
pydocstyle<2
[testenv:py33-lint]
commands = bash .ci/flake8_py3_wrapper.sh
@@ -80,6 +82,8 @@ skip_install = True
deps =
flake8
flake8-docstrings
# The next dep can be removed when https://gitlab.com/pycqa/flake8-docstrings/issues/19 is fixed
pydocstyle<2
[testenv:py27-lint-docstring-include-list]
commands = bash .ci/flake8_wrapper_docstrings.sh --include
@@ -88,3 +92,5 @@ skip_install = True
deps =
flake8
flake8-docstrings
# The next dep can be removed when https://gitlab.com/pycqa/flake8-docstrings/issues/19 is fixed
pydocstyle<2