galaxy-commits
Threads by month
- ----- 2026 -----
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 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
- 15302 discussions
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
commit/galaxy-central: jgoecks: Trackster: fix syntax error.
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/dfb77de2aff5/
Changeset: dfb77de2aff5
User: jgoecks
Date: 2013-05-30 18:24:17
Summary: Trackster: fix syntax error.
Affected #: 1 file
diff -r b9af82c027e7d720214f12f212adc592e6841ce9 -r dfb77de2aff56137a6f7bf8efc7761f03fcabf6f static/scripts/viz/trackster/tracks.js
--- a/static/scripts/viz/trackster/tracks.js
+++ b/static/scripts/viz/trackster/tracks.js
@@ -1577,7 +1577,7 @@
view.overview_drawable.request_draw();
this.changed();
},
- view
+
/** Close and reset overview. */
reset_overview: function() {
// Update UI.
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 specific ami functionality (via GET param) to cloudlaunch. Prevent existing instance selection when using a share string.
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/b9af82c027e7/
Changeset: b9af82c027e7
User: dannon
Date: 2013-05-30 17:23:29
Summary: Add specific ami functionality (via GET param) to cloudlaunch. Prevent existing instance selection when using a share string.
Affected #: 2 files
diff -r b37711ed16fe64bc96ec8eacc6e6ce7026643bab -r b9af82c027e7d720214f12f212adc592e6841ce9 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,8 @@
BaseUIController.__init__(self, app)
@web.expose
- def index(self, trans, share_string=None):
- return trans.fill_template("cloud/index.mako", default_keypair = DEFAULT_KEYPAIR, share_string=share_string)
+ 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)
@web.expose
def get_account_info(self, trans, key_id, secret, **kwargs):
@@ -92,7 +92,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, zone=None, **kwargs):
+ def launch_instance(self, trans, cluster_name, password, key_id, secret, instance_type, share_string, keypair, ami=DEFAULT_AMI, zone=None, **kwargs):
ec2_error = None
try:
# Create security group & key pair used when starting an instance
@@ -113,11 +113,14 @@
user_provided_data['password'] = password
if share_string:
user_provided_data['share_string'] = share_string
+
rs = run_instance(ec2_conn=ec2_conn,
+ image_id = ami,
user_provided_data=user_provided_data,
key_name=kp_name,
security_groups=[sg_name],
- placement=zone)
+ placement=zone
+ )
if rs:
instance = rs.instances[0]
ct = 0
@@ -266,7 +269,7 @@
return None, None
return kp.name, kp.material
-def run_instance(ec2_conn, user_provided_data, image_id=DEFAULT_AMI,
+def run_instance(ec2_conn, user_provided_data, image_id=None,
kernel_id=None, ramdisk_id=None, key_name=DEFAULT_KEYPAIR,
placement=None, security_groups=['CloudMan']):
""" Start an instance. If instance start was OK, return the ResultSet object
diff -r b37711ed16fe64bc96ec8eacc6e6ce7026643bab -r b9af82c027e7d720214f12f212adc592e6841ce9 templates/webapps/galaxy/cloud/index.mako
--- a/templates/webapps/galaxy/cloud/index.mako
+++ b/templates/webapps/galaxy/cloud/index.mako
@@ -202,12 +202,14 @@
</div><div id="hidden_options">
+ %if not share_string:
<div id='existing_instance_wrapper' style="display:none;" class="form-row"><label for="id_existing_instance">Instances in your account</label><select name="existing_instance" id="id_existing_instance"></select><input id='id_zone' type='hidden' name='zone' value=''/></div>
+ %endif
<div id='cluster_name_wrapper' class="form-row"><label for="id_cluster_name">Cluster Name</label><input type="text" size="40" class="text-and-autocomplete-select" name="cluster_name" id="id_cluster_name"/><br/>
@@ -244,6 +246,10 @@
</div>
%endif
+ %if ami:
+ <input type='hidden' name='ami' value='${ami}'/>
+ %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
2 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/7be69524cfaa/
Changeset: 7be69524cfaa
Branch: next-stable
User: Dave Bouvier
Date: 2013-05-30 16:36:40
Summary: Fix error reporting in the tool dependency installation process.
Affected #: 2 files
diff -r 7b2c4fff40c0682bdb64a5fe8049df15cf836541 -r 7be69524cfaae9c56f1eb9cd77a857a9b912108c lib/tool_shed/galaxy_install/tool_dependencies/common_util.py
--- a/lib/tool_shed/galaxy_install/tool_dependencies/common_util.py
+++ b/lib/tool_shed/galaxy_install/tool_dependencies/common_util.py
@@ -1,7 +1,9 @@
import logging
import os
import shutil
+import sys
import tarfile
+import traceback
import urllib2
import zipfile
import tool_shed.util.shed_util_common as suc
@@ -78,6 +80,10 @@
tar.extractall( path=file_path )
tar.close()
+def format_traceback():
+ ex_type, ex, tb = sys.exc_info()
+ return ''.join( traceback.format_tb( tb ) )
+
def extract_zip( archive_path, extraction_path ):
# TODO: change this method to use zipfile.Zipfile.extractall() when we stop supporting Python 2.5.
if not zipfile_ok( archive_path ):
@@ -220,6 +226,8 @@
dst = open( file_path,'wb' )
dst.write( data )
except:
+ raise
+ finally:
if src:
src.close()
if dst:
diff -r 7b2c4fff40c0682bdb64a5fe8049df15cf836541 -r 7be69524cfaae9c56f1eb9cd77a857a9b912108c 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
@@ -165,8 +165,9 @@
# There is currently only one fabric method.
fabric_util.install_and_build_package( app, tool_dependency, actions_dict )
except Exception, e:
+ log.exception( 'Error installing tool dependency %s version %s.', str( tool_dependency.name ), str( tool_dependency.version ) )
tool_dependency.status = app.model.ToolDependency.installation_status.ERROR
- tool_dependency.error_message = str( e )
+ tool_dependency.error_message = '%s\n%s' % ( common_util.format_traceback(), str( e ) )
sa_session.add( tool_dependency )
sa_session.flush()
if tool_dependency.status != app.model.ToolDependency.installation_status.ERROR:
https://bitbucket.org/galaxy/galaxy-central/commits/b37711ed16fe/
Changeset: b37711ed16fe
User: Dave Bouvier
Date: 2013-05-30 16:37:11
Summary: Merge in next-stable.
Affected #: 2 files
diff -r e47d4ab261370d174641e0db1f5b7dd2adc96365 -r b37711ed16fe64bc96ec8eacc6e6ce7026643bab lib/tool_shed/galaxy_install/tool_dependencies/common_util.py
--- a/lib/tool_shed/galaxy_install/tool_dependencies/common_util.py
+++ b/lib/tool_shed/galaxy_install/tool_dependencies/common_util.py
@@ -1,7 +1,9 @@
import logging
import os
import shutil
+import sys
import tarfile
+import traceback
import urllib2
import zipfile
import tool_shed.util.shed_util_common as suc
@@ -78,6 +80,10 @@
tar.extractall( path=file_path )
tar.close()
+def format_traceback():
+ ex_type, ex, tb = sys.exc_info()
+ return ''.join( traceback.format_tb( tb ) )
+
def extract_zip( archive_path, extraction_path ):
# TODO: change this method to use zipfile.Zipfile.extractall() when we stop supporting Python 2.5.
if not zipfile_ok( archive_path ):
@@ -220,6 +226,8 @@
dst = open( file_path,'wb' )
dst.write( data )
except:
+ raise
+ finally:
if src:
src.close()
if dst:
diff -r e47d4ab261370d174641e0db1f5b7dd2adc96365 -r b37711ed16fe64bc96ec8eacc6e6ce7026643bab 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
@@ -165,8 +165,9 @@
# There is currently only one fabric method.
fabric_util.install_and_build_package( app, tool_dependency, actions_dict )
except Exception, e:
+ log.exception( 'Error installing tool dependency %s version %s.', str( tool_dependency.name ), str( tool_dependency.version ) )
tool_dependency.status = app.model.ToolDependency.installation_status.ERROR
- tool_dependency.error_message = str( e )
+ tool_dependency.error_message = '%s\n%s' % ( common_util.format_traceback(), str( e ) )
sa_session.add( tool_dependency )
sa_session.flush()
if tool_dependency.status != app.model.ToolDependency.installation_status.ERROR:
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: fubar: clean up fastqc updates a tiny bit
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/e47d4ab26137/
Changeset: e47d4ab26137
User: fubar
Date: 2013-05-30 07:01:29
Summary: clean up fastqc updates a tiny bit
Affected #: 1 file
diff -r 34b03e0f3182af0601d747b7988308ddc2931149 -r e47d4ab261370d174641e0db1f5b7dd2adc96365 tools/rgenetics/rgFastQC.py
--- a/tools/rgenetics/rgFastQC.py
+++ b/tools/rgenetics/rgFastQC.py
@@ -62,10 +62,9 @@
infname = self.opts.inputfilename
linf = infname.lower()
trimext = False
- isgz = linf.endswith('.gz') or linf.endswith('.gzip')
# decompression at upload currently does NOT remove this now bogus ending - fastqc will barf
# patched may 29 2013 until this is fixed properly
- if isgz:
+ if ( linf.endswith('.gz') or linf.endswith('.gzip') ):
f = gzip.open(self.opts.input)
try:
testrow = f.readline()
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: fubar: Starting the Rgenetics deprecation process - removing all rgenetics sections from tool_conf.xml.sample and fastqc update to dance around EBI_SRA download bogus file extensions
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/34b03e0f3182/
Changeset: 34b03e0f3182
User: fubar
Date: 2013-05-30 06:57:13
Summary: Starting the Rgenetics deprecation process - removing all rgenetics sections from tool_conf.xml.sample and fastqc update to dance around EBI_SRA download bogus file extensions
Affected #: 3 files
diff -r cc25fdb717ebde12121948a318bb9d141eb6710a -r 34b03e0f3182af0601d747b7988308ddc2931149 tool_conf.xml.sample
--- a/tool_conf.xml.sample
+++ b/tool_conf.xml.sample
@@ -397,38 +397,6 @@
<section name="NGS: Simulation" id="ngs-simulation"><tool file="ngs_simulation/ngs_simulation.xml" /></section>
- <section name="SNP/WGA: Data; Filters" id="rgdat">
-
- <label text="Data: Import and upload" id="rgimport" />
- <tool file="data_source/upload.xml"/>
- <tool file="data_source/access_libraries.xml" />
-
- <label text="Data: Filter and Clean" id="rgfilter" />
- <tool file="rgenetics/rgClean.xml"/>
- <tool file="rgenetics/rgPedSub.xml"/>
- <tool file="rgenetics/rgLDIndep.xml"/>
-
- <label text="Simulate" id="rgsim" />
- <tool file="rgenetics/rgfakePhe.xml"/>
- <tool file="rgenetics/rgfakePed.xml"/>
- </section>
- <section name="SNP/WGA: QC; LD; Plots" id="rgqcplot">
-
- <label text="QC; Eigenstrat" id="rgvisual" />
- <tool file="rgenetics/rgQC.xml"/>
- <tool file="rgenetics/rgEigPCA.xml"/>
-
- <label text="LD; Manhattan/QQ; GRR" id="rgld" />
- <tool file="rgenetics/rgHaploView.xml"/>
- <tool file="rgenetics/rgManQQ.xml"/>
- <tool file="rgenetics/rgGRR.xml"/>
- </section>
- <section name="SNP/WGA: Statistical Models" id="rgmodel">
- <tool file="rgenetics/rgCaCo.xml"/>
- <tool file="rgenetics/rgTDT.xml"/>
- <tool file="rgenetics/rgGLM.xml"/>
- <tool file="rgenetics/rgManQQ.xml"/>
- </section><section name="Phenotype Association" id="hgv"><tool file="evolution/codingSnps.xml" /><tool file="evolution/add_scores.xml" />
diff -r cc25fdb717ebde12121948a318bb9d141eb6710a -r 34b03e0f3182af0601d747b7988308ddc2931149 tools/rgenetics/rgFastQC.py
--- a/tools/rgenetics/rgFastQC.py
+++ b/tools/rgenetics/rgFastQC.py
@@ -1,4 +1,5 @@
"""
+# May 2013 ross added check for bogus gz extension - fastqc gets confused
# added sanitizer for user supplied name
# removed shell and make cl a sequence for Popen call
# ross lazarus August 10 2012 in response to anon insecurity report
@@ -24,6 +25,8 @@
import shutil
import tempfile
from rgutils import getFileString
+import zipfile
+import gzip
class FastQC():
"""wrapper
@@ -56,7 +59,32 @@
cl.append('--contaminants=%s' % self.opts.contaminants)
# patch suggested by bwlang https://bitbucket.org/galaxy/galaxy-central/pull-request/30
# use a symlink in a temporary directory so that the FastQC report reflects the history input file name
- fastqinfilename = re.sub(ur'[^a-zA-Z0-9_\-\.]', '_', os.path.basename(self.opts.inputfilename))
+ infname = self.opts.inputfilename
+ linf = infname.lower()
+ trimext = False
+ isgz = linf.endswith('.gz') or linf.endswith('.gzip')
+ # decompression at upload currently does NOT remove this now bogus ending - fastqc will barf
+ # patched may 29 2013 until this is fixed properly
+ if isgz:
+ f = gzip.open(self.opts.input)
+ try:
+ testrow = f.readline()
+ except:
+ trimext = True
+ f.close()
+ elif linf.endswith('bz2'):
+ f = bz2.open(self.opts.input,'rb')
+ try:
+ f.readline()
+ except:
+ trimext = True
+ f.close()
+ elif linf.endswith('.zip'):
+ if not zipfile.is_zipfile(self.opts.input):
+ trimext = True
+ if trimext:
+ infname = os.path.splitext(infname)[0]
+ fastqinfilename = re.sub(ur'[^a-zA-Z0-9_\-\.]', '_', os.path.basename(infname))
link_name = os.path.join(self.opts.outputdir, fastqinfilename)
os.symlink(self.opts.input, link_name)
cl.append(link_name)
diff -r cc25fdb717ebde12121948a318bb9d141eb6710a -r 34b03e0f3182af0601d747b7988308ddc2931149 tools/rgenetics/rgFastQC.xml
--- a/tools/rgenetics/rgFastQC.xml
+++ b/tools/rgenetics/rgFastQC.xml
@@ -1,4 +1,4 @@
-<tool name="FastQC:Read QC" id="fastqc" version="0.51">
+<tool name="FastQC:Read QC" id="fastqc" version="0.52"><description>reports using FastQC</description><command interpreter="python">
rgFastQC.py -i "$input_file" -d "$html_file.files_path" -o "$html_file" -n "$out_prefix" -f "$input_file.ext" -j "$input_file.name" -e "${GALAXY_DATA_INDEX_DIR}/shared/jars/FastQC/fastqc"
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: carlfeberhard: Tools API: better error handling in create, encode ids returned; Scripts: add history_upload script to api
by commits-noreply@bitbucket.org 29 May '13
by commits-noreply@bitbucket.org 29 May '13
29 May '13
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/cc25fdb717eb/
Changeset: cc25fdb717eb
User: carlfeberhard
Date: 2013-05-29 23:28:47
Summary: Tools API: better error handling in create, encode ids returned; Scripts: add history_upload script to api
Affected #: 2 files
diff -r 93f6e07db8549411be10ba5385ba4cf9fab0c046 -r cc25fdb717ebde12121948a318bb9d141eb6710a lib/galaxy/webapps/galaxy/api/tools.py
--- a/lib/galaxy/webapps/galaxy/api/tools.py
+++ b/lib/galaxy/webapps/galaxy/api/tools.py
@@ -66,9 +66,9 @@
# -- Execute tool. --
# Get tool.
- tool_id = payload[ 'tool_id' ]
- tool = trans.app.toolbox.get_tool( tool_id )
+ tool = trans.app.toolbox.get_tool( payload[ 'tool_id' ] ) if 'tool_id' in payload else None
if not tool:
+ trans.response.status = 404
return { "message": { "type": "error", "text" : trans.app.model.Dataset.conversion_messages.NO_TOOL } }
# Set running history from payload parameters.
@@ -82,7 +82,7 @@
target_history = None
# Set up inputs.
- inputs = payload[ 'inputs' ]
+ inputs = payload.get( 'inputs', {} )
# Find files coming in as multipart file data and add to inputs.
for k, v in payload.iteritems():
if k.startswith("files_"):
@@ -91,17 +91,23 @@
# HACK: add run button so that tool.handle_input will run tool.
inputs['runtool_btn'] = 'Execute'
# TODO: encode data ids and decode ids.
+ # TODO: handle dbkeys
params = util.Params( inputs, sanitize = False )
- template, vars = tool.handle_input( trans, params.__dict__, history=target_history)
+ template, vars = tool.handle_input( trans, params.__dict__, history=target_history )
+ if 'errors' in vars:
+ trans.response.status = 400
+ return { "message": { "type": "error", "data" : vars[ 'errors' ] } }
# TODO: check for errors and ensure that output dataset(s) are available.
- output_datasets = vars.get('out_data', {}).values()
+ output_datasets = vars.get( 'out_data', {} ).values()
rval = {
"outputs": []
}
outputs = rval[ "outputs" ]
+ #TODO:?? poss. only return ids?
for output in output_datasets:
- outputs.append( output.get_api_value() )
+ output_dict = output.get_api_value()
+ outputs.append( trans.security.encode_dict_ids( output_dict ) )
return rval
#
diff -r 93f6e07db8549411be10ba5385ba4cf9fab0c046 -r cc25fdb717ebde12121948a318bb9d141eb6710a scripts/api/history_upload.py
--- /dev/null
+++ b/scripts/api/history_upload.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python
+"""
+Upload a file to the desired history.
+"""
+_USAGE = ( "history_upload.py <api key><galaxy base url><history id><filepath to upload>\n"
+ + " (where galaxy base url is just the root url where your Galaxy is served; e.g. 'localhost:8080')" )
+
+import os, sys, json, pprint
+#sys.path.insert( 0, os.path.dirname( __file__ ) )
+
+try:
+ import requests
+except ImportError, imp_err:
+ log.error( "Could not import the requests module. See http://docs.python-requests.org/en/latest/ or "
+ + "install with 'pip install requests'" )
+ raise
+
+def upload_file( full_url, api_key, history_id, filepath, **kwargs ):
+
+ payload = {
+ 'key' : api_key,
+ 'tool_id' : 'upload1',
+ 'history_id' : history_id,
+ }
+ inputs = {
+ 'files_0|NAME' : kwargs.get( 'filename', os.path.basename( filepath ) ),
+ 'files_0|type' : 'upload_dataset',
+ #TODO: the following doesn't work with tools.py
+ #'dbkey' : kwargs.get( 'dbkey', '?' ),
+ 'dbkey' : '?',
+ 'file_type' : kwargs.get( 'file_type', 'auto' ),
+ 'ajax_upload' : u'true',
+ 'async_datasets': '1',
+ }
+ payload[ 'inputs' ] = json.dumps( inputs )
+
+ response = None
+ with open( filepath, 'rb' ) as file_to_upload:
+ files = { 'files_0|file_data' : file_to_upload }
+ response = requests.post( full_url, data=payload, files=files )
+ return response
+
+if __name__ == '__main__':
+
+ if len( sys.argv ) < 5:
+ print _USAGE
+ sys.exit( 1 )
+
+ api_key, base_url, history_id, filepath = sys.argv[1:5]
+ full_url = base_url + '/api/tools'
+ kwargs = dict([ kwarg.split('=', 1) for kwarg in sys.argv[5:]])
+
+ response = upload_file( full_url, api_key, history_id, filepath, **kwargs )
+ print >> sys.stderr, response
+ print response.content
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