This commit is contained in:
Jeremy Goecks
2012-04-04 21:45:44 -04:00
14 changed files with 304 additions and 139 deletions
+58 -40
View File
@@ -1056,26 +1056,35 @@ class DrillDownSelectToolParameter( SelectToolParameter ):
... </param>
... ''' ) )
>>> print p.get_html()
<div><ul class="toolParameterExpandableCollapsable">
<li><span class="toolParameterExpandableCollapsable">[+]</span><input type="checkbox" name="some_name" value="heading1"">Heading 1
<ul class="toolParameterExpandableCollapsable" default_state="collapsed">
<li><input type="checkbox" name="some_name" value="option1"">Option 1
</li>
<li><input type="checkbox" name="some_name" value="option2"">Option 2
</li>
<li><span class="toolParameterExpandableCollapsable">[+]</span><input type="checkbox" name="some_name" value="heading1"">Heading 1
<ul class="toolParameterExpandableCollapsable" default_state="collapsed">
<li><input type="checkbox" name="some_name" value="option3"">Option 3
</li>
<li><input type="checkbox" name="some_name" value="option4"">Option 4
</li>
</ul>
</li>
</ul>
</li>
<li><input type="checkbox" name="some_name" value="option5"">Option 5
</li>
</ul></div>
<div class="form-row drilldown-container" id="drilldown--736f6d655f6e616d65">
<div class="form-row-input">
<span class="form-toggle icon-button toggle-expand" id="drilldown--736f6d655f6e616d65-68656164696e6731-click"></span>
<input type="checkbox" name="some_name" value="heading1" >Heading 1
<div class="form-row" id="drilldown--736f6d655f6e616d65-68656164696e6731-container" style="float: left; margin-left: 1em;">
<div class="form-row-input">
<input type="checkbox" name="some_name" value="option1" >Option 1
</div>
<div class="form-row-input">
<input type="checkbox" name="some_name" value="option2" >Option 2
</div>
<div class="form-row-input">
<span class="form-toggle icon-button toggle-expand" id="drilldown--736f6d655f6e616d65-68656164696e6731-68656164696e6731-click"></span>
<input type="checkbox" name="some_name" value="heading1" >Heading 1
<div class="form-row" id="drilldown--736f6d655f6e616d65-68656164696e6731-68656164696e6731-container" style="float: left; margin-left: 1em;">
<div class="form-row-input">
<input type="checkbox" name="some_name" value="option3" >Option 3
</div>
<div class="form-row-input">
<input type="checkbox" name="some_name" value="option4" >Option 4
</div>
</div>
</div>
</div>
</div>
<div class="form-row-input">
<input type="checkbox" name="some_name" value="option5" >Option 5
</div>
</div>
>>> p = DrillDownSelectToolParameter( None, XML(
... '''
... <param name="some_name" type="drill_down" display="radio" hierarchy="recurse" multiple="false">
@@ -1093,26 +1102,35 @@ class DrillDownSelectToolParameter( SelectToolParameter ):
... </param>
... ''' ) )
>>> print p.get_html()
<div><ul class="toolParameterExpandableCollapsable">
<li><span class="toolParameterExpandableCollapsable">[+]</span><input type="radio" name="some_name" value="heading1"">Heading 1
<ul class="toolParameterExpandableCollapsable" default_state="collapsed">
<li><input type="radio" name="some_name" value="option1"">Option 1
</li>
<li><input type="radio" name="some_name" value="option2"">Option 2
</li>
<li><span class="toolParameterExpandableCollapsable">[+]</span><input type="radio" name="some_name" value="heading1"">Heading 1
<ul class="toolParameterExpandableCollapsable" default_state="collapsed">
<li><input type="radio" name="some_name" value="option3"">Option 3
</li>
<li><input type="radio" name="some_name" value="option4"">Option 4
</li>
</ul>
</li>
</ul>
</li>
<li><input type="radio" name="some_name" value="option5"">Option 5
</li>
</ul></div>
<div class="form-row drilldown-container" id="drilldown--736f6d655f6e616d65">
<div class="form-row-input">
<span class="form-toggle icon-button toggle-expand" id="drilldown--736f6d655f6e616d65-68656164696e6731-click"></span>
<input type="radio" name="some_name" value="heading1" >Heading 1
<div class="form-row" id="drilldown--736f6d655f6e616d65-68656164696e6731-container" style="float: left; margin-left: 1em;">
<div class="form-row-input">
<input type="radio" name="some_name" value="option1" >Option 1
</div>
<div class="form-row-input">
<input type="radio" name="some_name" value="option2" >Option 2
</div>
<div class="form-row-input">
<span class="form-toggle icon-button toggle-expand" id="drilldown--736f6d655f6e616d65-68656164696e6731-68656164696e6731-click"></span>
<input type="radio" name="some_name" value="heading1" >Heading 1
<div class="form-row" id="drilldown--736f6d655f6e616d65-68656164696e6731-68656164696e6731-container" style="float: left; margin-left: 1em;">
<div class="form-row-input">
<input type="radio" name="some_name" value="option3" >Option 3
</div>
<div class="form-row-input">
<input type="radio" name="some_name" value="option4" >Option 4
</div>
</div>
</div>
</div>
</div>
<div class="form-row-input">
<input type="radio" name="some_name" value="option5" >Option 5
</div>
</div>
>>> print p.options
[{'selected': False, 'name': 'Heading 1', 'value': 'heading1', 'options': [{'selected': False, 'name': 'Option 1', 'value': 'option1', 'options': []}, {'selected': False, 'name': 'Option 2', 'value': 'option2', 'options': []}, {'selected': False, 'name': 'Heading 1', 'value': 'heading1', 'options': [{'selected': False, 'name': 'Option 3', 'value': 'option3', 'options': []}, {'selected': False, 'name': 'Option 4', 'value': 'option4', 'options': []}]}]}, {'selected': False, 'name': 'Option 5', 'value': 'option5', 'options': []}]
"""
+7 -2
View File
@@ -50,9 +50,14 @@ class ShedCounter( object ):
for repository in self.sa_session.query( self.model.Repository ):
self.repositories += 1
self.total_clones += repository.times_downloaded
if repository.deleted:
is_deleted = repository.deleted
is_new = repository.is_new
if is_deleted and is_new:
self.deleted_repositories += 1
elif repository.is_new:
self.new_repositories += 1
elif is_deleted:
self.deleted_repositories += 1
elif is_new:
self.new_repositories += 1
else:
processed_guids = []
+81 -58
View File
@@ -6,6 +6,7 @@ import logging, sys, os, time
from cgi import escape
from galaxy.util import restore_text, relpath, nice_size
from galaxy.web import url_for
from binascii import hexlify
log = logging.getLogger(__name__)
@@ -391,48 +392,66 @@ class DrillDownField( BaseField ):
>>> t = DrillDownField( "foo", multiple=True, display="checkbox", options=[{'name': 'Heading 1', 'value': 'heading1', 'options': [{'name': 'Option 1', 'value': 'option1', 'options': []}, {'name': 'Option 2', 'value': 'option2', 'options': []}, {'name': 'Heading 1', 'value': 'heading1', 'options': [{'name': 'Option 3', 'value': 'option3', 'options': []}, {'name': 'Option 4', 'value': 'option4', 'options': []}]}]}, {'name': 'Option 5', 'value': 'option5', 'options': []}] )
>>> print t.get_html()
<div><ul class="toolParameterExpandableCollapsable">
<li><span class="toolParameterExpandableCollapsable">[+]</span><input type="checkbox" name="foo" value="heading1"">Heading 1
<ul class="toolParameterExpandableCollapsable" default_state="collapsed">
<li><input type="checkbox" name="foo" value="option1"">Option 1
</li>
<li><input type="checkbox" name="foo" value="option2"">Option 2
</li>
<li><span class="toolParameterExpandableCollapsable">[+]</span><input type="checkbox" name="foo" value="heading1"">Heading 1
<ul class="toolParameterExpandableCollapsable" default_state="collapsed">
<li><input type="checkbox" name="foo" value="option3"">Option 3
</li>
<li><input type="checkbox" name="foo" value="option4"">Option 4
</li>
</ul>
</li>
</ul>
</li>
<li><input type="checkbox" name="foo" value="option5"">Option 5
</li>
</ul></div>
<div class="form-row drilldown-container" id="drilldown--666f6f">
<div class="form-row-input">
<span class="form-toggle icon-button toggle-expand" id="drilldown--666f6f-68656164696e6731-click"></span>
<input type="checkbox" name="foo" value="heading1" >Heading 1
<div class="form-row" id="drilldown--666f6f-68656164696e6731-container" style="float: left; margin-left: 1em;">
<div class="form-row-input">
<input type="checkbox" name="foo" value="option1" >Option 1
</div>
<div class="form-row-input">
<input type="checkbox" name="foo" value="option2" >Option 2
</div>
<div class="form-row-input">
<span class="form-toggle icon-button toggle-expand" id="drilldown--666f6f-68656164696e6731-68656164696e6731-click"></span>
<input type="checkbox" name="foo" value="heading1" >Heading 1
<div class="form-row" id="drilldown--666f6f-68656164696e6731-68656164696e6731-container" style="float: left; margin-left: 1em;">
<div class="form-row-input">
<input type="checkbox" name="foo" value="option3" >Option 3
</div>
<div class="form-row-input">
<input type="checkbox" name="foo" value="option4" >Option 4
</div>
</div>
</div>
</div>
</div>
<div class="form-row-input">
<input type="checkbox" name="foo" value="option5" >Option 5
</div>
</div>
>>> t = DrillDownField( "foo", multiple=False, display="radio", options=[{'name': 'Heading 1', 'value': 'heading1', 'options': [{'name': 'Option 1', 'value': 'option1', 'options': []}, {'name': 'Option 2', 'value': 'option2', 'options': []}, {'name': 'Heading 1', 'value': 'heading1', 'options': [{'name': 'Option 3', 'value': 'option3', 'options': []}, {'name': 'Option 4', 'value': 'option4', 'options': []}]}]}, {'name': 'Option 5', 'value': 'option5', 'options': []}] )
>>> print t.get_html()
<div><ul class="toolParameterExpandableCollapsable">
<li><span class="toolParameterExpandableCollapsable">[+]</span><input type="radio" name="foo" value="heading1"">Heading 1
<ul class="toolParameterExpandableCollapsable" default_state="collapsed">
<li><input type="radio" name="foo" value="option1"">Option 1
</li>
<li><input type="radio" name="foo" value="option2"">Option 2
</li>
<li><span class="toolParameterExpandableCollapsable">[+]</span><input type="radio" name="foo" value="heading1"">Heading 1
<ul class="toolParameterExpandableCollapsable" default_state="collapsed">
<li><input type="radio" name="foo" value="option3"">Option 3
</li>
<li><input type="radio" name="foo" value="option4"">Option 4
</li>
</ul>
</li>
</ul>
</li>
<li><input type="radio" name="foo" value="option5"">Option 5
</li>
</ul></div>
<div class="form-row drilldown-container" id="drilldown--666f6f">
<div class="form-row-input">
<span class="form-toggle icon-button toggle-expand" id="drilldown--666f6f-68656164696e6731-click"></span>
<input type="radio" name="foo" value="heading1" >Heading 1
<div class="form-row" id="drilldown--666f6f-68656164696e6731-container" style="float: left; margin-left: 1em;">
<div class="form-row-input">
<input type="radio" name="foo" value="option1" >Option 1
</div>
<div class="form-row-input">
<input type="radio" name="foo" value="option2" >Option 2
</div>
<div class="form-row-input">
<span class="form-toggle icon-button toggle-expand" id="drilldown--666f6f-68656164696e6731-68656164696e6731-click"></span>
<input type="radio" name="foo" value="heading1" >Heading 1
<div class="form-row" id="drilldown--666f6f-68656164696e6731-68656164696e6731-container" style="float: left; margin-left: 1em;">
<div class="form-row-input">
<input type="radio" name="foo" value="option3" >Option 3
</div>
<div class="form-row-input">
<input type="radio" name="foo" value="option4" >Option 4
</div>
</div>
</div>
</div>
</div>
<div class="form-row-input">
<input type="radio" name="foo" value="option5" >Option 5
</div>
</div>
"""
def __init__( self, name, multiple=None, display=None, refresh_on_change=False, options = [], value = [], refresh_on_change_values = [] ):
self.name = name
@@ -466,30 +485,34 @@ class DrillDownField( BaseField ):
if option['options']:
new_parents = list( parent_options ) + [ option['value'] ]
find_expanded_options( expanded_options, option['options'], new_parents )
def recurse_options( html, options, expanded_options = [] ):
def recurse_options( html, options, base_id, expanded_options = [] ):
for option in options:
escaped_option_value = escape( str( option['value'] ), quote=True )
selected = ( option['value'] in self.value )
if selected: selected = ' checked'
else: selected = ''
if option['options']:
default_state = 'collapsed'
default_icon = '[+]'
if option['value'] in expanded_options:
default_state = 'expanded'
default_icon = '[-]'
html.append( '<li><span class="toolParameterExpandableCollapsable">%s</span><input type="%s" name="%s%s" value="%s"%s">%s' % ( default_icon, self.display, prefix, self.name, escape(str(option['value']), quote=True), selected, option['name']) )
html.append( '<ul class="toolParameterExpandableCollapsable" default_state="%s">' % default_state )
recurse_options( html, option['options'], expanded_options )
html.append( '</ul>')
if selected:
selected = ' checked'
else:
html.append( '<li><input type="%s" name="%s%s" value="%s"%s">%s' % ( self.display, prefix, self.name, escape(str(option['value']), quote=True), selected, option['name']) )
html.append( '</li>' )
selected = ''
span_class = 'form-toggle icon-button toggle'
if option['value'] not in expanded_options:
span_class = "%s-expand" % ( span_class )
html.append( '<div class="form-row-input">')
drilldown_group_id = "%s-%s" % ( base_id, hexlify( option['value'] ) )
if option['options']:
html.append( '<span class="%s" id="%s-click"></span>' % ( span_class, drilldown_group_id ) )
html.append( '<input type="%s" name="%s%s" value="%s" %s>%s' % ( self.display, prefix, self.name, escaped_option_value, selected, option['name']) )
if option['options']:
html.append( '<div class="form-row" id="%s-container" style="float: left; margin-left: 1em;">' % ( drilldown_group_id ) )
recurse_options( html, option['options'], drilldown_group_id, expanded_options )
html.append( '</div>')
html.append( '</div>')
drilldown_id = "drilldown-%s-%s" % ( hexlify( prefix ), hexlify( self.name ) )
rval = []
rval.append( '<div><ul class="toolParameterExpandableCollapsable">' )
rval.append( '<div class="form-row drilldown-container" id="%s">' % ( drilldown_id ) )
expanded_options = []
find_expanded_options( expanded_options, self.options )
recurse_options( rval, self.options, expanded_options )
rval.append( '</ul></div>' )
recurse_options( rval, self.options, drilldown_id, expanded_options )
rval.append( '</div>' )
return '\n'.join( rval )
class AddressField(BaseField):
@@ -461,21 +461,25 @@ class AdminController( BaseUIController, Admin ):
params = util.Params( kwd )
message = util.restore_text( params.get( 'message', '' ) )
status = params.get( 'status', 'done' )
count = 0
for repository in trans.sa_session.query( trans.model.Repository ) \
.filter( trans.model.Repository.table.c.deleted == False ):
try:
reset_all_repository_metadata( trans, trans.security.encode_id( repository.id ) )
log.debug( "Reset metadata on repository %s" % repository.name )
count += 1
except Exception, e:
log.debug( "Error attempting to reset metadata on repository %s: %s" % ( repository.name, str( e ) ) )
message = "Reset metadata on %d repositories" % count
trans.response.send_redirect( web.url_for( controller='admin',
action='browse_repository_metadata',
webapp='community',
message=util.sanitize_text( message ),
status=status ) )
if 'reset_all_repository_metadata_button' in kwd:
count = 0
for repository in trans.sa_session.query( trans.model.Repository ) \
.filter( trans.model.Repository.table.c.deleted == False ):
try:
reset_all_repository_metadata( trans, trans.security.encode_id( repository.id ) )
log.debug( "Reset metadata on repository %s" % repository.name )
count += 1
except Exception, e:
log.debug( "Error attempting to reset metadata on repository %s: %s" % ( repository.name, str( e ) ) )
message = "Reset metadata on %d repositories" % count
trans.response.send_redirect( web.url_for( controller='admin',
action='browse_repository_metadata',
webapp='community',
message=util.sanitize_text( message ),
status=status ) )
return trans.fill_template( '/webapps/community/admin/reset_all_repository_metadata.mako',
message=message,
status=status )
@web.expose
@web.require_admin
def browse_repositories( self, trans, **kwd ):
@@ -549,12 +553,15 @@ class AdminController( BaseUIController, Admin ):
@web.expose
@web.require_admin
def regenerate_statistics( self, trans, **kwd ):
params = util.Params( kwd )
message = util.restore_text( params.get( 'message', '' ) )
status = params.get( 'status', 'done' )
if 'regenerate_statistics_button' in kwd:
trans.app.shed_counter.generate_statistics()
message = "Successfully regenerated statistics"
message = "Successfully regenerated statistics"
return trans.fill_template( '/webapps/community/admin/statistics.mako',
message=message,
status='done' )
status=status )
@web.expose
@web.require_admin
def delete_repository( self, trans, **kwd ):
@@ -427,8 +427,13 @@ def generate_metadata_for_changeset_revision( trans, id, ctx, changeset_revision
metadata_dict = generate_workflow_metadata( '', exported_workflow_dict, metadata_dict )
except Exception, e:
invalid_files.append( ( name, str( e ) ) )
"""
FIXME: Handling invalid tools in change sets that are not the repository tip are a bit complex, so this is currently not
supported. One example is the Emboss tools that have a <code file> tag set, which requires the file to exist in a location
that can be found.
if invalid_tool_configs:
metadata_dict[ 'invalid_tools' ] = invalid_tool_configs
"""
return metadata_dict, invalid_files
def set_repository_metadata( trans, id, changeset_revision, content_alert_str='', **kwd ):
"""Set repository metadata"""
@@ -400,6 +400,40 @@ class RepositoryController( BaseUIController, ItemRatings ):
# Render the list view
return self.valid_repository_list_grid( trans, **kwd )
@web.expose
def browse_invalid_tools( self, trans, **kwd ):
params = util.Params( kwd )
message = util.restore_text( params.get( 'message', '' ) )
status = params.get( 'status', 'done' )
webapp = params.get( 'webapp', 'community' )
cntrller = params.get( 'cntrller', 'repository' )
is_admin = trans.user_is_admin()
invalid_tools_dict = odict()
if is_admin and cntrller == 'admin':
for repository in trans.sa_session.query( trans.model.Repository ) \
.filter( trans.model.Repository.table.c.deleted == False ) \
.order_by( trans.model.Repository.table.c.name ):
for downloadable_revision in repository.downloadable_revisions:
metadata = downloadable_revision.metadata
invalid_tools = metadata.get( 'invalid_tools', [] )
for invalid_tool_config in invalid_tools:
invalid_tools_dict[ invalid_tool_config ] = ( repository.id, repository.name, downloadable_revision.changeset_revision )
else:
for repository in trans.sa_session.query( trans.model.Repository ) \
.filter( and_( trans.model.Repository.table.c.deleted == False,
trans.model.Repository.table.c.user_id == trans.user.id ) ) \
.order_by( trans.model.Repository.table.c.name ):
for downloadable_revision in repository.downloadable_revisions:
metadata = downloadable_revision.metadata
invalid_tools = metadata.get( 'invalid_tools', [] )
for invalid_tool_config in invalid_tools:
invalid_tools_dict[ invalid_tool_config ] = ( repository.id, repository.name, downloadable_revision.changeset_revision )
return trans.fill_template( '/webapps/community/repository/browse_invalid_tools.mako',
cntrller=cntrller,
invalid_tools_dict=invalid_tools_dict,
webapp=webapp,
message=message,
status=status )
@web.expose
def find_workflows( self, trans, **kwd ):
params = util.Params( kwd )
message = util.restore_text( params.get( 'message', '' ) )
@@ -1834,6 +1868,7 @@ class RepositoryController( BaseUIController, ItemRatings ):
break
if found:
break
metadata_dict, invalid_files = generate_metadata_for_repository_tip( trans, repository_id, ctx, changeset_revision, repo_dir )
else:
for filename in ctx:
if filename == tool_config:
@@ -1846,7 +1881,7 @@ class RepositoryController( BaseUIController, ItemRatings ):
fh.write( fctx.data() )
fh.close()
break
metadata_dict, invalid_files = generate_metadata_for_repository_tip( trans, repository_id, ctx, changeset_revision, repo_dir )
metadata_dict, invalid_files = generate_metadata_for_changeset_revision( trans, repository_id, ctx, changeset_revision, repo_dir )
for invalid_file_tup in invalid_files:
invalid_tool_config, invalid_msg = invalid_file_tup
if tool_config == invalid_tool_config:
+22 -16
View File
@@ -32,23 +32,29 @@
});
// For drilldown parameters: add expand/collapse buttons and collapse initially-collapsed elements
$( 'li ul.toolParameterExpandableCollapsable' ).each( function() {
var el = $(this),
parent_li = el.parent('li'),
sub_ul = el.remove();
parent_li.find( 'span' ).wrapInner( '<a/>' ).find( 'a' ).click( function() {
sub_ul.toggle();
$(this).html( sub_ul.is(":hidden") ? '[+]' : '[-]' );
$( 'div.drilldown-container' ).each( function() {
$(this).find('span.form-toggle' ).each( function() {
var show_hide_click_elt = $(this);
var group_id = show_hide_click_elt.attr('id').substring( 0, show_hide_click_elt.attr('id').lastIndexOf( '-click' ) );
$('#' + group_id + '-container').each( function() {
var show_hide_elt = $(this);
if ( show_hide_click_elt.hasClass( 'toggle-expand' ) ) {
show_hide_elt.hide();
}
show_hide_click_elt.click( function() {
if ( show_hide_click_elt.hasClass("toggle") ){
show_hide_click_elt.addClass("toggle-expand");
show_hide_click_elt.removeClass("toggle");
show_hide_elt.slideUp( 'fast' );
}
else {
show_hide_click_elt.addClass("toggle");
show_hide_click_elt.removeClass("toggle-expand");
show_hide_elt.slideDown( 'fast' );
}
});
});
});
parent_li.append( sub_ul );
});
$( 'ul ul.toolParameterExpandableCollapsable' ).each( function(i) {
var el = $(this);
if (el.attr("default_state") === "collapsed") {
el.hide();
}
});
function checkUncheckAll( name, check ) {
@@ -60,6 +60,9 @@
<div class="toolTitle">
<a target="galaxy_main" href="${h.url_for( controller='admin', action='browse_repository_metadata', webapp='community' )}">Browse metadata</a>
</div>
<div class="toolTitle">
<a target="galaxy_main" href="${h.url_for( controller='repository', action='browse_invalid_tools', cntrller='admin', webapp='community' )}">Browse invalid tools</a>
</div>
</div>
</div>
<div class="toolSectionTitle">
@@ -0,0 +1,19 @@
<%inherit file="/base.mako"/>
<%namespace file="/message.mako" import="render_msg" />
%if message:
${render_msg( message, status )}
%endif
<div class="toolForm">
<div class="toolFormTitle">Reset metadata on each change set of the repositories in this tool shed</div>
<form name="reset_all_repository_metadata" id="reset_all_repository_metadata" action="${h.url_for( controller='admin', action='reset_all_repository_metadata' )}" method="post" >
<div class="form-row">
Click the button below to reset metadata on each change set of the repositories in this tool shed.
</div>
<div class="form-row">
<input type="submit" name="reset_all_repository_metadata_button" value="Reset all repository metadata"/>
</div>
</form>
</div>
</div>
@@ -19,7 +19,7 @@
<td>${trans.app.shed_counter.repositories}</td>
</tr>
<tr>
<td>New repositories</td>
<td>Empty repositories</td>
<td>${trans.app.shed_counter.new_repositories}</td>
</tr>
<tr>
+3 -3
View File
@@ -117,12 +117,12 @@
</div>
## Logo, layered over tabs to be clickable
<div class="title" style="position: absolute; top: 0; left: 0; white-space: nowrap;">
<div class="title">
<a href="${app.config.get( 'logo_url', '/' )}">
<img border="0" src="${h.url_for('/static/images/galaxyIcon_noText.png')}" style="display: inline; width: 26px; vertical-align: top;">
<img border="0" src="${h.url_for('/static/images/galaxyIcon_noText.png')}">
Galaxy Tool Shed
%if app.config.brand:
<span class='brand'>/ ${app.config.brand}</span>
<span>/ ${app.config.brand}</span>
%endif
</a>
</div>
+3
View File
@@ -71,6 +71,9 @@
<div class="toolTitle">
<a target="galaxy_main" href="${h.url_for( controller='repository', action='browse_repositories', operation='my_repositories', webapp='community' )}">Browse my repositories</a>
</div>
<div class="toolTitle">
<a target="galaxy_main" href="${h.url_for( controller='repository', action='browse_invalid_tools', cntrller='repository', webapp='community' )}">Browse my invalid tools</a>
</div>
%endif
</div>
</div>
@@ -0,0 +1,42 @@
<%inherit file="/base.mako"/>
<%namespace file="/message.mako" import="render_msg" />
%if message:
${render_msg( message, status )}
%endif
<div class="toolForm">
%if invalid_tools_dict:
<div class="toolFormTitle">Invalid tools<i> - click the tool config file name to see why the tool is invalid</i></div>
<div class="form-row">
<table class="grid">
<tr>
<th>Tool config</th>
<th>Repository name</th>
<th>Changeset revision</th>
</tr>
%for invalid_tool_config, repository_tup in invalid_tools_dict.items():
<% repository_id, repository_name, changeset_revision = repository_tup %>
<tr>
<td>
<a class="view-info" href="${h.url_for( controller='repository', action='load_invalid_tool', repository_id=trans.security.encode_id( repository_id ), tool_config=invalid_tool_config, changeset_revision=changeset_revision, webapp=webapp )}">
${invalid_tool_config}
</a>
</td>
<td>${repository_name}</td>
<td>${changeset_revision}</td>
</tr>
%endfor
</table>
</div>
</div>
%else:
<div class="form-row">
%if cntrller == 'admin' and trans.user_is_admin():
No repositories in this tool shed contain invalid tools.
%else:
None of your repositories contain invalid tools.
%endif
</div>
%endif
</div>
-1
View File
@@ -4,7 +4,6 @@
<!-- Dan Blankenberg -->
<command>java -XX:DefaultMaxRAMFraction=1 -XX:+UseParallelGC
-jar "${GALAXY_DATA_INDEX_DIR}/shared/jars/picard/FastqToSam.jar"
--tmpdir "${__new_file_path__}"
FASTQ="${input_fastq1}"
#if str( $input_fastq2) != "None":
FASTQ2="${input_fastq2}"