mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Include the changeset revision date whenever displaying the changeset revision for a repository in the tool shed per request by Ross Lazarus.
This commit is contained in:
@@ -2432,6 +2432,7 @@ class RepositoryController( BaseUIController, ratings_util.ItemRatings ):
|
||||
message='Select a repository to rate',
|
||||
status='error' ) )
|
||||
repository = suc.get_repository_in_tool_shed( trans, id )
|
||||
changeset_revision = repository.tip( trans.app )
|
||||
repo = hg.repository( suc.get_configured_ui(), repository.repo_path( trans.app ) )
|
||||
if repository.user == trans.user:
|
||||
return trans.response.send_redirect( web.url_for( controller='repository',
|
||||
@@ -2447,12 +2448,14 @@ class RepositoryController( BaseUIController, ratings_util.ItemRatings ):
|
||||
rra = self.get_user_item_rating( trans.sa_session, trans.user, repository, webapp_model=trans.model )
|
||||
metadata = metadata_util.get_repository_metadata_by_repository_id_changeset_revision( trans,
|
||||
id,
|
||||
repository.tip( trans.app ),
|
||||
changeset_revision,
|
||||
metadata_only=True )
|
||||
repository_type_select_field = rt_util.build_repository_type_select_field( trans, repository=repository )
|
||||
revision_label = suc.get_revision_label( trans, repository, changeset_revision )
|
||||
return trans.fill_template( '/webapps/tool_shed/repository/rate_repository.mako',
|
||||
repository=repository,
|
||||
metadata=metadata,
|
||||
revision_label=revision_label,
|
||||
avg_rating=avg_rating,
|
||||
display_reviews=display_reviews,
|
||||
num_ratings=num_ratings,
|
||||
@@ -2862,13 +2865,10 @@ class RepositoryController( BaseUIController, ratings_util.ItemRatings ):
|
||||
has_metadata = True
|
||||
else:
|
||||
has_metadata = False
|
||||
t, tz = ctx.date()
|
||||
date = datetime( *gmtime( float( t ) - tz )[:6] )
|
||||
display_date = date.strftime( "%Y-%m-%d" )
|
||||
change_dict = { 'ctx' : ctx,
|
||||
'rev' : str( ctx.rev() ),
|
||||
'date' : date,
|
||||
'display_date' : display_date,
|
||||
'display_date' : suc.get_readable_ctx_date( ctx ),
|
||||
'description' : ctx.description(),
|
||||
'files' : ctx.files(),
|
||||
'user' : ctx.user(),
|
||||
@@ -2923,16 +2923,18 @@ class RepositoryController( BaseUIController, ratings_util.ItemRatings ):
|
||||
metadata = metadata_util.get_repository_metadata_by_repository_id_changeset_revision( trans, id, ctx_str, metadata_only=True )
|
||||
# For rendering the prev button.
|
||||
if ctx_parent:
|
||||
ctx_parent_date = suc.get_readable_ctx_date( ctx_parent )
|
||||
ctx_parent_rev = ctx_parent.rev()
|
||||
if ctx_parent_rev < 0:
|
||||
prev = None
|
||||
else:
|
||||
prev = "%s:%s" % ( ctx_parent_rev, ctx_parent )
|
||||
prev = "<b>%s:%s</b> <i>(%s)</i>" % ( ctx_parent_rev, ctx_parent, ctx_parent_date )
|
||||
else:
|
||||
prev = None
|
||||
if ctx_child:
|
||||
ctx_child_date = suc.get_readable_ctx_date( ctx_child )
|
||||
ctx_child_rev = ctx_child.rev()
|
||||
next = "%s:%s" % ( ctx_child_rev, ctx_child )
|
||||
next = "<b>%s:%s</b> <i>(%s)</i>" % ( ctx_child_rev, ctx_child, ctx_child_date )
|
||||
else:
|
||||
next = None
|
||||
return trans.fill_template( '/webapps/tool_shed/repository/view_changeset.mako',
|
||||
|
||||
@@ -19,48 +19,72 @@ log = logging.getLogger( __name__ )
|
||||
|
||||
|
||||
class UserGrid( grids.Grid ):
|
||||
# TODO: move this to an admin_common controller since it is virtually the same in the galaxy webapp.
|
||||
|
||||
|
||||
class UserLoginColumn( grids.TextColumn ):
|
||||
|
||||
def get_value( self, trans, grid, user ):
|
||||
return user.email
|
||||
|
||||
|
||||
class UserNameColumn( grids.TextColumn ):
|
||||
|
||||
def get_value( self, trans, grid, user ):
|
||||
if user.username:
|
||||
return user.username
|
||||
return 'not set'
|
||||
|
||||
|
||||
class GroupsColumn( grids.GridColumn ):
|
||||
|
||||
def get_value( self, trans, grid, user ):
|
||||
if user.groups:
|
||||
return len( user.groups )
|
||||
return 0
|
||||
|
||||
|
||||
class RolesColumn( grids.GridColumn ):
|
||||
|
||||
def get_value( self, trans, grid, user ):
|
||||
if user.roles:
|
||||
return len( user.roles )
|
||||
return 0
|
||||
|
||||
|
||||
class ExternalColumn( grids.GridColumn ):
|
||||
|
||||
def get_value( self, trans, grid, user ):
|
||||
if user.external:
|
||||
return 'yes'
|
||||
return 'no'
|
||||
|
||||
|
||||
class LastLoginColumn( grids.GridColumn ):
|
||||
|
||||
def get_value( self, trans, grid, user ):
|
||||
if user.galaxy_sessions:
|
||||
return self.format( user.galaxy_sessions[ 0 ].update_time )
|
||||
return 'never'
|
||||
|
||||
|
||||
class StatusColumn( grids.GridColumn ):
|
||||
|
||||
def get_value( self, trans, grid, user ):
|
||||
if user.purged:
|
||||
return "purged"
|
||||
elif user.deleted:
|
||||
return "deleted"
|
||||
return ""
|
||||
|
||||
|
||||
class EmailColumn( grids.GridColumn ):
|
||||
|
||||
def filter( self, trans, user, query, column_filter ):
|
||||
if column_filter == 'All':
|
||||
return query
|
||||
return query.filter( and_( model.Tool.table.c.user_id == model.User.table.c.id,
|
||||
model.User.table.c.email == column_filter ) )
|
||||
|
||||
title = "Users"
|
||||
model_class = model.User
|
||||
template='/admin/user/grid.mako'
|
||||
@@ -114,37 +138,56 @@ class UserGrid( grids.Grid ):
|
||||
num_rows_per_page = 50
|
||||
preserve_state = False
|
||||
use_paging = True
|
||||
|
||||
def get_current_item( self, trans, **kwargs ):
|
||||
return trans.user
|
||||
|
||||
|
||||
class RoleGrid( grids.Grid ):
|
||||
# TODO: move this to an admin_common controller since it is virtually the same in the galaxy webapp.
|
||||
|
||||
|
||||
class NameColumn( grids.TextColumn ):
|
||||
|
||||
def get_value( self, trans, grid, role ):
|
||||
return role.name
|
||||
|
||||
|
||||
class DescriptionColumn( grids.TextColumn ):
|
||||
|
||||
def get_value( self, trans, grid, role ):
|
||||
if role.description:
|
||||
return role.description
|
||||
return ''
|
||||
|
||||
|
||||
class TypeColumn( grids.TextColumn ):
|
||||
def get_value( self, trans, grid, role ):
|
||||
return role.type
|
||||
|
||||
|
||||
class StatusColumn( grids.GridColumn ):
|
||||
|
||||
def get_value( self, trans, grid, role ):
|
||||
if role.deleted:
|
||||
return "deleted"
|
||||
return ""
|
||||
|
||||
|
||||
class GroupsColumn( grids.GridColumn ):
|
||||
|
||||
def get_value( self, trans, grid, role ):
|
||||
if role.groups:
|
||||
return len( role.groups )
|
||||
return 0
|
||||
|
||||
|
||||
class UsersColumn( grids.GridColumn ):
|
||||
|
||||
def get_value( self, trans, grid, role ):
|
||||
if role.users:
|
||||
return len( role.users )
|
||||
return 0
|
||||
|
||||
title = "Roles"
|
||||
model_class = model.Role
|
||||
template='/admin/dataset_security/role/grid.mako'
|
||||
@@ -205,29 +248,43 @@ class RoleGrid( grids.Grid ):
|
||||
num_rows_per_page = 50
|
||||
preserve_state = False
|
||||
use_paging = True
|
||||
|
||||
def apply_query_filter( self, trans, query, **kwd ):
|
||||
return query.filter( model.Role.type != model.Role.types.PRIVATE )
|
||||
|
||||
|
||||
class GroupGrid( grids.Grid ):
|
||||
# TODO: move this to an admin_common controller since it is virtually the same in the galaxy webapp.
|
||||
|
||||
|
||||
class NameColumn( grids.TextColumn ):
|
||||
|
||||
def get_value( self, trans, grid, group ):
|
||||
return group.name
|
||||
|
||||
|
||||
class StatusColumn( grids.GridColumn ):
|
||||
|
||||
def get_value( self, trans, grid, group ):
|
||||
if group.deleted:
|
||||
return "deleted"
|
||||
return ""
|
||||
|
||||
|
||||
class RolesColumn( grids.GridColumn ):
|
||||
|
||||
def get_value( self, trans, grid, group ):
|
||||
if group.roles:
|
||||
return len( group.roles )
|
||||
return 0
|
||||
|
||||
|
||||
class UsersColumn( grids.GridColumn ):
|
||||
|
||||
def get_value( self, trans, grid, group ):
|
||||
if group.members:
|
||||
return len( group.members )
|
||||
return 0
|
||||
|
||||
title = "Groups"
|
||||
model_class = model.Group
|
||||
template='/admin/dataset_security/group/grid.mako'
|
||||
@@ -279,6 +336,7 @@ class GroupGrid( grids.Grid ):
|
||||
preserve_state = False
|
||||
use_paging = True
|
||||
|
||||
|
||||
class ManageCategoryGrid( CategoryGrid ):
|
||||
columns = [ col for col in CategoryGrid.columns ]
|
||||
# Override the NameColumn to include an Edit link
|
||||
@@ -292,12 +350,17 @@ class ManageCategoryGrid( CategoryGrid ):
|
||||
dict( controller='admin', action='manage_categories', operation='create' ) )
|
||||
]
|
||||
|
||||
|
||||
class AdminRepositoryGrid( RepositoryGrid ):
|
||||
|
||||
|
||||
class DeletedColumn( grids.BooleanColumn ):
|
||||
|
||||
def get_value( self, trans, grid, repository ):
|
||||
if repository.deleted:
|
||||
return 'yes'
|
||||
return ''
|
||||
|
||||
columns = [ RepositoryGrid.NameColumn( "Name",
|
||||
key="name",
|
||||
link=( lambda item: dict( operation="view_or_manage_repository", id=item.id ) ),
|
||||
@@ -326,27 +389,43 @@ class AdminRepositoryGrid( RepositoryGrid ):
|
||||
async_compatible=False ) )
|
||||
standard_filters = []
|
||||
default_filter = {}
|
||||
|
||||
def build_initial_query( self, trans, **kwd ):
|
||||
return trans.sa_session.query( model.Repository ) \
|
||||
.join( model.User.table )
|
||||
|
||||
|
||||
class RepositoryMetadataGrid( grids.Grid ):
|
||||
|
||||
|
||||
class IdColumn( grids.IntegerColumn ):
|
||||
|
||||
def get_value( self, trans, grid, repository_metadata ):
|
||||
return repository_metadata.id
|
||||
|
||||
|
||||
class NameColumn( grids.TextColumn ):
|
||||
|
||||
def get_value( self, trans, grid, repository_metadata ):
|
||||
return repository_metadata.repository.name
|
||||
|
||||
|
||||
class OwnerColumn( grids.TextColumn ):
|
||||
|
||||
def get_value( self, trans, grid, repository_metadata ):
|
||||
return repository_metadata.repository.user.username
|
||||
|
||||
class RevisionColumn( grids.TextColumn ):
|
||||
|
||||
def get_value( self, trans, grid, repository_metadata ):
|
||||
repository = repository_metadata.repository
|
||||
repo = hg.repository( suc.get_configured_ui(), repository.repo_path( trans.app ) )
|
||||
ctx = suc.get_changectx_for_changeset( repo, repository_metadata.changeset_revision )
|
||||
return "%s:%s" % ( str( ctx.rev() ), repository_metadata.changeset_revision )
|
||||
return suc.get_revision_label( trans, repository, repository_metadata.changeset_revision )
|
||||
|
||||
|
||||
class ToolsColumn( grids.TextColumn ):
|
||||
|
||||
def get_value( self, trans, grid, repository_metadata ):
|
||||
tools_str = '0'
|
||||
if repository_metadata:
|
||||
@@ -358,7 +437,10 @@ class RepositoryMetadataGrid( grids.Grid ):
|
||||
# tools_str += '%s <b>%s</b><br/>' % ( tool_metadata_dict[ 'id' ], tool_metadata_dict[ 'version' ] )
|
||||
return '%d' % len( metadata[ 'tools' ] )
|
||||
return tools_str
|
||||
|
||||
|
||||
class DatatypesColumn( grids.TextColumn ):
|
||||
|
||||
def get_value( self, trans, grid, repository_metadata ):
|
||||
datatypes_str = '0'
|
||||
if repository_metadata:
|
||||
@@ -370,7 +452,10 @@ class RepositoryMetadataGrid( grids.Grid ):
|
||||
# datatypes_str += '%s<br/>' % datatype_metadata_dict[ 'extension' ]
|
||||
return '%d' % len( metadata[ 'datatypes' ] )
|
||||
return datatypes_str
|
||||
|
||||
|
||||
class WorkflowsColumn( grids.TextColumn ):
|
||||
|
||||
def get_value( self, trans, grid, repository_metadata ):
|
||||
workflows_str = '0'
|
||||
if repository_metadata:
|
||||
@@ -387,21 +472,31 @@ class RepositoryMetadataGrid( grids.Grid ):
|
||||
# workflows_str += '%s<br/>' % workflow_metadata_dict[ 'name' ]
|
||||
return '%d' % len( metadata[ 'workflows' ] )
|
||||
return workflows_str
|
||||
|
||||
|
||||
class DeletedColumn( grids.BooleanColumn ):
|
||||
|
||||
def get_value( self, trans, grid, repository_metadata ):
|
||||
if repository_metadata.repository.deleted:
|
||||
return 'yes'
|
||||
return ''
|
||||
|
||||
|
||||
class DeprecatedColumn( grids.BooleanColumn ):
|
||||
|
||||
def get_value( self, trans, grid, repository_metadata ):
|
||||
if repository_metadata.repository.deprecated:
|
||||
return 'yes'
|
||||
return ''
|
||||
|
||||
|
||||
class MaliciousColumn( grids.BooleanColumn ):
|
||||
|
||||
def get_value( self, trans, grid, repository_metadata ):
|
||||
if repository_metadata.malicious:
|
||||
return 'yes'
|
||||
return ''
|
||||
|
||||
# Grid definition
|
||||
title = "Repository Metadata"
|
||||
model_class = model.RepositoryMetadata
|
||||
@@ -440,6 +535,7 @@ class RepositoryMetadataGrid( grids.Grid ):
|
||||
num_rows_per_page = 50
|
||||
preserve_state = False
|
||||
use_paging = True
|
||||
|
||||
def build_initial_query( self, trans, **kwd ):
|
||||
return trans.sa_session.query( model.RepositoryMetadata ) \
|
||||
.join( model.Repository.table )
|
||||
|
||||
@@ -101,6 +101,10 @@ class RepositoryGrid( grids.Grid ):
|
||||
if len( select_field.options ) > 1:
|
||||
return select_field.get_html()
|
||||
elif len( select_field.options ) == 1:
|
||||
option_items = select_field.options[ 0 ][ 0 ]
|
||||
rev_label, rev_date = option_items.split( ' ' )
|
||||
rev_date = '<i><font color="#666666">%s</font></i>' % rev_date
|
||||
return '%s %s' % ( rev_label, rev_date )
|
||||
return select_field.options[ 0 ][ 0 ]
|
||||
return ''
|
||||
|
||||
@@ -1134,7 +1138,7 @@ class RepositoryMetadataGrid( grids.Grid ):
|
||||
repository = repository_metadata.repository
|
||||
changeset_revision = repository_metadata.changeset_revision
|
||||
changeset_revision_label = suc.get_revision_label( trans, repository, changeset_revision )
|
||||
return escape_html( changeset_revision_label )
|
||||
return changeset_revision_label
|
||||
|
||||
|
||||
class MaliciousColumn( grids.BooleanColumn ):
|
||||
|
||||
@@ -83,9 +83,10 @@ class RepositoriesWithReviewsGrid( RepositoryGrid ):
|
||||
if repository_metadata_revisions:
|
||||
rval = ''
|
||||
for repository_metadata in repository_metadata_revisions:
|
||||
rev, label, changeset_revision = metadata_util.get_rev_label_changeset_revision_from_repository_metadata( trans,
|
||||
repository_metadata,
|
||||
repository=repository )
|
||||
rev, label, changeset_revision = \
|
||||
metadata_util.get_rev_label_changeset_revision_from_repository_metadata( trans,
|
||||
repository_metadata,
|
||||
repository=repository )
|
||||
rval += '<a href="manage_repository_reviews_of_revision?id=%s&changeset_revision=%s">%s</a><br/>' % \
|
||||
( trans.security.encode_id( repository.id ), changeset_revision, label )
|
||||
return rval
|
||||
|
||||
@@ -16,7 +16,8 @@ def build_approved_select_field( trans, name, selected_value=None, for_component
|
||||
select_field.add_option( option_tup[ 0 ], option_tup[ 1 ], selected=selected )
|
||||
return select_field
|
||||
|
||||
def build_changeset_revision_select_field( trans, repository, selected_value=None, add_id_to_name=True, downloadable=False, reviewed=False, not_reviewed=False ):
|
||||
def build_changeset_revision_select_field( trans, repository, selected_value=None, add_id_to_name=True,
|
||||
downloadable=False, reviewed=False, not_reviewed=False ):
|
||||
"""Build a SelectField whose options are the changeset_rev strings of certain revisions of the received repository."""
|
||||
options = []
|
||||
changeset_tups = []
|
||||
@@ -46,7 +47,10 @@ def build_changeset_revision_select_field( trans, repository, selected_value=Non
|
||||
# Restrict the options to all revisions that have associated metadata.
|
||||
repository_metadata_revisions = repository.metadata_revisions
|
||||
for repository_metadata in repository_metadata_revisions:
|
||||
rev, label, changeset_revision = metadata_util.get_rev_label_changeset_revision_from_repository_metadata( trans, repository_metadata, repository=repository )
|
||||
rev, label, changeset_revision = \
|
||||
metadata_util.get_rev_label_changeset_revision_from_repository_metadata( trans,
|
||||
repository_metadata,
|
||||
repository=repository )
|
||||
changeset_tups.append( ( rev, label, changeset_revision ) )
|
||||
refresh_on_change_values.append( changeset_revision )
|
||||
# Sort options by the revision label. Even though the downloadable_revisions query sorts by update_time,
|
||||
|
||||
@@ -1108,16 +1108,19 @@ def get_rev_label_changeset_revision_from_repository_metadata( trans, repository
|
||||
changeset_revision = repository_metadata.changeset_revision
|
||||
ctx = suc.get_changectx_for_changeset( repo, changeset_revision )
|
||||
if ctx:
|
||||
changeset_revision_date = suc.get_readable_ctx_date( ctx )
|
||||
rev = '%04d' % ctx.rev()
|
||||
label = "%s:%s" % ( str( ctx.rev() ), changeset_revision )
|
||||
label = "%s:%s (%s)" % ( str( ctx.rev() ), changeset_revision, changeset_revision_date )
|
||||
else:
|
||||
rev = '-1'
|
||||
label = "-1:%s" % changeset_revision
|
||||
return rev, label, changeset_revision
|
||||
|
||||
def get_sample_files_from_disk( repository_files_dir, tool_path=None, relative_install_dir=None, resetting_all_metadata_on_repository=False ):
|
||||
def get_sample_files_from_disk( repository_files_dir, tool_path=None, relative_install_dir=None,
|
||||
resetting_all_metadata_on_repository=False ):
|
||||
if resetting_all_metadata_on_repository:
|
||||
# Keep track of the location where the repository is temporarily cloned so that we can strip it when setting metadata.
|
||||
# Keep track of the location where the repository is temporarily cloned so that we can strip
|
||||
# it when setting metadata.
|
||||
work_dir = repository_files_dir
|
||||
sample_file_metadata_paths = []
|
||||
sample_file_copy_paths = []
|
||||
|
||||
@@ -924,6 +924,13 @@ def get_query_for_setting_metadata_on_repositories( trans, my_writable=False, or
|
||||
return trans.install_model.context.query( trans.install_model.ToolShedRepository ) \
|
||||
.filter( trans.install_model.ToolShedRepository.table.c.uninstalled == False )
|
||||
|
||||
def get_readable_ctx_date( ctx ):
|
||||
"""Convert the date of the changeset (the received ctx) to a human-readable date."""
|
||||
t, tz = ctx.date()
|
||||
date = datetime( *gmtime( float( t ) - tz )[ :6 ] )
|
||||
ctx_date = date.strftime( "%Y-%m-%d" )
|
||||
return ctx_date
|
||||
|
||||
def get_repo_info_tuple_contents( repo_info_tuple ):
|
||||
"""Take care in handling the repo_info_tuple as it evolves over time as new tool shed features are introduced."""
|
||||
if len( repo_info_tuple ) == 6:
|
||||
@@ -1206,7 +1213,8 @@ def get_revision_label( trans, repository, changeset_revision ):
|
||||
repo = hg.repository( get_configured_ui(), repository.repo_path( trans.app ) )
|
||||
ctx = get_changectx_for_changeset( repo, changeset_revision )
|
||||
if ctx:
|
||||
return "%s:%s" % ( str( ctx.rev() ), changeset_revision )
|
||||
return '%s:%s <i><font color="#666666">(%s)</font></i>' % \
|
||||
( str( ctx.rev() ), changeset_revision, str( get_readable_ctx_date( ctx ) ) )
|
||||
else:
|
||||
return "-1:%s" % changeset_revision
|
||||
|
||||
@@ -1215,7 +1223,8 @@ def get_rev_label_from_changeset_revision( repo, changeset_revision ):
|
||||
ctx = get_changectx_for_changeset( repo, changeset_revision )
|
||||
if ctx:
|
||||
rev = '%04d' % ctx.rev()
|
||||
label = "%s:%s" % ( str( ctx.rev() ), changeset_revision )
|
||||
label = '%s:%s <i><font color="#666666">(%s)</font></i>' % \
|
||||
( str( ctx.rev() ), changeset_revision, str( get_readable_ctx_date( ctx ) ) )
|
||||
else:
|
||||
rev = '-1'
|
||||
label = "-1:%s" % changeset_revision
|
||||
@@ -1477,9 +1486,6 @@ def handle_email_alerts( trans, repository, content_alert_str='', new_repo_alert
|
||||
email_from = 'galaxy-no-reply@' + trans.request.host.split( ':' )[0]
|
||||
tip_changeset = repo.changelog.tip()
|
||||
ctx = repo.changectx( tip_changeset )
|
||||
t, tz = ctx.date()
|
||||
date = datetime( *gmtime( float( t ) - tz )[:6] )
|
||||
display_date = date.strftime( "%Y-%m-%d" )
|
||||
try:
|
||||
username = ctx.user().split()[0]
|
||||
except:
|
||||
@@ -1490,6 +1496,7 @@ def handle_email_alerts( trans, repository, content_alert_str='', new_repo_alert
|
||||
template = new_repo_email_alert_template
|
||||
else:
|
||||
template = email_alert_template
|
||||
display_date = get_readable_ctx_date( ctx )
|
||||
admin_body = string.Template( template ).safe_substitute( host=trans.request.host,
|
||||
sharable_link=sharable_link,
|
||||
repository_name=repository.name,
|
||||
|
||||
@@ -174,7 +174,9 @@
|
||||
<a class="action-button" target="galaxy_main" href="${h.url_for( controller='repository', action='deprecate', id=trans.security.encode_id( repository.id ), mark_deprecated=False )}">Mark repository as not deprecated</a>
|
||||
%endif
|
||||
%if can_download:
|
||||
<a class="action-button" href="${h.url_for( controller='repository', action='export', repository_id=trans.app.security.encode_id( repository.id ), changeset_revision=changeset_revision )}">Export this revision</a>
|
||||
%if changeset_revision is not None:
|
||||
<a class="action-button" href="${h.url_for( controller='repository', action='export', repository_id=trans.app.security.encode_id( repository.id ), changeset_revision=changeset_revision )}">Export this revision</a>
|
||||
%endif
|
||||
<a class="action-button" href="${h.url_for( controller='repository', action='download', repository_id=trans.app.security.encode_id( repository.id ), changeset_revision=repository.tip( trans.app ), file_type='gz' )}">Download as a .tar.gz file</a>
|
||||
<a class="action-button" href="${h.url_for( controller='repository', action='download', repository_id=trans.app.security.encode_id( repository.id ), changeset_revision=repository.tip( trans.app ), file_type='bz2' )}">Download as a .tar.bz2 file</a>
|
||||
<a class="action-button" href="${h.url_for( controller='repository', action='download', repository_id=trans.app.security.encode_id( repository.id ), changeset_revision=repository.tip( trans.app ), file_type='zip' )}">Download as a zip file</a>
|
||||
|
||||
@@ -181,9 +181,9 @@ ${render_tool_shed_repository_actions( repository, metadata=metadata, changeset_
|
||||
<div class="form-row">
|
||||
<label>Revision:</label>
|
||||
%if can_view_change_log:
|
||||
<a href="${h.url_for( controller='repository', action='view_changelog', id=trans.app.security.encode_id( repository.id ) )}">${revision_label | h}</a>
|
||||
<a href="${h.url_for( controller='repository', action='view_changelog', id=trans.app.security.encode_id( repository.id ) )}">${revision_label}</a>
|
||||
%else:
|
||||
${revision_label | h}
|
||||
${revision_label}
|
||||
%endif
|
||||
</div>
|
||||
<div class="form-row">
|
||||
|
||||
@@ -51,7 +51,7 @@ ${render_galaxy_repository_actions( repository=repository )}
|
||||
%else:
|
||||
<div class="form-row">
|
||||
<label>Revision:</label>
|
||||
${revision_label | h}
|
||||
${revision_label}
|
||||
</div>
|
||||
%endif
|
||||
</div>
|
||||
|
||||
@@ -44,16 +44,20 @@ ${render_tool_shed_repository_actions( repository, metadata=None, changeset_revi
|
||||
${render_clone_str( repository )}
|
||||
</div>
|
||||
%endif
|
||||
${render_repository_type_select_field( repository_type_select_field, render_help=False )}
|
||||
<div class="toolFormBody">
|
||||
<div class="form-row">
|
||||
<label>Type:</label>
|
||||
${repository.type | h}
|
||||
<div style="clear: both"></div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<label>Description:</label>
|
||||
${repository.description | h}
|
||||
<div style="clear: both"></div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<label>Version:</label>
|
||||
${repository.revision( trans.app ) | h}
|
||||
<label>Revision:</label>
|
||||
${revision_label}
|
||||
<div style="clear: both"></div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
<%namespace file="/webapps/tool_shed/common/repository_actions_menu.mako" import="render_tool_shed_repository_actions" />
|
||||
|
||||
<%
|
||||
from galaxy.web.framework.helpers import time_ago
|
||||
is_new = repository.is_new( trans.app )
|
||||
can_push = trans.app.security_agent.can_push( trans.app, trans.user, repository )
|
||||
can_download = not is_new and ( not is_malicious or can_push )
|
||||
@@ -108,7 +107,7 @@ ${render_tool_shed_repository_actions( repository=repository )}
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<label>Pushed:</label>
|
||||
${time_ago( changeset[ 'date' ] )}
|
||||
${changeset[ 'display_date' ]}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -49,13 +49,15 @@ ${render_tool_shed_repository_actions( repository=repository )}
|
||||
%endif
|
||||
<div class="toolForm">
|
||||
<%
|
||||
from tool_shed.util.shed_util_common import get_readable_ctx_date
|
||||
changeset_revision_date = get_readable_ctx_date( ctx )
|
||||
if can_download:
|
||||
title_str = 'Changeset %s:%s' % ( ctx.rev(), ctx )
|
||||
title_str = 'Changeset <b>%s:%s</b> <i>(%s)</i>' % ( ctx.rev(), ctx, changeset_revision_date )
|
||||
else:
|
||||
title_str = '%s changeset %s:%s' % ( repository.name, ctx.rev(), ctx )
|
||||
title_str = '%s changeset <b>%s:%s</b> <i>(%s)</i>' % ( repository.name, ctx.rev(), ctx, changeset_revision_date )
|
||||
%>
|
||||
<div class="toolFormTitle">
|
||||
${title_str | h}
|
||||
${title_str}
|
||||
</div>
|
||||
<div class="toolFormBody">
|
||||
<table class="grid">
|
||||
@@ -63,10 +65,10 @@ ${render_tool_shed_repository_actions( repository=repository )}
|
||||
<tr>
|
||||
<td>
|
||||
%if prev:
|
||||
<a class="action-button" href="${h.url_for( controller='repository', action='view_changeset', id=trans.security.encode_id( repository.id ), ctx_str=ctx_parent )}">Previous changeset ${prev | h}</a>
|
||||
<a class="action-button" href="${h.url_for( controller='repository', action='view_changeset', id=trans.security.encode_id( repository.id ), ctx_str=ctx_parent )}">Previous changeset ${prev}</a>
|
||||
%endif
|
||||
%if next:
|
||||
<a class="action-button" href="${h.url_for( controller='repository', action='view_changeset', id=trans.security.encode_id( repository.id ), ctx_str=ctx_child )}">Next changeset ${next | h}</a>
|
||||
<a class="action-button" href="${h.url_for( controller='repository', action='view_changeset', id=trans.security.encode_id( repository.id ), ctx_str=ctx_child )}">Next changeset ${next}</a>
|
||||
%endif
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -100,7 +100,11 @@
|
||||
${repository.name | h}
|
||||
%endif
|
||||
</div>
|
||||
${render_repository_type_select_field( repository_type_select_field, render_help=False )}
|
||||
<div class="form-row">
|
||||
<label>Type:</label>
|
||||
${repository.type | h}
|
||||
<div style="clear: both"></div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<label>Synopsis:</label>
|
||||
${repository.description | h}
|
||||
@@ -113,7 +117,7 @@
|
||||
%if can_view_change_log:
|
||||
<a href="${h.url_for( controller='repository', action='view_changelog', id=trans.app.security.encode_id( repository.id ) )}">${revision_label}</a>
|
||||
%else:
|
||||
${revision_label | h}
|
||||
${revision_label}
|
||||
%endif
|
||||
</div>
|
||||
<div class="form-row">
|
||||
|
||||
@@ -34,7 +34,7 @@ ${render_tool_shed_repository_actions( repository=repository, changeset_revision
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<label>Repository revision:</label>
|
||||
<a class="action-button" href="${h.url_for( controller='repository_review', action='view_or_manage_repository', id=trans.security.encode_id( repository.id ), changeset_revision=review.changeset_revision )}">${changeset_revision_label | h}</a>
|
||||
<a class="action-button" href="${h.url_for( controller='repository_review', action='view_or_manage_repository', id=trans.security.encode_id( repository.id ), changeset_revision=review.changeset_revision )}">${changeset_revision_label}</a>
|
||||
<div style="clear: both"></div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
|
||||
@@ -45,7 +45,7 @@ ${render_tool_shed_repository_actions( repository=repository, changeset_revision
|
||||
<div class="toolFormBody">
|
||||
<div class="form-row">
|
||||
<label>Revision:</label>
|
||||
<a class="action-button" href="${h.url_for( controller='repository_review', action='view_or_manage_repository', id=trans.security.encode_id( repository.id ), changeset_revision=changeset_revision )}">${changeset_revision_label | h}</a>
|
||||
<a class="action-button" href="${h.url_for( controller='repository_review', action='view_or_manage_repository', id=trans.security.encode_id( repository.id ), changeset_revision=changeset_revision )}">${changeset_revision_label}</a>
|
||||
<div style="clear: both"></div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
|
||||
@@ -67,7 +67,7 @@ ${render_tool_shed_repository_actions( repository=repository )}
|
||||
<tr>
|
||||
<td>
|
||||
<div style="float:left;" class="menubutton split popup" id="${changeset_revision}-popup">
|
||||
<a class="view-info" href="${h.url_for( controller='repository_review', action='view_or_manage_repository', id=trans.security.encode_id( repository.id ), changeset_revision=changeset_revision )}">${changeset_revision_label | h}</a>
|
||||
<a class="view-info" href="${h.url_for( controller='repository_review', action='view_or_manage_repository', id=trans.security.encode_id( repository.id ), changeset_revision=changeset_revision )}">${changeset_revision_label}</a>
|
||||
</div>
|
||||
<div popupmenu="${changeset_revision}-popup">
|
||||
%if repository_reviews:
|
||||
|
||||
@@ -30,7 +30,7 @@ ${render_tool_shed_repository_actions( repository=repository )}
|
||||
%endif
|
||||
|
||||
<div class="warningmessage">
|
||||
You have elected to create a new review for revision <b>${changeset_revision_label | h}</b>of this repository. Since previous revisions have been reviewed,
|
||||
You have elected to create a new review for revision <b>${changeset_revision_label}</b>of this repository. Since previous revisions have been reviewed,
|
||||
you can select a previous review to copy to your new review, or click the <b>Create a review without copying</b> button.
|
||||
</div>
|
||||
|
||||
@@ -39,7 +39,7 @@ ${render_tool_shed_repository_actions( repository=repository )}
|
||||
<div class="toolFormBody">
|
||||
<div class="form-row">
|
||||
<label>Revision for new review:</label>
|
||||
<a class="action-button" href="${h.url_for( controller='repository_review', action='view_or_manage_repository', id=trans.security.encode_id( repository.id ), changeset_revision=changeset_revision )}">${changeset_revision_label | h}</a>
|
||||
<a class="action-button" href="${h.url_for( controller='repository_review', action='view_or_manage_repository', id=trans.security.encode_id( repository.id ), changeset_revision=changeset_revision )}">${changeset_revision_label}</a>
|
||||
<div style="clear: both"></div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
@@ -76,7 +76,7 @@ ${render_tool_shed_repository_actions( repository=repository )}
|
||||
<a class="action-button" href="${h.url_for( controller='repository_review', action='create_review', id=trans.security.encode_id( repository.id ), changeset_revision=changeset_revision, previous_review_id=encoded_review_id )}">Copy this review</a>
|
||||
</div>
|
||||
</td>
|
||||
<td>${previous_changeset_revision_label | h}</td>
|
||||
<td>${previous_changeset_revision_label}</td>
|
||||
<td>${render_star_rating( repository_rating_name, review.rating, disabled=True )}</td>
|
||||
<td>${approved_str | h}</td>
|
||||
</tr>
|
||||
|
||||
Reference in New Issue
Block a user