galaxy-commits
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
May 2013
- 1 participants
- 218 discussions
2 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/c3fe9ba931c2/
Changeset: c3fe9ba931c2
Branch: next-stable
User: Dave Bouvier
Date: 2013-05-31 22:19:21
Summary: Fix for populating environment variables referenced with the $ENV[] syntax when installing repositories with complex repository dependencies.
Affected #: 1 file
diff -r f36d687104d6c2b0b7e482181a5bf0a24740feb1 -r c3fe9ba931c20975711dad6e410c9a4d0601c1fc lib/tool_shed/galaxy_install/tool_dependencies/install_util.py
--- a/lib/tool_shed/galaxy_install/tool_dependencies/install_util.py
+++ b/lib/tool_shed/galaxy_install/tool_dependencies/install_util.py
@@ -108,7 +108,11 @@
text = cu.tool_shed_get( app, tool_shed_url, url )
return text
-def handle_set_environment_entry_for_package( app, install_dir, tool_shed_repository, package_name, package_version, elem ):
+def handle_set_environment_entry_for_package( app, install_dir, tool_shed_repository, package_name, package_version, elem, required_repository ):
+ """
+ Populate a list of actions for creating an env.sh file for a dependent repository. The received elem is the <package> tag set associated
+ with the tool-dependencies.xml file for one of the received tool_shed_repository's repository dependency.
+ """
action_dict = {}
actions = []
for package_elem in elem:
@@ -124,8 +128,8 @@
# Get the installation method version from a tag like: <install version="1.0">
package_install_version = package_elem.get( 'version', '1.0' )
if package_install_version == '1.0':
- # Since the required tool dependency is installed for a repository dependency, all we need to do
- # is inspect the <actions> tag set to find the <action type="set_environment"> tag.
+ # Since the required tool dependency is installed for a repository dependency, we first need to inspect the <actions> tag set to find
+ # the <action type="set_environment"> tag.
for actions_elem in package_elem:
for action_elem in actions_elem:
action_type = action_elem.get( 'type', 'shell_command' )
@@ -141,7 +145,7 @@
if env_var_dict:
env_var_dicts.append( env_var_dict )
elif action_type == 'setup_virtualenv':
- # Add the virtualenv's site-pacakges to PYTHONPATH and bin to PATH. This is a bit hackish.
+ # Add the virtualenv's site-packages to PYTHONPATH and bin to PATH. This is a bit hackish.
site_packages_command = "%s -c 'import os, sys; print os.path.join(sys.prefix, \"lib\", \"python\" + sys.version[:3], \"site-packages\")'" % os.path.join( install_dir, "venv", "bin", "python" )
output = fabric_util.handle_command( app, tool_dependency, install_dir, site_packages_command, return_output=True )
if output.return_code:
@@ -152,7 +156,37 @@
env_var_dicts.append( dict( name="PYTHONPATH", action="prepend_to", value=output.stdout ) )
env_var_dicts.append( dict( name="PATH", action="prepend_to", value=os.path.join( install_dir, 'venv', 'bin' ) ) )
if env_var_dicts:
- action_dict[ 'environment_variable' ] = env_var_dicts
+ if required_repository.status in [ app.model.ToolShedRepository.installation_status.INSTALLED,
+ app.model.ToolShedRepository.installation_status.DEACTIVATED ]:
+ # Handle the case where we have an installed required repository due to the prior_installation_required = True
+ # setting in the received tool_shed_repository's tool_dependencies.xml file and the required repository's
+ # tool_dependencies.xml file may include the use of the $ENV[] variable inheritance feature. To handle this,
+ # we will replace the current "value" entries in each env_var_dict with the actual path taken from the env.sh
+ # file generated for the installed required repository. Each env_var_dict currently looks something like this:
+ # {'action': 'append_to', 'name': 'LD_LIBRARY_PATH', 'value': '$BOOST_ROOT_DIR/lib/'}
+ # We'll read the contents of the received required_repository's env.sh file and replace the 'value' entry of each env_var_dict
+ # with the associated value in the env.sh file.
+ new_env_var_dicts = []
+ env_sh_file_dir = get_tool_dependency_install_dir( app=app,
+ repository_name=required_repository.name,
+ repository_owner=required_repository.owner,
+ repository_changeset_revision=required_repository.installed_changeset_revision,
+ tool_dependency_type='package',
+ tool_dependency_name=package_name,
+ tool_dependency_version=package_version )
+ env_sh_file_path = os.path.join( env_sh_file_dir, 'env.sh' )
+ for i, line in enumerate( open( env_sh_file_path, 'r' ) ):
+ env_var_dict = env_var_dicts[ i ]
+ action = env_var_dict.get( 'action', None )
+ name = env_var_dict.get( 'name', None )
+ value = env_var_dict.get( 'value', None )
+ if action and name and value:
+ new_value = parse_env_shell_entry( action, name, value, line )
+ env_var_dict[ 'value' ] = new_value
+ new_env_var_dicts.append( env_var_dict )
+ action_dict[ 'environment_variable' ] = new_env_var_dicts
+ else:
+ action_dict[ 'environment_variable' ] = env_var_dicts
actions.append( ( 'set_environment', action_dict ) )
return tool_dependency, actions
else:
@@ -253,6 +287,7 @@
dependent_install_dir=dependent_install_dir,
required_install_dir=required_repository_package_install_dir,
tool_shed_repository=tool_shed_repository,
+ required_repository=required_repository,
package_name=package_name,
package_version=package_version,
tool_dependencies_config=config_to_use )
@@ -324,13 +359,11 @@
sa_session = app.model.context.current
def evaluate_template( text ):
- """ Substitute variables defined in XML blocks obtained loaded from
- dependencies file. """
+ """ Substitute variables defined in XML blocks obtained loaded from dependencies file. """
+ # # Added for compatibility with CloudBioLinux.
# TODO: Add tool_version substitution for compat with CloudBioLinux.
- substitutions = {
- "INSTALL_DIR": install_dir,
- "system_install": install_dir, # Added for compat with CloudBioLinux
- }
+ substitutions = { "INSTALL_DIR" : install_dir,
+ "system_install" : install_dir }
return Template( text ).safe_substitute( substitutions )
if not os.path.exists( install_dir ):
@@ -431,15 +464,7 @@
else:
log.debug( "Unsupported action type '%s'. Not proceeding." % str( action_type ) )
raise Exception( "Unsupported action type '%s' in tool dependency definition." % str( action_type ) )
- action_tuple = ( action_type, action_dict )
- # If we're setting environment variables, it's redundant to set the same variable to the same value more than once,
- # so we only append it to the actions list if it isn't already there.
- if action_type in [ 'set_environment', 'set_environment_for_install' ]:
- if action_tuple not in actions:
- actions.append( action_tuple )
- # However, there may be cases where other action types should be executed several times with the same parameters.
- else:
- actions.append( action_tuple )
+ actions.append( ( action_type, action_dict ) )
if actions:
actions_dict[ 'actions' ] = actions
if proprietary_fabfile_path:
@@ -463,7 +488,24 @@
else:
return [ item ]
-def populate_actions_dict( app, dependent_install_dir, required_install_dir, tool_shed_repository, package_name, package_version, tool_dependencies_config ):
+def parse_env_shell_entry( action, name, value, line ):
+ new_value = value
+ var_name = '$%s' % name
+ tmp_value = line.split( '=' )[ 1 ]
+ if action == 'prepend_to':
+ # PATH=/test/package_rdkit_2012_12/62ebd7bb637a/rdkit/bin:$PATH; export PATH
+ new_value = tmp_value.split( ':%s' % var_name )[ 0 ]
+ elif action == 'set_to':
+ # RDBASE=test/package_rdkit_2012_12/62ebd7bb637a/rdkit; export RDBASE
+ new_value = tmp_value.split( ';' )[ 0 ]
+ elif action == 'append_to':
+ # LD_LIBRARY_PATH=$LD_LIBRARY_PATH:test/package_rdkit_2012_12/62ebd7bb637a/rdkit/lib/; export LD_LIBRARY_PATH
+ new_value = tmp_value.split( ':' )[ 1 ]
+ new_value = new_value.split( ';' )[ 0 ]
+ return new_value
+
+
+def populate_actions_dict( app, dependent_install_dir, required_install_dir, tool_shed_repository, required_repository, package_name, package_version, tool_dependencies_config ):
"""
Populate an actions dictionary that can be sent to fabric_util.install_and_build_package. This method handles the scenario where a tool_dependencies.xml
file defines a complex repository dependency. In this case, the tool dependency package will be installed in a separate repository and the tool dependency
@@ -495,7 +537,8 @@
tool_shed_repository=tool_shed_repository,
package_name=package_name,
package_version=package_version,
- elem=required_td_elem )
+ elem=required_td_elem,
+ required_repository=required_repository )
if actions:
actions_dict[ 'actions' ] = actions
break
@@ -629,4 +672,4 @@
parts = []
for arg in args:
parts.append( arg.strip( '/' ) )
- return '/'.join( parts )
+ return '/'.join( parts )
\ No newline at end of file
https://bitbucket.org/galaxy/galaxy-central/commits/7c9738db4d00/
Changeset: 7c9738db4d00
User: Dave Bouvier
Date: 2013-05-31 22:19:54
Summary: Merge in next-stable.
Affected #: 1 file
diff -r c37ea459a80b15795f85359536be883ca21fb942 -r 7c9738db4d0004490329a87e15091a1be02628b6 lib/tool_shed/galaxy_install/tool_dependencies/install_util.py
--- a/lib/tool_shed/galaxy_install/tool_dependencies/install_util.py
+++ b/lib/tool_shed/galaxy_install/tool_dependencies/install_util.py
@@ -108,7 +108,11 @@
text = cu.tool_shed_get( app, tool_shed_url, url )
return text
-def handle_set_environment_entry_for_package( app, install_dir, tool_shed_repository, package_name, package_version, elem ):
+def handle_set_environment_entry_for_package( app, install_dir, tool_shed_repository, package_name, package_version, elem, required_repository ):
+ """
+ Populate a list of actions for creating an env.sh file for a dependent repository. The received elem is the <package> tag set associated
+ with the tool-dependencies.xml file for one of the received tool_shed_repository's repository dependency.
+ """
action_dict = {}
actions = []
for package_elem in elem:
@@ -124,8 +128,8 @@
# Get the installation method version from a tag like: <install version="1.0">
package_install_version = package_elem.get( 'version', '1.0' )
if package_install_version == '1.0':
- # Since the required tool dependency is installed for a repository dependency, all we need to do
- # is inspect the <actions> tag set to find the <action type="set_environment"> tag.
+ # Since the required tool dependency is installed for a repository dependency, we first need to inspect the <actions> tag set to find
+ # the <action type="set_environment"> tag.
for actions_elem in package_elem:
for action_elem in actions_elem:
action_type = action_elem.get( 'type', 'shell_command' )
@@ -141,7 +145,7 @@
if env_var_dict:
env_var_dicts.append( env_var_dict )
elif action_type == 'setup_virtualenv':
- # Add the virtualenv's site-pacakges to PYTHONPATH and bin to PATH. This is a bit hackish.
+ # Add the virtualenv's site-packages to PYTHONPATH and bin to PATH. This is a bit hackish.
site_packages_command = "%s -c 'import os, sys; print os.path.join(sys.prefix, \"lib\", \"python\" + sys.version[:3], \"site-packages\")'" % os.path.join( install_dir, "venv", "bin", "python" )
output = fabric_util.handle_command( app, tool_dependency, install_dir, site_packages_command, return_output=True )
if output.return_code:
@@ -152,7 +156,37 @@
env_var_dicts.append( dict( name="PYTHONPATH", action="prepend_to", value=output.stdout ) )
env_var_dicts.append( dict( name="PATH", action="prepend_to", value=os.path.join( install_dir, 'venv', 'bin' ) ) )
if env_var_dicts:
- action_dict[ 'environment_variable' ] = env_var_dicts
+ if required_repository.status in [ app.model.ToolShedRepository.installation_status.INSTALLED,
+ app.model.ToolShedRepository.installation_status.DEACTIVATED ]:
+ # Handle the case where we have an installed required repository due to the prior_installation_required = True
+ # setting in the received tool_shed_repository's tool_dependencies.xml file and the required repository's
+ # tool_dependencies.xml file may include the use of the $ENV[] variable inheritance feature. To handle this,
+ # we will replace the current "value" entries in each env_var_dict with the actual path taken from the env.sh
+ # file generated for the installed required repository. Each env_var_dict currently looks something like this:
+ # {'action': 'append_to', 'name': 'LD_LIBRARY_PATH', 'value': '$BOOST_ROOT_DIR/lib/'}
+ # We'll read the contents of the received required_repository's env.sh file and replace the 'value' entry of each env_var_dict
+ # with the associated value in the env.sh file.
+ new_env_var_dicts = []
+ env_sh_file_dir = get_tool_dependency_install_dir( app=app,
+ repository_name=required_repository.name,
+ repository_owner=required_repository.owner,
+ repository_changeset_revision=required_repository.installed_changeset_revision,
+ tool_dependency_type='package',
+ tool_dependency_name=package_name,
+ tool_dependency_version=package_version )
+ env_sh_file_path = os.path.join( env_sh_file_dir, 'env.sh' )
+ for i, line in enumerate( open( env_sh_file_path, 'r' ) ):
+ env_var_dict = env_var_dicts[ i ]
+ action = env_var_dict.get( 'action', None )
+ name = env_var_dict.get( 'name', None )
+ value = env_var_dict.get( 'value', None )
+ if action and name and value:
+ new_value = parse_env_shell_entry( action, name, value, line )
+ env_var_dict[ 'value' ] = new_value
+ new_env_var_dicts.append( env_var_dict )
+ action_dict[ 'environment_variable' ] = new_env_var_dicts
+ else:
+ action_dict[ 'environment_variable' ] = env_var_dicts
actions.append( ( 'set_environment', action_dict ) )
return tool_dependency, actions
else:
@@ -253,6 +287,7 @@
dependent_install_dir=dependent_install_dir,
required_install_dir=required_repository_package_install_dir,
tool_shed_repository=tool_shed_repository,
+ required_repository=required_repository,
package_name=package_name,
package_version=package_version,
tool_dependencies_config=config_to_use )
@@ -324,13 +359,11 @@
sa_session = app.model.context.current
def evaluate_template( text ):
- """ Substitute variables defined in XML blocks obtained loaded from
- dependencies file. """
+ """ Substitute variables defined in XML blocks obtained loaded from dependencies file. """
+ # # Added for compatibility with CloudBioLinux.
# TODO: Add tool_version substitution for compat with CloudBioLinux.
- substitutions = {
- "INSTALL_DIR": install_dir,
- "system_install": install_dir, # Added for compat with CloudBioLinux
- }
+ substitutions = { "INSTALL_DIR" : install_dir,
+ "system_install" : install_dir }
return Template( text ).safe_substitute( substitutions )
if not os.path.exists( install_dir ):
@@ -431,15 +464,7 @@
else:
log.debug( "Unsupported action type '%s'. Not proceeding." % str( action_type ) )
raise Exception( "Unsupported action type '%s' in tool dependency definition." % str( action_type ) )
- action_tuple = ( action_type, action_dict )
- # If we're setting environment variables, it's redundant to set the same variable to the same value more than once,
- # so we only append it to the actions list if it isn't already there.
- if action_type in [ 'set_environment', 'set_environment_for_install' ]:
- if action_tuple not in actions:
- actions.append( action_tuple )
- # However, there may be cases where other action types should be executed several times with the same parameters.
- else:
- actions.append( action_tuple )
+ actions.append( ( action_type, action_dict ) )
if actions:
actions_dict[ 'actions' ] = actions
if proprietary_fabfile_path:
@@ -463,7 +488,24 @@
else:
return [ item ]
-def populate_actions_dict( app, dependent_install_dir, required_install_dir, tool_shed_repository, package_name, package_version, tool_dependencies_config ):
+def parse_env_shell_entry( action, name, value, line ):
+ new_value = value
+ var_name = '$%s' % name
+ tmp_value = line.split( '=' )[ 1 ]
+ if action == 'prepend_to':
+ # PATH=/test/package_rdkit_2012_12/62ebd7bb637a/rdkit/bin:$PATH; export PATH
+ new_value = tmp_value.split( ':%s' % var_name )[ 0 ]
+ elif action == 'set_to':
+ # RDBASE=test/package_rdkit_2012_12/62ebd7bb637a/rdkit; export RDBASE
+ new_value = tmp_value.split( ';' )[ 0 ]
+ elif action == 'append_to':
+ # LD_LIBRARY_PATH=$LD_LIBRARY_PATH:test/package_rdkit_2012_12/62ebd7bb637a/rdkit/lib/; export LD_LIBRARY_PATH
+ new_value = tmp_value.split( ':' )[ 1 ]
+ new_value = new_value.split( ';' )[ 0 ]
+ return new_value
+
+
+def populate_actions_dict( app, dependent_install_dir, required_install_dir, tool_shed_repository, required_repository, package_name, package_version, tool_dependencies_config ):
"""
Populate an actions dictionary that can be sent to fabric_util.install_and_build_package. This method handles the scenario where a tool_dependencies.xml
file defines a complex repository dependency. In this case, the tool dependency package will be installed in a separate repository and the tool dependency
@@ -495,7 +537,8 @@
tool_shed_repository=tool_shed_repository,
package_name=package_name,
package_version=package_version,
- elem=required_td_elem )
+ elem=required_td_elem,
+ required_repository=required_repository )
if actions:
actions_dict[ 'actions' ] = actions
break
@@ -629,4 +672,4 @@
parts = []
for arg in args:
parts.append( arg.strip( '/' ) )
- return '/'.join( parts )
+ return '/'.join( parts )
\ No newline at end of file
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
2 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/f36d687104d6/
Changeset: f36d687104d6
Branch: next-stable
User: Dave Bouvier
Date: 2013-05-31 18:53:56
Summary: Fix for redundant environment settings in env.sh when set_environment actions are distributed across multiple action sections.
Affected #: 1 file
diff -r 835eb008fbabed538d7b10081e05680757646edd -r f36d687104d6c2b0b7e482181a5bf0a24740feb1 lib/tool_shed/galaxy_install/tool_dependencies/install_util.py
--- a/lib/tool_shed/galaxy_install/tool_dependencies/install_util.py
+++ b/lib/tool_shed/galaxy_install/tool_dependencies/install_util.py
@@ -431,7 +431,15 @@
else:
log.debug( "Unsupported action type '%s'. Not proceeding." % str( action_type ) )
raise Exception( "Unsupported action type '%s' in tool dependency definition." % str( action_type ) )
- actions.append( ( action_type, action_dict ) )
+ action_tuple = ( action_type, action_dict )
+ # If we're setting environment variables, it's redundant to set the same variable to the same value more than once,
+ # so we only append it to the actions list if it isn't already there.
+ if action_type in [ 'set_environment', 'set_environment_for_install' ]:
+ if action_tuple not in actions:
+ actions.append( action_tuple )
+ # However, there may be cases where other action types should be executed several times with the same parameters.
+ else:
+ actions.append( action_tuple )
if actions:
actions_dict[ 'actions' ] = actions
if proprietary_fabfile_path:
https://bitbucket.org/galaxy/galaxy-central/commits/c37ea459a80b/
Changeset: c37ea459a80b
User: Dave Bouvier
Date: 2013-05-31 18:54:26
Summary: Merge in next-stable.
Affected #: 1 file
diff -r 2e324d02a9633e9b7e0ee5d6535e76afef57d934 -r c37ea459a80b15795f85359536be883ca21fb942 lib/tool_shed/galaxy_install/tool_dependencies/install_util.py
--- a/lib/tool_shed/galaxy_install/tool_dependencies/install_util.py
+++ b/lib/tool_shed/galaxy_install/tool_dependencies/install_util.py
@@ -431,7 +431,15 @@
else:
log.debug( "Unsupported action type '%s'. Not proceeding." % str( action_type ) )
raise Exception( "Unsupported action type '%s' in tool dependency definition." % str( action_type ) )
- actions.append( ( action_type, action_dict ) )
+ action_tuple = ( action_type, action_dict )
+ # If we're setting environment variables, it's redundant to set the same variable to the same value more than once,
+ # so we only append it to the actions list if it isn't already there.
+ if action_type in [ 'set_environment', 'set_environment_for_install' ]:
+ if action_tuple not in actions:
+ actions.append( action_tuple )
+ # However, there may be cases where other action types should be executed several times with the same parameters.
+ else:
+ actions.append( action_tuple )
if actions:
actions_dict[ 'actions' ] = actions
if proprietary_fabfile_path:
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
commit/galaxy-central: dannon: Add bucket_default userData (param-based only) to cloudlaunch.
by commits-noreply@bitbucket.org 31 May '13
by commits-noreply@bitbucket.org 31 May '13
31 May '13
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/2e324d02a963/
Changeset: 2e324d02a963
User: dannon
Date: 2013-05-31 17:55:46
Summary: Add bucket_default userData (param-based only) to cloudlaunch.
Affected #: 2 files
diff -r b27fc53fd92f7c306530fd878177c403dd3b1882 -r 2e324d02a9633e9b7e0ee5d6535e76afef57d934 lib/galaxy/webapps/galaxy/controllers/cloudlaunch.py
--- a/lib/galaxy/webapps/galaxy/controllers/cloudlaunch.py
+++ b/lib/galaxy/webapps/galaxy/controllers/cloudlaunch.py
@@ -35,8 +35,12 @@
BaseUIController.__init__(self, app)
@web.expose
- def index(self, trans, share_string=None, ami=None):
- return trans.fill_template("cloud/index.mako", default_keypair = DEFAULT_KEYPAIR, share_string=share_string, ami=ami)
+ def index(self, trans, share_string=None, ami=None, bucket_default = None):
+ return trans.fill_template("cloud/index.mako",
+ default_keypair = DEFAULT_KEYPAIR,
+ share_string=share_string,
+ ami=ami,
+ bucket_default=bucket_default)
@web.expose
def get_account_info(self, trans, key_id, secret, **kwargs):
@@ -92,7 +96,7 @@
return to_json_string(account_info)
@web.expose
- def launch_instance(self, trans, cluster_name, password, key_id, secret, instance_type, share_string, keypair, ami=DEFAULT_AMI, zone=None, **kwargs):
+ def launch_instance(self, trans, cluster_name, password, key_id, secret, instance_type, share_string, keypair, ami=DEFAULT_AMI, zone=None, bucket_default=None, **kwargs):
ec2_error = None
try:
# Create security group & key pair used when starting an instance
@@ -113,6 +117,8 @@
user_provided_data['password'] = password
if share_string:
user_provided_data['share_string'] = share_string
+ if bucket_default:
+ user_provided_data['bucket_default'] = bucket_default
rs = run_instance(ec2_conn=ec2_conn,
image_id = ami,
diff -r b27fc53fd92f7c306530fd878177c403dd3b1882 -r 2e324d02a9633e9b7e0ee5d6535e76afef57d934 templates/webapps/galaxy/cloud/index.mako
--- a/templates/webapps/galaxy/cloud/index.mako
+++ b/templates/webapps/galaxy/cloud/index.mako
@@ -250,6 +250,10 @@
<input type='hidden' name='ami' value='${ami}'/>
%endif
+ %if bucket_default:
+ <input type='hidden' name='bucket_default' value='${bucket_default}'/>
+ %endif
+
<div class="form-row"><label for="id_instance_type">Instance Type</label><select name="instance_type" id="id_instance_type">
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
commit/galaxy-central: james_taylor: workflow: fix border color for selected workflow nodes and slight change in node position on selection/unselection
by commits-noreply@bitbucket.org 31 May '13
by commits-noreply@bitbucket.org 31 May '13
31 May '13
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/b27fc53fd92f/
Changeset: b27fc53fd92f
User: james_taylor
Date: 2013-05-31 17:01:01
Summary: workflow: fix border color for selected workflow nodes and slight change in node position on selection/unselection
Affected #: 2 files
diff -r 7b4ce21a008f1140cdcd042ad4a286f362de0641 -r b27fc53fd92f7c306530fd878177c403dd3b1882 static/style/base.less
--- a/static/style/base.less
+++ b/static/style/base.less
@@ -652,6 +652,10 @@
.toolForm.toolFormInCanvas {
border: solid @form_border 1px;
+ &.toolForm-active {
+ border: solid @blue 3px;
+ margin: 4px;
+ }
.toolFormTitle {
font-size: @baseFontSize;
line-height: @baseLineHeight;
diff -r 7b4ce21a008f1140cdcd042ad4a286f362de0641 -r b27fc53fd92f7c306530fd878177c403dd3b1882 static/style/blue/base.css
--- a/static/style/blue/base.css
+++ b/static/style/blue/base.css
@@ -969,7 +969,8 @@
div.toolFormDisabled{border-color:#999999;}
div.toolHelp{margin-top:15px;padding:5px;}
div.toolHelpBody{width:100%;}
-.toolForm.toolFormInCanvas{border:solid #d8b365 1px;}.toolForm.toolFormInCanvas .toolFormTitle{font-size:12px;line-height:16px;}
+.toolForm.toolFormInCanvas{border:solid #d8b365 1px;}.toolForm.toolFormInCanvas.toolForm-active{border:solid blue 3px;margin:4px;}
+.toolForm.toolFormInCanvas .toolFormTitle{font-size:12px;line-height:16px;}
div.form-title,div.toolFormTitle{font-size:15px;line-height:24px;padding:5px 10px;background:#ebd9b2;border-bottom:solid #d8b365 1px;}
div.form-body{padding:5px 0;}
div.form-row{padding:5px 10px;}
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
2 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/835eb008fbab/
Changeset: 835eb008fbab
Branch: next-stable
User: jgoecks
Date: 2013-05-30 23:38:57
Summary: During workflow export, update workflow modules before visiting inputs to avoid errors resulting from parameter changes.
Affected #: 1 file
diff -r fa04c813f5c9ddfaae1ed3e9896591128a07780d -r 835eb008fbabed538d7b10081e05680757646edd lib/galaxy/webapps/galaxy/controllers/workflow.py
--- a/lib/galaxy/webapps/galaxy/controllers/workflow.py
+++ b/lib/galaxy/webapps/galaxy/controllers/workflow.py
@@ -1756,6 +1756,9 @@
def callback( input, value, prefixed_name, prefixed_label ):
if isinstance( input, DataToolParameter ):
data_input_names[ prefixed_name ] = True
+
+ # FIXME: this updates modules silently right now; messages from updates should be provided.
+ module.check_and_update_state()
visit_input_values( module.tool.inputs, module.state.inputs, callback )
# Filter
# FIXME: this removes connection without displaying a message currently!
https://bitbucket.org/galaxy/galaxy-central/commits/7b4ce21a008f/
Changeset: 7b4ce21a008f
User: jgoecks
Date: 2013-05-30 23:39:22
Summary: Automated merge with next-stable
Affected #: 1 file
diff -r 460bdfc91d32cf6692ff3dc1837b2e3d981dd1a2 -r 7b4ce21a008f1140cdcd042ad4a286f362de0641 lib/galaxy/webapps/galaxy/controllers/workflow.py
--- a/lib/galaxy/webapps/galaxy/controllers/workflow.py
+++ b/lib/galaxy/webapps/galaxy/controllers/workflow.py
@@ -1756,6 +1756,9 @@
def callback( input, value, prefixed_name, prefixed_label ):
if isinstance( input, DataToolParameter ):
data_input_names[ prefixed_name ] = True
+
+ # FIXME: this updates modules silently right now; messages from updates should be provided.
+ module.check_and_update_state()
visit_input_values( module.tool.inputs, module.state.inputs, callback )
# Filter
# FIXME: this removes connection without displaying a message currently!
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
2 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/fa04c813f5c9/
Changeset: fa04c813f5c9
Branch: next-stable
User: jgoecks
Date: 2013-05-30 23:17:23
Summary: Enhance unicodify to correctly handle non-string input.
Affected #: 1 file
diff -r 69d502188765dacd378a5ac75b49d2b0a0b33032 -r fa04c813f5c9ddfaae1ed3e9896591128a07780d lib/galaxy/util/__init__.py
--- a/lib/galaxy/util/__init__.py
+++ b/lib/galaxy/util/__init__.py
@@ -480,10 +480,11 @@
"""
Returns a unicode string or None
"""
+
if isinstance( value, unicode ):
return value
try:
- return unicode( value, encoding, error )
+ return unicode( str( value ), encoding, error )
except:
return default
https://bitbucket.org/galaxy/galaxy-central/commits/460bdfc91d32/
Changeset: 460bdfc91d32
User: jgoecks
Date: 2013-05-30 23:17:48
Summary: Automated merge with next-stable
Affected #: 1 file
diff -r babedb4715aaa3afeeebfe162f9e089625b1533a -r 460bdfc91d32cf6692ff3dc1837b2e3d981dd1a2 lib/galaxy/util/__init__.py
--- a/lib/galaxy/util/__init__.py
+++ b/lib/galaxy/util/__init__.py
@@ -480,10 +480,11 @@
"""
Returns a unicode string or None
"""
+
if isinstance( value, unicode ):
return value
try:
- return unicode( value, encoding, error )
+ return unicode( str( value ), encoding, error )
except:
return default
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
2 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/69d502188765/
Changeset: 69d502188765
Branch: next-stable
User: jgoecks
Date: 2013-05-30 22:57:03
Summary: Remove manual JSON parsing because it is not needed.
Affected #: 3 files
diff -r 9e531f5ffaeefedbfdcb71d3e9d4f1ca1a2aa85b -r 69d502188765dacd378a5ac75b49d2b0a0b33032 templates/webapps/galaxy/tracks/browser.mako
--- a/templates/webapps/galaxy/tracks/browser.mako
+++ b/templates/webapps/galaxy/tracks/browser.mako
@@ -89,7 +89,7 @@
container: $("#browser-container"),
name: $("#new-title").val(),
dbkey: $("#new-dbkey").val()
- }, JSON.parse('${ h.to_json_string( viewport_config ) }'));
+ }, ${ h.to_json_string( viewport_config ) } );
view.editor = true;
init_editor();
set_up_router({view: view});
diff -r 9e531f5ffaeefedbfdcb71d3e9d4f1ca1a2aa85b -r 69d502188765dacd378a5ac75b49d2b0a0b33032 templates/webapps/galaxy/visualization/display.mako
--- a/templates/webapps/galaxy/visualization/display.mako
+++ b/templates/webapps/galaxy/visualization/display.mako
@@ -94,9 +94,9 @@
vis_id: "${config.get('vis_id')}",
dbkey: "${config.get('dbkey')}"
},
- JSON.parse('${ h.to_json_string( config.get( 'viewport', dict() ) ) }'),
- JSON.parse('${ h.to_json_string( config['tracks'] ).replace("'", "\\'") }'),
- JSON.parse('${ h.to_json_string( config.get('bookmarks') ) }')
+ ${ h.to_json_string( config.get( 'viewport', dict() ) ) },
+ ${ h.to_json_string( config['tracks'] ) },
+ ${ h.to_json_string( config.get('bookmarks') ) }
);
// Set up keyboard navigation.
diff -r 9e531f5ffaeefedbfdcb71d3e9d4f1ca1a2aa85b -r 69d502188765dacd378a5ac75b49d2b0a0b33032 templates/webapps/galaxy/visualization/phyloviz.mako
--- a/templates/webapps/galaxy/visualization/phyloviz.mako
+++ b/templates/webapps/galaxy/visualization/phyloviz.mako
@@ -168,9 +168,9 @@
};
$(function firstVizLoad(){ // calls when viz is loaded for the first time
- var config = JSON.parse( '${ h.to_json_string( config )}');
+ var config = ${ h.to_json_string( config )};
window.config = config;
- var data = JSON.parse('${h.to_json_string(data)}');
+ var data = ${h.to_json_string(data)};
window.data = data;
initPhyloViz(data, config);
});
https://bitbucket.org/galaxy/galaxy-central/commits/babedb4715aa/
Changeset: babedb4715aa
User: jgoecks
Date: 2013-05-30 22:57:27
Summary: Automated merge with next-stable
Affected #: 3 files
diff -r f8174b474884ceabf61d5e591963ed5849da655c -r babedb4715aaa3afeeebfe162f9e089625b1533a templates/webapps/galaxy/tracks/browser.mako
--- a/templates/webapps/galaxy/tracks/browser.mako
+++ b/templates/webapps/galaxy/tracks/browser.mako
@@ -89,7 +89,7 @@
container: $("#browser-container"),
name: $("#new-title").val(),
dbkey: $("#new-dbkey").val()
- }, JSON.parse('${ h.to_json_string( viewport_config ) }'));
+ }, ${ h.to_json_string( viewport_config ) } );
view.editor = true;
init_editor();
set_up_router({view: view});
diff -r f8174b474884ceabf61d5e591963ed5849da655c -r babedb4715aaa3afeeebfe162f9e089625b1533a templates/webapps/galaxy/visualization/display.mako
--- a/templates/webapps/galaxy/visualization/display.mako
+++ b/templates/webapps/galaxy/visualization/display.mako
@@ -94,9 +94,9 @@
vis_id: "${config.get('vis_id')}",
dbkey: "${config.get('dbkey')}"
},
- JSON.parse('${ h.to_json_string( config.get( 'viewport', dict() ) ) }'),
- JSON.parse('${ h.to_json_string( config['tracks'] ).replace("'", "\\'") }'),
- JSON.parse('${ h.to_json_string( config.get('bookmarks') ) }')
+ ${ h.to_json_string( config.get( 'viewport', dict() ) ) },
+ ${ h.to_json_string( config['tracks'] ) },
+ ${ h.to_json_string( config.get('bookmarks') ) }
);
// Set up keyboard navigation.
diff -r f8174b474884ceabf61d5e591963ed5849da655c -r babedb4715aaa3afeeebfe162f9e089625b1533a templates/webapps/galaxy/visualization/phyloviz.mako
--- a/templates/webapps/galaxy/visualization/phyloviz.mako
+++ b/templates/webapps/galaxy/visualization/phyloviz.mako
@@ -168,9 +168,9 @@
};
$(function firstVizLoad(){ // calls when viz is loaded for the first time
- var config = JSON.parse( '${ h.to_json_string( config )}');
+ var config = ${ h.to_json_string( config )};
window.config = config;
- var data = JSON.parse('${h.to_json_string(data)}');
+ var data = ${h.to_json_string(data)};
window.data = data;
initPhyloViz(data, config);
});
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
2 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/9e531f5ffaee/
Changeset: 9e531f5ffaee
Branch: next-stable
User: greg
Date: 2013-05-30 21:32:25
Summary: Add the ability for a user to reset metadata on a selected list of repositories in the tool shed for those repositories for which they are authorized to change.
Affected #: 6 files
diff -r 04dcd40a25ab0e4602c208c8d0b0f84d01a9a259 -r 9e531f5ffaeefedbfdcb71d3e9d4f1ca1a2aa85b lib/galaxy/webapps/tool_shed/controllers/admin.py
--- a/lib/galaxy/webapps/tool_shed/controllers/admin.py
+++ b/lib/galaxy/webapps/tool_shed/controllers/admin.py
@@ -307,7 +307,7 @@
message = util.restore_text( kwd.get( 'message', '' ) )
status = kwd.get( 'status', 'done' )
repositories_select_field = suc.build_repository_ids_select_field( trans )
- return trans.fill_template( '/webapps/tool_shed/admin/reset_metadata_on_selected_repositories.mako',
+ return trans.fill_template( '/webapps/tool_shed/common/reset_metadata_on_selected_repositories.mako',
repositories_select_field=repositories_select_field,
message=message,
status=status )
diff -r 04dcd40a25ab0e4602c208c8d0b0f84d01a9a259 -r 9e531f5ffaeefedbfdcb71d3e9d4f1ca1a2aa85b lib/galaxy/webapps/tool_shed/controllers/repository.py
--- a/lib/galaxy/webapps/tool_shed/controllers/repository.py
+++ b/lib/galaxy/webapps/tool_shed/controllers/repository.py
@@ -2392,6 +2392,19 @@
message=message,
status=status ) )
+ @web.expose
+ def reset_metadata_on_my_writable_repositories_in_tool_shed( self, trans, **kwd ):
+ if 'reset_metadata_on_selected_repositories_button' in kwd:
+ message, status = metadata_util.reset_metadata_on_selected_repositories( trans, **kwd )
+ else:
+ message = util.restore_text( kwd.get( 'message', '' ) )
+ status = kwd.get( 'status', 'done' )
+ repositories_select_field = suc.build_repository_ids_select_field( trans, my_writable=True )
+ return trans.fill_template( '/webapps/tool_shed/common/reset_metadata_on_selected_repositories.mako',
+ repositories_select_field=repositories_select_field,
+ message=message,
+ status=status )
+
def __search_ids_names( self, tool_dict, exact_matches_checked, match_tuples, repository_metadata, tool_ids, tool_names ):
for i, tool_id in enumerate( tool_ids ):
tool_name = tool_names[ i ]
diff -r 04dcd40a25ab0e4602c208c8d0b0f84d01a9a259 -r 9e531f5ffaeefedbfdcb71d3e9d4f1ca1a2aa85b lib/tool_shed/util/shed_util_common.py
--- a/lib/tool_shed/util/shed_util_common.py
+++ b/lib/tool_shed/util/shed_util_common.py
@@ -12,6 +12,7 @@
from galaxy.web.form_builder import SelectField
from galaxy.datatypes import checkers
from galaxy.model.orm import and_
+from galaxy.model.orm import or_
import sqlalchemy.orm.exc
from tool_shed.util import common_util
from tool_shed.util import xml_util
@@ -88,19 +89,39 @@
'${host}'
"""
-def build_repository_ids_select_field( trans, name='repository_ids', multiple=True, display='checkboxes' ):
+def build_repository_ids_select_field( trans, name='repository_ids', multiple=True, display='checkboxes', my_writable=False ):
"""Method called from both Galaxy and the Tool Shed to generate the current list of repositories for resetting metadata."""
repositories_select_field = SelectField( name=name, multiple=multiple, display=display )
if trans.webapp.name == 'tool_shed':
# We're in the tool shed.
- 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,
- trans.model.Repository.table.c.user_id ):
- owner = repository.user.username
- option_label = '%s (%s)' % ( repository.name, owner )
- option_value = '%s' % trans.security.encode_id( repository.id )
- repositories_select_field.add_option( option_label, option_value )
+ if my_writable:
+ username = trans.user.username
+ clause_list = []
+ for repository in trans.sa_session.query( trans.model.Repository ) \
+ .filter( trans.model.Repository.table.c.deleted == False ):
+ allow_push = repository.allow_push( trans.app )
+ if allow_push:
+ allow_push_usernames = allow_push.split( ',' )
+ if username in allow_push_usernames:
+ clause_list.append( trans.model.Repository.table.c.id == repository.id )
+ if clause_list:
+ for repository in trans.sa_session.query( trans.model.Repository ) \
+ .filter( or_( *clause_list ) ) \
+ .order_by( trans.model.Repository.table.c.name,
+ trans.model.Repository.table.c.user_id ):
+ owner = repository.user.username
+ option_label = '%s (%s)' % ( repository.name, owner )
+ option_value = '%s' % trans.security.encode_id( repository.id )
+ repositories_select_field.add_option( option_label, option_value )
+ else:
+ 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,
+ trans.model.Repository.table.c.user_id ):
+ owner = repository.user.username
+ option_label = '%s (%s)' % ( repository.name, owner )
+ option_value = '%s' % trans.security.encode_id( repository.id )
+ repositories_select_field.add_option( option_label, option_value )
else:
# We're in Galaxy.
for repository in trans.sa_session.query( trans.model.ToolShedRepository ) \
diff -r 04dcd40a25ab0e4602c208c8d0b0f84d01a9a259 -r 9e531f5ffaeefedbfdcb71d3e9d4f1ca1a2aa85b templates/webapps/tool_shed/admin/reset_metadata_on_selected_repositories.mako
--- a/templates/webapps/tool_shed/admin/reset_metadata_on_selected_repositories.mako
+++ /dev/null
@@ -1,40 +0,0 @@
-<%inherit file="/base.mako"/>
-<%namespace file="/message.mako" import="render_msg" />
-<%namespace file="/webapps/tool_shed/common/common.mako" import="common_misc_javascripts" />
-
-<%def name="javascripts()">
- ${parent.javascripts()}
- ${common_misc_javascripts()}
-</%def>
-
-%if message:
- ${render_msg( message, status )}
-%endif
-
-<div class="warningmessage">
- Resetting metadata may take a while because this process clones each change set in each selected repository's change log to a temporary location on disk.
- Wait until this page redirects after clicking the <b>Reset metadata on selected repositories</b> button, as doing anything else will not be helpful. Watch
- the tool shed paster log to pass the time if necessary.
-</div>
-
-<div class="toolForm">
- <div class="toolFormTitle">Reset all metadata on each selected repository</div>
- <form name="reset_metadata_on_selected_repositories" id="reset_metadata_on_selected_repositories" action="${h.url_for( controller='admin', action='reset_metadata_on_selected_repositories_in_tool_shed' )}" method="post" >
- <div class="form-row">
- Check each repository for which you want to reset metadata. Repository names are followed by owners in parentheses.
- </div>
- <div style="clear: both"></div>
- <div class="form-row">
- <input type="checkbox" id="checkAll" name="select_all_repositories_checkbox" value="true" onclick="checkAllFields('repository_ids');"/><input type="hidden" name="select_all_repositories_checkbox" value="true"/><b>Select/unselect all repositories</b>
- </div>
- <div style="clear: both"></div>
- <div class="form-row">
- ${repositories_select_field.get_html()}
- </div>
- <div style="clear: both"></div>
- <div class="form-row">
- <input type="submit" name="reset_metadata_on_selected_repositories_button" value="Reset metadata on selected repositories"/>
- </div>
- </form>
- </div>
-</div>
diff -r 04dcd40a25ab0e4602c208c8d0b0f84d01a9a259 -r 9e531f5ffaeefedbfdcb71d3e9d4f1ca1a2aa85b templates/webapps/tool_shed/common/reset_metadata_on_selected_repositories.mako
--- /dev/null
+++ b/templates/webapps/tool_shed/common/reset_metadata_on_selected_repositories.mako
@@ -0,0 +1,40 @@
+<%inherit file="/base.mako"/>
+<%namespace file="/message.mako" import="render_msg" />
+<%namespace file="/webapps/tool_shed/common/common.mako" import="common_misc_javascripts" />
+
+<%def name="javascripts()">
+ ${parent.javascripts()}
+ ${common_misc_javascripts()}
+</%def>
+
+%if message:
+ ${render_msg( message, status )}
+%endif
+
+<div class="warningmessage">
+ Resetting metadata may take a while because this process clones each change set in each selected repository's change log to a temporary location on disk.
+ Wait until this page redirects after clicking the <b>Reset metadata on selected repositories</b> button, as doing anything else will not be helpful. Watch
+ the tool shed paster log to pass the time if necessary.
+</div>
+
+<div class="toolForm">
+ <div class="toolFormTitle">Reset all metadata on each selected repository</div>
+ <form name="reset_metadata_on_selected_repositories" id="reset_metadata_on_selected_repositories" action="${h.url_for( controller='admin', action='reset_metadata_on_selected_repositories_in_tool_shed' )}" method="post" >
+ <div class="form-row">
+ Check each repository for which you want to reset metadata. Repository names are followed by owners in parentheses.
+ </div>
+ <div style="clear: both"></div>
+ <div class="form-row">
+ <input type="checkbox" id="checkAll" name="select_all_repositories_checkbox" value="true" onclick="checkAllFields('repository_ids');"/><input type="hidden" name="select_all_repositories_checkbox" value="true"/><b>Select/unselect all repositories</b>
+ </div>
+ <div style="clear: both"></div>
+ <div class="form-row">
+ ${repositories_select_field.get_html()}
+ </div>
+ <div style="clear: both"></div>
+ <div class="form-row">
+ <input type="submit" name="reset_metadata_on_selected_repositories_button" value="Reset metadata on selected repositories"/>
+ </div>
+ </form>
+ </div>
+</div>
diff -r 04dcd40a25ab0e4602c208c8d0b0f84d01a9a259 -r 9e531f5ffaeefedbfdcb71d3e9d4f1ca1a2aa85b templates/webapps/tool_shed/index.mako
--- a/templates/webapps/tool_shed/index.mako
+++ b/templates/webapps/tool_shed/index.mako
@@ -101,7 +101,41 @@
</div>
%if has_reviewed_repositories:
<div class="toolTitle">
- <a target="galaxy_main" href="${h.url_for( controller='repository', action='browse_repositories', operation='reviewed_repositories_i_own' )}">Reviewed repositories I own</a>
+ <a target="galaxy_main" href="${h.url_for( controller='repository', action='browse_repositories_i_own' )}">Repositories I own</a>
+ </div>
+ %if has_reviewed_repositories:
+ <div class="toolTitle">
+ <a target="galaxy_main" href="${h.url_for( controller='repository', action='browse_repositories', operation='reviewed_repositories_i_own' )}">Reviewed repositories I own</a>
+ </div>
+ %endif
+ %if has_deprecated_repositories:
+ <div class="toolTitle">
+ <a target="galaxy_main" href="${h.url_for( controller='repository', action='browse_deprecated_repositories_i_own' )}">Deprecated repositories I own</a>
+ </div>
+ %endif
+ <div class="toolTitle">
+ <a target="galaxy_main" href="${h.url_for( controller='repository', action='browse_my_writable_repositories' )}">My writable repositories</a>
+ </div>
+ <div class="toolTitle">
+ <a target="galaxy_main" href="${h.url_for( controller='repository', action='reset_metadata_on_my_writable_repositories_in_tool_shed' )}">Reset metadata on my repositories</a>
+ </div>
+ <div class="toolTitle">
+ <a target="galaxy_main" href="${h.url_for( controller='repository', action='browse_my_writable_repositories_missing_tool_test_components' )}">Latest revision: missing tool tests</a>
+ </div>
+ <div class="toolTitle">
+ <a target="galaxy_main" href="${h.url_for( controller='repository', action='browse_my_writable_repositories_with_install_errors' )}">Latest revision: installation errors</a>
+ </div>
+ <div class="toolTitle">
+ <a target="galaxy_main" href="${h.url_for( controller='repository', action='browse_my_writable_repositories_with_failing_tool_tests' )}">Latest revision: failing tool tests</a>
+ </div>
+ <div class="toolTitle">
+ <a target="galaxy_main" href="${h.url_for( controller='repository', action='browse_my_writable_repositories_with_skip_tool_test_checked' )}">Latest revision: skip tool tests</a>
+ </div>
+ <div class="toolTitle">
+ <a target="galaxy_main" href="${h.url_for( controller='repository', action='browse_my_writable_repositories_with_no_failing_tool_tests' )}">Latest revision: all tool tests pass</a>
+ </div>
+ <div class="toolTitle">
+ <a target="galaxy_main" href="${h.url_for( controller='repository', action='browse_my_writable_repositories_with_invalid_tools' )}">Latest revision: invalid tools</a></div>
%endif
%if has_deprecated_repositories:
https://bitbucket.org/galaxy/galaxy-central/commits/f8174b474884/
Changeset: f8174b474884
User: Dave Bouvier
Date: 2013-05-30 21:36:28
Summary: Merge with next-stable.
Affected #: 2 files
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
commit/galaxy-central: greg: Add the ability for a user to reset metadata on a selected list of repositories in the tool shed for those repositories for which they are authorized to change.
by commits-noreply@bitbucket.org 30 May '13
by commits-noreply@bitbucket.org 30 May '13
30 May '13
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/d336d338debe/
Changeset: d336d338debe
User: greg
Date: 2013-05-30 21:32:25
Summary: Add the ability for a user to reset metadata on a selected list of repositories in the tool shed for those repositories for which they are authorized to change.
Affected #: 7 files
diff -r 052c1a1080a2ef5812a0b25c4e65f6d437b9fa52 -r d336d338debe8c79b3587b4ff6cf677eb4b6a85d lib/galaxy/webapps/tool_shed/controllers/admin.py
--- a/lib/galaxy/webapps/tool_shed/controllers/admin.py
+++ b/lib/galaxy/webapps/tool_shed/controllers/admin.py
@@ -307,7 +307,7 @@
message = util.restore_text( kwd.get( 'message', '' ) )
status = kwd.get( 'status', 'done' )
repositories_select_field = suc.build_repository_ids_select_field( trans )
- return trans.fill_template( '/webapps/tool_shed/admin/reset_metadata_on_selected_repositories.mako',
+ return trans.fill_template( '/webapps/tool_shed/common/reset_metadata_on_selected_repositories.mako',
repositories_select_field=repositories_select_field,
message=message,
status=status )
diff -r 052c1a1080a2ef5812a0b25c4e65f6d437b9fa52 -r d336d338debe8c79b3587b4ff6cf677eb4b6a85d lib/galaxy/webapps/tool_shed/controllers/repository.py
--- a/lib/galaxy/webapps/tool_shed/controllers/repository.py
+++ b/lib/galaxy/webapps/tool_shed/controllers/repository.py
@@ -657,9 +657,10 @@
@web.expose
def browse_repository( self, trans, id, **kwd ):
- message = kwd.get( 'message', '' )
- status = kwd.get( 'status', 'done' )
- commit_message = kwd.get( 'commit_message', 'Deleted selected files' )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
+ commit_message = util.restore_text( params.get( 'commit_message', 'Deleted selected files' ) )
repository = suc.get_repository_in_tool_shed( trans, id )
repo = hg.repository( suc.get_configured_ui(), repository.repo_path( trans.app ) )
# Update repository files for browsing.
@@ -832,13 +833,14 @@
@web.expose
def check_for_updates( self, trans, **kwd ):
"""Handle a request from a local Galaxy instance."""
- message = kwd.get( 'message', '' )
- status = kwd.get( 'status', 'done' )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
# If the request originated with the UpdateManager, it will not include a galaxy_url.
galaxy_url = suc.handle_galaxy_url( trans, **kwd )
- name = kwd.get( 'name', None )
- owner = kwd.get( 'owner', None )
- changeset_revision = kwd.get( 'changeset_revision', None )
+ name = params.get( 'name', None )
+ owner = params.get( 'owner', None )
+ changeset_revision = params.get( 'changeset_revision', None )
repository = suc.get_repository_by_name_and_owner( trans.app, name, owner )
repo_dir = repository.repo_path( trans.app )
repo = hg.repository( suc.get_configured_ui(), repo_dir )
@@ -911,8 +913,9 @@
@web.expose
def contact_owner( self, trans, id, **kwd ):
- message = kwd.get( 'message', '' )
- status = kwd.get( 'status', 'done' )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
repository = suc.get_repository_in_tool_shed( trans, id )
metadata = self.get_metadata( trans, id, repository.tip( trans.app ) )
if trans.user and trans.user.email:
@@ -945,8 +948,9 @@
@web.expose
def create_repository( self, trans, **kwd ):
- message = kwd.get( 'message', '' )
- status = kwd.get( 'status', 'done' )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
categories = suc.get_categories( trans )
if not categories:
message = 'No categories have been configured in this instance of the Galaxy Tool Shed. ' + \
@@ -956,12 +960,12 @@
action='browse_repositories',
message=message,
status=status ) )
- name = kwd.get( 'name', '' )
- description = kwd.get( 'description', '' )
- long_description = kwd.get( 'long_description', '' )
- category_ids = util.listify( kwd.get( 'category_id', '' ) )
+ name = util.restore_text( params.get( 'name', '' ) )
+ description = util.restore_text( params.get( 'description', '' ) )
+ long_description = util.restore_text( params.get( 'long_description', '' ) )
+ category_ids = util.listify( params.get( 'category_id', '' ) )
selected_categories = [ trans.security.decode_id( id ) for id in category_ids ]
- if kwd.get( 'create_repository_button', False ):
+ if params.get( 'create_repository_button', False ):
error = False
message = self.__validate_repository_name( name, trans.user )
if message:
@@ -1027,11 +1031,12 @@
"""Mark a repository in the tool shed as deprecated or not deprecated."""
# Marking a repository in the tool shed as deprecated has no effect on any downloadable changeset revisions that may be associated with the
# repository. Revisions are not marked as not downlaodable because those that have installed the repository must be allowed to get updates.
- message = kwd.get( 'message', '' )
- status = kwd.get( 'status', 'done' )
- repository_id = kwd.get( 'id', None )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
+ repository_id = params.get( 'id', None )
repository = suc.get_repository_in_tool_shed( trans, repository_id )
- mark_deprecated = util.string_as_bool( kwd.get( 'mark_deprecated', False ) )
+ mark_deprecated = util.string_as_bool( params.get( 'mark_deprecated', False ) )
repository.deprecated = mark_deprecated
trans.sa_session.add( repository )
trans.sa_session.flush()
@@ -1047,8 +1052,9 @@
@web.expose
def display_tool( self, trans, repository_id, tool_config, changeset_revision, **kwd ):
- message = kwd.get( 'message', '' )
- status = kwd.get( 'status', 'done' )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
repository, tool, message = tool_util.load_tool_from_changeset_revision( trans, repository_id, changeset_revision, tool_config )
if message:
status = 'error'
@@ -1099,6 +1105,7 @@
@web.expose
def download( self, trans, repository_id, changeset_revision, file_type, **kwd ):
# Download an archive of the repository files compressed as zip, gz or bz2.
+ params = util.Params( kwd )
repository = suc.get_repository_in_tool_shed( trans, repository_id )
# Allow hgweb to handle the download. This requires the tool shed
# server account's .hgrc file to include the following setting:
@@ -1118,8 +1125,9 @@
@web.expose
def find_tools( self, trans, **kwd ):
- message = kwd.get( 'message', '' )
- status = kwd.get( 'status', 'done' )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
galaxy_url = suc.handle_galaxy_url( trans, **kwd )
if 'operation' in kwd:
item_id = kwd.get( 'id', '' )
@@ -1161,7 +1169,7 @@
tool_ids = [ item.lower() for item in util.listify( kwd.get( 'tool_id', '' ) ) ]
tool_names = [ item.lower() for item in util.listify( kwd.get( 'tool_name', '' ) ) ]
tool_versions = [ item.lower() for item in util.listify( kwd.get( 'tool_version', '' ) ) ]
- exact_matches = kwd.get( 'exact_matches', '' )
+ exact_matches = params.get( 'exact_matches', '' )
exact_matches_checked = CheckboxField.is_checked( exact_matches )
match_tuples = []
ok = True
@@ -1202,8 +1210,9 @@
@web.expose
def find_workflows( self, trans, **kwd ):
- message = kwd.get( 'message', '' )
- status = kwd.get( 'status', 'done' )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
galaxy_url = suc.handle_galaxy_url( trans, **kwd )
if 'operation' in kwd:
item_id = kwd.get( 'id', '' )
@@ -1244,7 +1253,7 @@
return trans.show_error_message( "No items were selected." )
if 'find_workflows_button' in kwd:
workflow_names = [ item.lower() for item in util.listify( kwd.get( 'workflow_name', '' ) ) ]
- exact_matches = kwd.get( 'exact_matches', '' )
+ exact_matches = params.get( 'exact_matches', '' )
exact_matches_checked = CheckboxField.is_checked( exact_matches )
match_tuples = []
ok = True
@@ -1318,11 +1327,12 @@
if 'workflows' in metadata:
includes_workflows = True
return includes_data_managers, includes_datatypes, includes_tools, includes_tools_for_display_in_tool_panel, includes_tool_dependencies, has_repository_dependencies, includes_workflows
- message = kwd.get( 'message', '' )
- status = kwd.get( 'status', 'done' )
- name = kwd.get( 'name', None )
- owner = kwd.get( 'owner', None )
- changeset_revision = kwd.get( 'changeset_revision', None )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
+ name = params.get( 'name', None )
+ owner = params.get( 'owner', None )
+ changeset_revision = params.get( 'changeset_revision', None )
repository = suc.get_repository_by_name_and_owner( trans.app, name, owner )
repository_metadata = suc.get_repository_metadata_by_changeset_revision( trans,
trans.security.encode_id( repository.id ),
@@ -1522,9 +1532,10 @@
@web.json
def get_repository_dependencies( self, trans, **kwd ):
"""Return an encoded dictionary of all repositories upon which the contents of the received repository depends."""
- name = kwd.get( 'name', None )
- owner = kwd.get( 'owner', None )
- changeset_revision = kwd.get( 'changeset_revision', None )
+ params = util.Params( kwd )
+ name = params.get( 'name', None )
+ owner = params.get( 'owner', None )
+ changeset_revision = params.get( 'changeset_revision', None )
repository = suc.get_repository_by_name_and_owner( trans.app, name, owner )
repository_id = trans.security.encode_id( repository.id )
repository_metadata = suc.get_repository_metadata_by_changeset_revision( trans, repository_id, changeset_revision )
@@ -1618,9 +1629,10 @@
@web.expose
def get_tool_dependencies( self, trans, **kwd ):
"""Handle a request from a Galaxy instance to get the tool_dependencies entry from the metadata for a specified changeset revision."""
- name = kwd.get( 'name', None )
- owner = kwd.get( 'owner', None )
- changeset_revision = kwd.get( 'changeset_revision', None )
+ params = util.Params( kwd )
+ name = params.get( 'name', None )
+ owner = params.get( 'owner', None )
+ changeset_revision = params.get( 'changeset_revision', None )
repository = suc.get_repository_by_name_and_owner( trans.app, name, owner )
for downloadable_revision in repository.downloadable_revisions:
if downloadable_revision.changeset_revision == changeset_revision:
@@ -1634,9 +1646,10 @@
@web.expose
def get_tool_dependencies_config_contents( self, trans, **kwd ):
"""Handle a request from a Galaxy instance to get the tool_dependencies.xml file contents for a specified changeset revision."""
- name = kwd.get( 'name', None )
- owner = kwd.get( 'owner', None )
- changeset_revision = kwd.get( 'changeset_revision', None )
+ params = util.Params( kwd )
+ name = params.get( 'name', None )
+ owner = params.get( 'owner', None )
+ changeset_revision = params.get( 'changeset_revision', None )
repository = suc.get_repository_by_name_and_owner( trans.app, name, owner )
# TODO: We're currently returning the tool_dependencies.xml file that is available on disk. We need to enhance this process
# to retrieve older versions of the tool-dependencies.xml file from the repository manafest.
@@ -1773,8 +1786,9 @@
@web.expose
def help( self, trans, **kwd ):
- message = util.restore_text( kwd.get( 'message', '' ) )
- status = kwd.get( 'status', 'done' )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
return trans.fill_template( '/webapps/tool_shed/repository/help.mako', message=message, status=status, **kwd )
def __in_tool_dict( self, tool_dict, exact_matches_checked, tool_id=None, tool_name=None, tool_version=None ):
@@ -1826,8 +1840,9 @@
@web.expose
def index( self, trans, **kwd ):
- message = kwd.get( 'message', '' )
- status = kwd.get( 'status', 'done' )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
# See if there are any RepositoryMetadata records since menu items require them.
repository_metadata = trans.sa_session.query( model.RepositoryMetadata ).first()
current_user = trans.user
@@ -1846,9 +1861,9 @@
break
# Route in may have been from a sharable URL, in whcih case we'll have a user_id and possibly a name
# The received user_id will be the id of the repository owner.
- user_id = kwd.get( 'user_id', None )
- repository_id = kwd.get( 'repository_id', None )
- changeset_revision = kwd.get( 'changeset_revision', None )
+ user_id = params.get( 'user_id', None )
+ repository_id = params.get( 'repository_id', None )
+ changeset_revision = params.get( 'changeset_revision', None )
return trans.fill_template( '/webapps/tool_shed/index.mako',
repository_metadata=repository_metadata,
has_reviewed_repositories=has_reviewed_repositories,
@@ -1889,8 +1904,9 @@
@web.expose
def load_invalid_tool( self, trans, repository_id, tool_config, changeset_revision, **kwd ):
- message = kwd.get( 'message', '' )
- status = kwd.get( 'status', 'error' )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'error' )
repository, tool, error_message = tool_util.load_tool_from_changeset_revision( trans, repository_id, changeset_revision, tool_config )
tool_state = self.__new_state( trans )
invalid_file_tups = []
@@ -1942,12 +1958,13 @@
@web.expose
@web.require_login( "manage email alerts" )
def manage_email_alerts( self, trans, **kwd ):
- message = kwd.get( 'message', '' )
- status = kwd.get( 'status', 'done' )
- new_repo_alert = kwd.get( 'new_repo_alert', '' )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
+ new_repo_alert = params.get( 'new_repo_alert', '' )
new_repo_alert_checked = CheckboxField.is_checked( new_repo_alert )
user = trans.user
- if kwd.get( 'new_repo_alert_button', False ):
+ if params.get( 'new_repo_alert_button', False ):
user.new_repo_alert = new_repo_alert_checked
trans.sa_session.add( user )
trans.sa_session.flush()
@@ -2206,8 +2223,9 @@
@web.expose
@web.require_login( "multi select email alerts" )
def multi_select_email_alerts( self, trans, **kwd ):
- message = kwd.get( 'message', '' )
- status = kwd.get( 'status', 'done' )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
if 'operation' in kwd:
operation = kwd[ 'operation' ].lower()
if operation == "receive email alerts":
@@ -2245,12 +2263,13 @@
@web.expose
def preview_tools_in_changeset( self, trans, repository_id, **kwd ):
- message = kwd.get( 'message', '' )
- status = kwd.get( 'status', 'done' )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
repository = suc.get_repository_in_tool_shed( trans, repository_id )
repo_dir = repository.repo_path( trans.app )
repo = hg.repository( suc.get_configured_ui(), repo_dir )
- changeset_revision = kwd.get( 'changeset_revision', repository.tip( trans.app ) )
+ changeset_revision = util.restore_text( params.get( 'changeset_revision', repository.tip( trans.app ) ) )
repository_metadata = suc.get_repository_metadata_by_changeset_revision( trans, repository_id, changeset_revision )
if repository_metadata:
repository_metadata_id = trans.security.encode_id( repository_metadata.id ),
@@ -2297,11 +2316,12 @@
older changeset_revsion, but later the repository was updated in the tool shed and the Galaxy admin is trying to install the latest
changeset revision of the same repository instead of updating the one that was previously installed.
"""
- message = kwd.get( 'message', '' )
- status = kwd.get( 'status', 'done' )
- name = kwd.get( 'name', None )
- owner = kwd.get( 'owner', None )
- changeset_revision = kwd.get( 'changeset_revision', None )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
+ name = params.get( 'name', None )
+ owner = params.get( 'owner', None )
+ changeset_revision = params.get( 'changeset_revision', None )
repository = suc.get_repository_by_name_and_owner( trans.app, name, owner )
repo_dir = repository.repo_path( trans.app )
repo = hg.repository( suc.get_configured_ui(), repo_dir )
@@ -2320,9 +2340,10 @@
@web.require_login( "rate repositories" )
def rate_repository( self, trans, **kwd ):
""" Rate a repository and return updated rating data. """
- message = kwd.get( 'message', '' )
- status = kwd.get( 'status', 'done' )
- id = kwd.get( 'id', None )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
+ id = params.get( 'id', None )
if not id:
return trans.response.send_redirect( web.url_for( controller='repository',
action='browse_repositories',
@@ -2335,12 +2356,12 @@
action='browse_repositories',
message="You are not allowed to rate your own repository",
status='error' ) )
- if kwd.get( 'rate_button', False ):
- rating = int( kwd.get( 'rating', '0' ) )
- comment = kwd.get( 'comment', '' )
+ if params.get( 'rate_button', False ):
+ rating = int( params.get( 'rating', '0' ) )
+ comment = util.restore_text( params.get( 'comment', '' ) )
rating = self.rate_item( trans, trans.user, repository, rating, comment )
avg_rating, num_ratings = self.get_ave_item_rating_data( trans.sa_session, repository, webapp_model=trans.model )
- display_reviews = util.string_as_bool( kwd.get( 'display_reviews', False ) )
+ display_reviews = util.string_as_bool( params.get( 'display_reviews', False ) )
rra = self.get_user_item_rating( trans.sa_session, trans.user, repository, webapp_model=trans.model )
metadata = self.get_metadata( trans, id, repository.tip( trans.app ) )
return trans.fill_template( '/webapps/tool_shed/repository/rate_repository.mako',
@@ -2371,6 +2392,19 @@
message=message,
status=status ) )
+ @web.expose
+ def reset_metadata_on_my_writable_repositories_in_tool_shed( self, trans, **kwd ):
+ if 'reset_metadata_on_selected_repositories_button' in kwd:
+ message, status = metadata_util.reset_metadata_on_selected_repositories( trans, **kwd )
+ else:
+ message = util.restore_text( kwd.get( 'message', '' ) )
+ status = kwd.get( 'status', 'done' )
+ repositories_select_field = suc.build_repository_ids_select_field( trans, my_writable=True )
+ return trans.fill_template( '/webapps/tool_shed/common/reset_metadata_on_selected_repositories.mako',
+ repositories_select_field=repositories_select_field,
+ message=message,
+ status=status )
+
def __search_ids_names( self, tool_dict, exact_matches_checked, match_tuples, repository_metadata, tool_ids, tool_names ):
for i, tool_id in enumerate( tool_ids ):
tool_name = tool_names[ i ]
@@ -2473,14 +2507,15 @@
@web.expose
def select_files_to_delete( self, trans, id, **kwd ):
- message = kwd.get( 'message', '' )
- status = kwd.get( 'status', 'done' )
- commit_message = kwd.get( 'commit_message', 'Deleted selected files' )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
+ commit_message = util.restore_text( params.get( 'commit_message', 'Deleted selected files' ) )
repository = suc.get_repository_in_tool_shed( trans, id )
repo_dir = repository.repo_path( trans.app )
repo = hg.repository( suc.get_configured_ui(), repo_dir )
- selected_files_to_delete = kwd.get( 'selected_files_to_delete', '' )
- if kwd.get( 'select_files_to_delete_button', False ):
+ selected_files_to_delete = util.restore_text( params.get( 'selected_files_to_delete', '' ) )
+ if params.get( 'select_files_to_delete_button', False ):
if selected_files_to_delete:
selected_files_to_delete = selected_files_to_delete.split( ',' )
# Get the current repository tip.
@@ -2736,9 +2771,10 @@
revision for the required repository, making it impossible to discover the repository without knowledge of revisions to which it could have been
updated.
"""
- name = kwd.get( 'name', None )
- owner = kwd.get( 'owner', None )
- changeset_revision = kwd.get( 'changeset_revision', None )
+ params = util.Params( kwd )
+ name = params.get( 'name', None )
+ owner = params.get( 'owner', None )
+ changeset_revision = params.get( 'changeset_revision', None )
repository = suc.get_repository_by_name_and_owner( trans.app, name, owner )
repo_dir = repository.repo_path( trans.app )
repo = hg.repository( suc.get_configured_ui(), repo_dir )
@@ -2775,8 +2811,9 @@
@web.expose
def view_changelog( self, trans, id, **kwd ):
- message = kwd.get( 'message', '' )
- status = kwd.get( 'status', 'done' )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
repository = suc.get_repository_in_tool_shed( trans, id )
repo = hg.repository( suc.get_configured_ui(), repository.repo_path( trans.app ) )
changesets = []
@@ -2810,8 +2847,9 @@
@web.expose
def view_changeset( self, trans, id, ctx_str, **kwd ):
- message = kwd.get( 'message', '' )
- status = kwd.get( 'status', 'done' )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
repository = suc.get_repository_in_tool_shed( trans, id )
repo = hg.repository( suc.get_configured_ui(), repository.repo_path( trans.app ) )
ctx = suc.get_changectx_for_changeset( repo, ctx_str )
@@ -2887,14 +2925,15 @@
@web.expose
def view_repository( self, trans, id, **kwd ):
- message = kwd.get( 'message', '' )
- status = kwd.get( 'status', 'done' )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
repository = suc.get_repository_in_tool_shed( trans, id )
repo = hg.repository( suc.get_configured_ui(), repository.repo_path( trans.app ) )
avg_rating, num_ratings = self.get_ave_item_rating_data( trans.sa_session, repository, webapp_model=trans.model )
- changeset_revision = kwd.get( 'changeset_revision', repository.tip( trans.app ) )
- display_reviews = util.string_as_bool( kwd.get( 'display_reviews', False ) )
- alerts = kwd.get( 'alerts', '' )
+ changeset_revision = util.restore_text( params.get( 'changeset_revision', repository.tip( trans.app ) ) )
+ display_reviews = util.string_as_bool( params.get( 'display_reviews', False ) )
+ alerts = params.get( 'alerts', '' )
alerts_checked = CheckboxField.is_checked( alerts )
if repository.email_alerts:
email_alerts = json.from_json_string( repository.email_alerts )
@@ -2902,7 +2941,7 @@
email_alerts = []
repository_dependencies = None
user = trans.user
- if user and kwd.get( 'receive_email_alerts_button', False ):
+ if user and params.get( 'receive_email_alerts_button', False ):
flush_needed = False
if alerts_checked:
if user.email not in email_alerts:
@@ -2970,8 +3009,9 @@
@web.expose
def view_tool_metadata( self, trans, repository_id, changeset_revision, tool_id, **kwd ):
- message = kwd.get( 'message', '' )
- status = kwd.get( 'status', 'done' )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
repository = suc.get_repository_in_tool_shed( trans, repository_id )
repo_files_dir = repository.repo_path( trans.app )
repo = hg.repository( suc.get_configured_ui(), repo_files_dir )
@@ -3041,8 +3081,9 @@
@web.expose
def view_workflow( self, trans, workflow_name, repository_metadata_id, **kwd ):
"""Retrieve necessary information about a workflow from the database so that it can be displayed in an svg image."""
- message = kwd.get( 'message', '' )
- status = kwd.get( 'status', 'done' )
+ params = util.Params( kwd )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
if workflow_name:
workflow_name = encoding_util.tool_shed_decode( workflow_name )
repository_metadata = metadata_util.get_repository_metadata_by_id( trans, repository_metadata_id )
diff -r 052c1a1080a2ef5812a0b25c4e65f6d437b9fa52 -r d336d338debe8c79b3587b4ff6cf677eb4b6a85d lib/tool_shed/grids/repository_grids.py
--- a/lib/tool_shed/grids/repository_grids.py
+++ b/lib/tool_shed/grids/repository_grids.py
@@ -121,7 +121,7 @@
return escape_html( repository.revision( trans.app ) )
- class ToolsFunctionallyCorrectColumn( grids.TextColumn ):
+ class ToolsFunctionallyCorrectColumn( grids.BooleanColumn ):
def get_value( self, trans, grid, repository ):
# This column will display the value associated with the currently displayed metadata revision.
@@ -1130,7 +1130,7 @@
return ''
- class ToolsFunctionallyCorrectColumn( grids.TextColumn ):
+ class ToolsFunctionallyCorrectColumn( grids.BooleanColumn ):
def get_value( self, trans, grid, repository ):
# This column will display the value associated with the currently displayed metadata revision.
diff -r 052c1a1080a2ef5812a0b25c4e65f6d437b9fa52 -r d336d338debe8c79b3587b4ff6cf677eb4b6a85d lib/tool_shed/util/shed_util_common.py
--- a/lib/tool_shed/util/shed_util_common.py
+++ b/lib/tool_shed/util/shed_util_common.py
@@ -12,6 +12,7 @@
from galaxy.web.form_builder import SelectField
from galaxy.datatypes import checkers
from galaxy.model.orm import and_
+from galaxy.model.orm import or_
import sqlalchemy.orm.exc
from tool_shed.util import common_util
from tool_shed.util import xml_util
@@ -88,19 +89,39 @@
'${host}'
"""
-def build_repository_ids_select_field( trans, name='repository_ids', multiple=True, display='checkboxes' ):
+def build_repository_ids_select_field( trans, name='repository_ids', multiple=True, display='checkboxes', my_writable=False ):
"""Method called from both Galaxy and the Tool Shed to generate the current list of repositories for resetting metadata."""
repositories_select_field = SelectField( name=name, multiple=multiple, display=display )
if trans.webapp.name == 'tool_shed':
# We're in the tool shed.
- 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,
- trans.model.Repository.table.c.user_id ):
- owner = repository.user.username
- option_label = '%s (%s)' % ( repository.name, owner )
- option_value = '%s' % trans.security.encode_id( repository.id )
- repositories_select_field.add_option( option_label, option_value )
+ if my_writable:
+ username = trans.user.username
+ clause_list = []
+ for repository in trans.sa_session.query( trans.model.Repository ) \
+ .filter( trans.model.Repository.table.c.deleted == False ):
+ allow_push = repository.allow_push( trans.app )
+ if allow_push:
+ allow_push_usernames = allow_push.split( ',' )
+ if username in allow_push_usernames:
+ clause_list.append( trans.model.Repository.table.c.id == repository.id )
+ if clause_list:
+ for repository in trans.sa_session.query( trans.model.Repository ) \
+ .filter( or_( *clause_list ) ) \
+ .order_by( trans.model.Repository.table.c.name,
+ trans.model.Repository.table.c.user_id ):
+ owner = repository.user.username
+ option_label = '%s (%s)' % ( repository.name, owner )
+ option_value = '%s' % trans.security.encode_id( repository.id )
+ repositories_select_field.add_option( option_label, option_value )
+ else:
+ 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,
+ trans.model.Repository.table.c.user_id ):
+ owner = repository.user.username
+ option_label = '%s (%s)' % ( repository.name, owner )
+ option_value = '%s' % trans.security.encode_id( repository.id )
+ repositories_select_field.add_option( option_label, option_value )
else:
# We're in Galaxy.
for repository in trans.sa_session.query( trans.model.ToolShedRepository ) \
diff -r 052c1a1080a2ef5812a0b25c4e65f6d437b9fa52 -r d336d338debe8c79b3587b4ff6cf677eb4b6a85d templates/webapps/tool_shed/admin/reset_metadata_on_selected_repositories.mako
--- a/templates/webapps/tool_shed/admin/reset_metadata_on_selected_repositories.mako
+++ /dev/null
@@ -1,40 +0,0 @@
-<%inherit file="/base.mako"/>
-<%namespace file="/message.mako" import="render_msg" />
-<%namespace file="/webapps/tool_shed/common/common.mako" import="common_misc_javascripts" />
-
-<%def name="javascripts()">
- ${parent.javascripts()}
- ${common_misc_javascripts()}
-</%def>
-
-%if message:
- ${render_msg( message, status )}
-%endif
-
-<div class="warningmessage">
- Resetting metadata may take a while because this process clones each change set in each selected repository's change log to a temporary location on disk.
- Wait until this page redirects after clicking the <b>Reset metadata on selected repositories</b> button, as doing anything else will not be helpful. Watch
- the tool shed paster log to pass the time if necessary.
-</div>
-
-<div class="toolForm">
- <div class="toolFormTitle">Reset all metadata on each selected repository</div>
- <form name="reset_metadata_on_selected_repositories" id="reset_metadata_on_selected_repositories" action="${h.url_for( controller='admin', action='reset_metadata_on_selected_repositories_in_tool_shed' )}" method="post" >
- <div class="form-row">
- Check each repository for which you want to reset metadata. Repository names are followed by owners in parentheses.
- </div>
- <div style="clear: both"></div>
- <div class="form-row">
- <input type="checkbox" id="checkAll" name="select_all_repositories_checkbox" value="true" onclick="checkAllFields('repository_ids');"/><input type="hidden" name="select_all_repositories_checkbox" value="true"/><b>Select/unselect all repositories</b>
- </div>
- <div style="clear: both"></div>
- <div class="form-row">
- ${repositories_select_field.get_html()}
- </div>
- <div style="clear: both"></div>
- <div class="form-row">
- <input type="submit" name="reset_metadata_on_selected_repositories_button" value="Reset metadata on selected repositories"/>
- </div>
- </form>
- </div>
-</div>
diff -r 052c1a1080a2ef5812a0b25c4e65f6d437b9fa52 -r d336d338debe8c79b3587b4ff6cf677eb4b6a85d templates/webapps/tool_shed/common/reset_metadata_on_selected_repositories.mako
--- /dev/null
+++ b/templates/webapps/tool_shed/common/reset_metadata_on_selected_repositories.mako
@@ -0,0 +1,40 @@
+<%inherit file="/base.mako"/>
+<%namespace file="/message.mako" import="render_msg" />
+<%namespace file="/webapps/tool_shed/common/common.mako" import="common_misc_javascripts" />
+
+<%def name="javascripts()">
+ ${parent.javascripts()}
+ ${common_misc_javascripts()}
+</%def>
+
+%if message:
+ ${render_msg( message, status )}
+%endif
+
+<div class="warningmessage">
+ Resetting metadata may take a while because this process clones each change set in each selected repository's change log to a temporary location on disk.
+ Wait until this page redirects after clicking the <b>Reset metadata on selected repositories</b> button, as doing anything else will not be helpful. Watch
+ the tool shed paster log to pass the time if necessary.
+</div>
+
+<div class="toolForm">
+ <div class="toolFormTitle">Reset all metadata on each selected repository</div>
+ <form name="reset_metadata_on_selected_repositories" id="reset_metadata_on_selected_repositories" action="${h.url_for( controller='admin', action='reset_metadata_on_selected_repositories_in_tool_shed' )}" method="post" >
+ <div class="form-row">
+ Check each repository for which you want to reset metadata. Repository names are followed by owners in parentheses.
+ </div>
+ <div style="clear: both"></div>
+ <div class="form-row">
+ <input type="checkbox" id="checkAll" name="select_all_repositories_checkbox" value="true" onclick="checkAllFields('repository_ids');"/><input type="hidden" name="select_all_repositories_checkbox" value="true"/><b>Select/unselect all repositories</b>
+ </div>
+ <div style="clear: both"></div>
+ <div class="form-row">
+ ${repositories_select_field.get_html()}
+ </div>
+ <div style="clear: both"></div>
+ <div class="form-row">
+ <input type="submit" name="reset_metadata_on_selected_repositories_button" value="Reset metadata on selected repositories"/>
+ </div>
+ </form>
+ </div>
+</div>
diff -r 052c1a1080a2ef5812a0b25c4e65f6d437b9fa52 -r d336d338debe8c79b3587b4ff6cf677eb4b6a85d templates/webapps/tool_shed/index.mako
--- a/templates/webapps/tool_shed/index.mako
+++ b/templates/webapps/tool_shed/index.mako
@@ -114,6 +114,9 @@
<a target="galaxy_main" href="${h.url_for( controller='repository', action='browse_my_writable_repositories' )}">My writable repositories</a></div><div class="toolTitle">
+ <a target="galaxy_main" href="${h.url_for( controller='repository', action='reset_metadata_on_my_writable_repositories_in_tool_shed' )}">Reset metadata on my repositories</a>
+ </div>
+ <div class="toolTitle"><a target="galaxy_main" href="${h.url_for( controller='repository', action='browse_my_writable_repositories_missing_tool_test_components' )}">Latest revision: missing tool tests</a></div><div class="toolTitle">
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
2 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/04dcd40a25ab/
Changeset: 04dcd40a25ab
Branch: next-stable
User: Dave Bouvier
Date: 2013-05-30 19:23:16
Summary: Fix for incorrect changeset revision being selected on the preview page when installing a repository from the tool shed. Fix for exception being raised when resetting metadata on a repository that does not contain tools.
Affected #: 3 files
diff -r 7be69524cfaae9c56f1eb9cd77a857a9b912108c -r 04dcd40a25ab0e4602c208c8d0b0f84d01a9a259 lib/galaxy/webapps/tool_shed/controllers/repository.py
--- a/lib/galaxy/webapps/tool_shed/controllers/repository.py
+++ b/lib/galaxy/webapps/tool_shed/controllers/repository.py
@@ -779,7 +779,7 @@
operation = kwd[ 'operation' ].lower()
if operation == "preview_tools_in_changeset":
repository = suc.get_repository_in_tool_shed( trans, repository_id )
- repository_metadata = metadata_util.get_latest_repository_metadata( trans, repository.id )
+ repository_metadata = metadata_util.get_latest_repository_metadata( trans, repository.id, downloadable=True )
latest_installable_changeset_revision = repository_metadata.changeset_revision
return trans.response.send_redirect( web.url_for( controller='repository',
action='preview_tools_in_changeset',
diff -r 7be69524cfaae9c56f1eb9cd77a857a9b912108c -r 04dcd40a25ab0e4602c208c8d0b0f84d01a9a259 lib/tool_shed/util/metadata_util.py
--- a/lib/tool_shed/util/metadata_util.py
+++ b/lib/tool_shed/util/metadata_util.py
@@ -899,12 +899,15 @@
metadata_dict[ 'workflows' ] = [ ( relative_path, exported_workflow_dict ) ]
return metadata_dict
-def get_latest_repository_metadata( trans, decoded_repository_id ):
+def get_latest_repository_metadata( trans, decoded_repository_id, downloadable=False ):
"""Get last metadata defined for a specified repository from the database."""
- return trans.sa_session.query( trans.model.RepositoryMetadata ) \
- .filter( trans.model.RepositoryMetadata.table.c.repository_id == decoded_repository_id ) \
- .order_by( trans.model.RepositoryMetadata.table.c.id.desc() ) \
- .first()
+ repository = trans.sa_session.query( trans.model.Repository ).get( decoded_repository_id )
+ repo = hg.repository( suc.get_configured_ui(), repository.repo_path( trans.app ) )
+ if downloadable:
+ changeset_revision = suc.get_latest_downloadable_changeset_revision( trans, repository, repo )
+ else:
+ changeset_revision = suc.get_latest_changeset_revision( trans, repository, repo )
+ return suc.get_repository_metadata_by_changeset_revision( trans, trans.security.encode_id( repository.id ), changeset_revision )
def get_orphan_tool_dependencies( metadata ):
"""Inspect tool dependencies included in the received metadata and determine if any of them are orphans within the repository."""
@@ -1233,7 +1236,7 @@
dictionaries. The metadata contained in new_tip_metadata_dict may not be a subset of that contained in the last stored repository_metadata
record associated with the received repository because one or more Galaxy utilities may have been deleted from the repository in the new tip.
"""
- repository_metadata = get_latest_repository_metadata( trans, repository.id )
+ repository_metadata = get_latest_repository_metadata( trans, repository.id, downloadable=False )
datatypes_required = new_datatypes_metadata_required( trans, repository_metadata, new_tip_metadata_dict )
# Uncomment the following if we decide that README files should affect how installable repository revisions are defined. See the NOTE in the
# compare_readme_files() method.
@@ -1752,7 +1755,7 @@
suc.handle_email_alerts( trans, repository, content_alert_str='', new_repo_alert=True, admin_only=False )
else:
# Update the latest stored repository metadata with the contents and attributes of metadata_dict.
- repository_metadata = get_latest_repository_metadata( trans, repository.id )
+ repository_metadata = get_latest_repository_metadata( trans, repository.id, downloadable=False )
if repository_metadata:
downloadable = is_downloadable( metadata_dict )
# Update the last saved repository_metadata table row.
diff -r 7be69524cfaae9c56f1eb9cd77a857a9b912108c -r 04dcd40a25ab0e4602c208c8d0b0f84d01a9a259 lib/tool_shed/util/shed_util_common.py
--- a/lib/tool_shed/util/shed_util_common.py
+++ b/lib/tool_shed/util/shed_util_common.py
@@ -324,11 +324,12 @@
metadata = repository.metadata
# Create a dictionary of tool guid and tool config file name for each tool in the repository.
guids_and_configs = {}
- for tool_dict in metadata[ 'tools' ]:
- guid = tool_dict[ 'guid' ]
- tool_config = tool_dict[ 'tool_config' ]
- file_name = strip_path( tool_config )
- guids_and_configs[ guid ] = file_name
+ if 'tools' in metadata:
+ for tool_dict in metadata[ 'tools' ]:
+ guid = tool_dict[ 'guid' ]
+ tool_config = tool_dict[ 'tool_config' ]
+ file_name = strip_path( tool_config )
+ guids_and_configs[ guid ] = file_name
# Parse the shed_tool_conf file in which all of this repository's tools are defined and generate the tool_panel_dict.
tree, error_message = xml_util.parse_xml( shed_tool_conf )
if tree is None:
@@ -490,6 +491,16 @@
"""Get a tool shed repository record from the Galaxy database defined by the id."""
return trans.sa_session.query( trans.model.ToolShedRepository ).get( trans.security.decode_id( id ) )
+def get_latest_changeset_revision( trans, repository, repo ):
+ repository_tip = repository.tip( trans.app )
+ repository_metadata = get_repository_metadata_by_changeset_revision( trans, trans.security.encode_id( repository.id ), repository_tip )
+ if repository_metadata and repository_metadata.downloadable:
+ return repository_tip
+ changeset_revisions = get_ordered_metadata_changeset_revisions( repository, repo, downloadable=False )
+ if changeset_revisions:
+ return changeset_revisions[ -1 ]
+ return INITIAL_CHANGELOG_HASH
+
def get_latest_downloadable_changeset_revision( trans, repository, repo ):
repository_tip = repository.tip( trans.app )
repository_metadata = get_repository_metadata_by_changeset_revision( trans, trans.security.encode_id( repository.id ), repository_tip )
https://bitbucket.org/galaxy/galaxy-central/commits/052c1a1080a2/
Changeset: 052c1a1080a2
User: Dave Bouvier
Date: 2013-05-30 19:24:04
Summary: Merge in next-stable.
Affected #: 3 files
diff -r dfb77de2aff56137a6f7bf8efc7761f03fcabf6f -r 052c1a1080a2ef5812a0b25c4e65f6d437b9fa52 lib/galaxy/webapps/tool_shed/controllers/repository.py
--- a/lib/galaxy/webapps/tool_shed/controllers/repository.py
+++ b/lib/galaxy/webapps/tool_shed/controllers/repository.py
@@ -778,7 +778,7 @@
operation = kwd[ 'operation' ].lower()
if operation == "preview_tools_in_changeset":
repository = suc.get_repository_in_tool_shed( trans, repository_id )
- repository_metadata = metadata_util.get_latest_repository_metadata( trans, repository.id )
+ repository_metadata = metadata_util.get_latest_repository_metadata( trans, repository.id, downloadable=True )
latest_installable_changeset_revision = repository_metadata.changeset_revision
return trans.response.send_redirect( web.url_for( controller='repository',
action='preview_tools_in_changeset',
diff -r dfb77de2aff56137a6f7bf8efc7761f03fcabf6f -r 052c1a1080a2ef5812a0b25c4e65f6d437b9fa52 lib/tool_shed/util/metadata_util.py
--- a/lib/tool_shed/util/metadata_util.py
+++ b/lib/tool_shed/util/metadata_util.py
@@ -899,12 +899,15 @@
metadata_dict[ 'workflows' ] = [ ( relative_path, exported_workflow_dict ) ]
return metadata_dict
-def get_latest_repository_metadata( trans, decoded_repository_id ):
+def get_latest_repository_metadata( trans, decoded_repository_id, downloadable=False ):
"""Get last metadata defined for a specified repository from the database."""
- return trans.sa_session.query( trans.model.RepositoryMetadata ) \
- .filter( trans.model.RepositoryMetadata.table.c.repository_id == decoded_repository_id ) \
- .order_by( trans.model.RepositoryMetadata.table.c.id.desc() ) \
- .first()
+ repository = trans.sa_session.query( trans.model.Repository ).get( decoded_repository_id )
+ repo = hg.repository( suc.get_configured_ui(), repository.repo_path( trans.app ) )
+ if downloadable:
+ changeset_revision = suc.get_latest_downloadable_changeset_revision( trans, repository, repo )
+ else:
+ changeset_revision = suc.get_latest_changeset_revision( trans, repository, repo )
+ return suc.get_repository_metadata_by_changeset_revision( trans, trans.security.encode_id( repository.id ), changeset_revision )
def get_orphan_tool_dependencies( metadata ):
"""Inspect tool dependencies included in the received metadata and determine if any of them are orphans within the repository."""
@@ -1233,7 +1236,7 @@
dictionaries. The metadata contained in new_tip_metadata_dict may not be a subset of that contained in the last stored repository_metadata
record associated with the received repository because one or more Galaxy utilities may have been deleted from the repository in the new tip.
"""
- repository_metadata = get_latest_repository_metadata( trans, repository.id )
+ repository_metadata = get_latest_repository_metadata( trans, repository.id, downloadable=False )
datatypes_required = new_datatypes_metadata_required( trans, repository_metadata, new_tip_metadata_dict )
# Uncomment the following if we decide that README files should affect how installable repository revisions are defined. See the NOTE in the
# compare_readme_files() method.
@@ -1752,7 +1755,7 @@
suc.handle_email_alerts( trans, repository, content_alert_str='', new_repo_alert=True, admin_only=False )
else:
# Update the latest stored repository metadata with the contents and attributes of metadata_dict.
- repository_metadata = get_latest_repository_metadata( trans, repository.id )
+ repository_metadata = get_latest_repository_metadata( trans, repository.id, downloadable=False )
if repository_metadata:
downloadable = is_downloadable( metadata_dict )
# Update the last saved repository_metadata table row.
diff -r dfb77de2aff56137a6f7bf8efc7761f03fcabf6f -r 052c1a1080a2ef5812a0b25c4e65f6d437b9fa52 lib/tool_shed/util/shed_util_common.py
--- a/lib/tool_shed/util/shed_util_common.py
+++ b/lib/tool_shed/util/shed_util_common.py
@@ -324,11 +324,12 @@
metadata = repository.metadata
# Create a dictionary of tool guid and tool config file name for each tool in the repository.
guids_and_configs = {}
- for tool_dict in metadata[ 'tools' ]:
- guid = tool_dict[ 'guid' ]
- tool_config = tool_dict[ 'tool_config' ]
- file_name = strip_path( tool_config )
- guids_and_configs[ guid ] = file_name
+ if 'tools' in metadata:
+ for tool_dict in metadata[ 'tools' ]:
+ guid = tool_dict[ 'guid' ]
+ tool_config = tool_dict[ 'tool_config' ]
+ file_name = strip_path( tool_config )
+ guids_and_configs[ guid ] = file_name
# Parse the shed_tool_conf file in which all of this repository's tools are defined and generate the tool_panel_dict.
tree, error_message = xml_util.parse_xml( shed_tool_conf )
if tree is None:
@@ -490,6 +491,16 @@
"""Get a tool shed repository record from the Galaxy database defined by the id."""
return trans.sa_session.query( trans.model.ToolShedRepository ).get( trans.security.decode_id( id ) )
+def get_latest_changeset_revision( trans, repository, repo ):
+ repository_tip = repository.tip( trans.app )
+ repository_metadata = get_repository_metadata_by_changeset_revision( trans, trans.security.encode_id( repository.id ), repository_tip )
+ if repository_metadata and repository_metadata.downloadable:
+ return repository_tip
+ changeset_revisions = get_ordered_metadata_changeset_revisions( repository, repo, downloadable=False )
+ if changeset_revisions:
+ return changeset_revisions[ -1 ]
+ return INITIAL_CHANGELOG_HASH
+
def get_latest_downloadable_changeset_revision( trans, repository, repo ):
repository_tip = repository.tip( trans.app )
repository_metadata = get_repository_metadata_by_changeset_revision( trans, trans.security.encode_id( repository.id ), repository_tip )
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0