mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Merge
This commit is contained in:
@@ -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': []}]
|
||||
"""
|
||||
|
||||
@@ -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 = []
|
||||
|
||||
@@ -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
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
@@ -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}"
|
||||
|
||||
Reference in New Issue
Block a user