mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Add the ability to browse invalid tools in the tool shed - current user is restricted to seeing only their invalid tools if not an admin. Also a bit of cleanup in tool shed statistics.
This commit is contained in:
@@ -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 = []
|
||||
|
||||
@@ -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 ):
|
||||
|
||||
@@ -400,6 +400,38 @@ 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' )
|
||||
is_admin = trans.user_is_admin()
|
||||
invalid_tools_dict = odict()
|
||||
if is_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',
|
||||
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', '' ) )
|
||||
|
||||
@@ -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', 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>
|
||||
|
||||
@@ -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', webapp='community' )}">Browse my invalid tools</a>
|
||||
</div>
|
||||
%endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
<%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">
|
||||
You do not own any repositories that contain invalid tools.
|
||||
</div>
|
||||
%endif
|
||||
</div>
|
||||
Reference in New Issue
Block a user