galaxy-commits
Threads by month
- ----- 2026 -----
- September
- August
- July
- June
- May
- 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
commit/galaxy-central: natefoo: Update tag for stable_2013.06.03
by commits-noreply@bitbucket.org 03 Jun '13
by commits-noreply@bitbucket.org 03 Jun '13
03 Jun '13
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/cea3ddf6cdda/
Changeset: cea3ddf6cdda
Branch: stable
User: natefoo
Date: 2013-06-03 22:17:31
Summary: Update tag for stable_2013.06.03
Affected #: 1 file
diff -r 524f246ca85395082719ae7a6ff72260d7ad5612 -r cea3ddf6cddaac2f8703598307449ffc13240efc .hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -2,4 +2,4 @@
1c717491139269651bb59687563da9410b84c65d release_2013.02.08
75f09617abaadbc8cc732bb8ee519decaeb56ea7 release_2013.04.01
2cc8d10988e03257dc7b97f8bb332c7df745d1dd security_2013.04.08
-58811a78af8a09b77405dc343a5b2795f4cc6e88 release_2013.06.03
+524f246ca85395082719ae7a6ff72260d7ad5612 release_2013.06.03
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: Dave Bouvier: Cleanup after merge conflict.
by commits-noreply@bitbucket.org 03 Jun '13
by commits-noreply@bitbucket.org 03 Jun '13
03 Jun '13
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/524f246ca853/
Changeset: 524f246ca853
Branch: stable
User: Dave Bouvier
Date: 2013-06-03 22:12:24
Summary: Cleanup after merge conflict.
Affected #: 1 file
diff -r 776ac26512144a65593ab999dafa2217bd2c4153 -r 524f246ca85395082719ae7a6ff72260d7ad5612 templates/webapps/tool_shed/index.mako
--- a/templates/webapps/tool_shed/index.mako
+++ b/templates/webapps/tool_shed/index.mako
@@ -92,14 +92,11 @@
<a target="galaxy_main" href="${h.url_for( controller='repository', action='browse_categories' )}">Browse by category</a></div>
%if trans.user:
- <div class="toolSectionPad"></div>
- <div class="toolSectionTitle">
- Repositories I Can Change
- </div>
- <div class="toolTitle">
- <a target="galaxy_main" href="${h.url_for( controller='repository', action='browse_repositories_i_own' )}">Repositories I own</a>
- </div>
- %if has_reviewed_repositories:
+ %if trans.user.active_repositories:
+ <div class="toolSectionPad"></div>
+ <div class="toolSectionTitle">
+ Repositories I Can Change
+ </div><div class="toolTitle"><a target="galaxy_main" href="${h.url_for( controller='repository', action='browse_repositories_i_own' )}">Repositories I own</a></div>
@@ -138,32 +135,6 @@
<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:
- <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='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><div class="toolSectionPad"></div><div class="toolSectionTitle">
Available Actions
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
3 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/7740b1dc41fa/
Changeset: 7740b1dc41fa
Branch: next-stable
User: natefoo
Date: 2013-06-03 21:43:31
Summary: Close the next-stable branch.
Affected #: 0 files
https://bitbucket.org/galaxy/galaxy-central/commits/58811a78af8a/
Changeset: 58811a78af8a
Branch: stable
User: natefoo
Date: 2013-06-03 21:44:31
Summary: Merge changes from next-stable to stable.
Affected #: 626 files
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 .hgignore
--- a/.hgignore
+++ b/.hgignore
@@ -20,6 +20,7 @@
database/pbs
database/tmp
database/*.sqlite
+database/openid_consumer_cache
# Python bytecode
*.pyc
@@ -35,6 +36,11 @@
tool_shed_webapp.pid
hgweb.config*
+# Reports Runtime Files
+reports_webapp.lock
+reports_webapp.log
+reports_webapp.pid
+
# Config files
universe_wsgi.ini
reports_wsgi.ini
@@ -54,7 +60,7 @@
job_conf.xml
data_manager_conf.xml
shed_data_manager_conf.xml
-
+visualizations_conf.xml
static/welcome.html.*
static/welcome.html
@@ -75,6 +81,7 @@
# Test output
run_functional_tests.html
+test/tool_shed/tmp/*
# Project files
*.kpf
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 buildbot_setup.sh
--- a/buildbot_setup.sh
+++ b/buildbot_setup.sh
@@ -93,26 +93,49 @@
JARS="/galaxy/software/jars"
-for link in $LINKS; do
- echo "Linking $link"
- rm -f tool-data/`basename $link`
- ln -sf $link tool-data
-done
-
-if [ -d "$HYPHY" ]; then
- echo "Linking $HYPHY"
- rm -f tool-data/HYPHY
- ln -sf $HYPHY tool-data/HYPHY
+if [ ! $1 ]; then
+ type="standard"
+elif [ $1 == "-ec2" ]; then
+ type="external-ec2"
+else
+ type="unknown"
fi
-if [ -d "$JARS" ]; then
- echo "Linking $JARS"
- rm -f tool-data/shared/jars
- ln -sf $JARS tool-data/shared/jars
-fi
+case $type in
+ external*)
+ echo "Running standalone buildbot setup..."
+ for sample in tool-data/*.sample; do
+ basename=${sample%.sample}
+ if [ ! -f $basename ]; then
+ echo "Copying $sample to $basename"
+ cp "$sample" "$basename"
+ fi
+ done
+ ;;
+ *)
+ echo "Running standard buildbot setup..."
+ for link in $LINKS; do
+ echo "Linking $link"
+ rm -f tool-data/`basename $link`
+ ln -sf $link tool-data
+ done
+
+ if [ -d "$HYPHY" ]; then
+ echo "Linking $HYPHY"
+ rm -f tool-data/HYPHY
+ ln -sf $HYPHY tool-data/HYPHY
+ fi
+
+ if [ -d "$JARS" ]; then
+ echo "Linking $JARS"
+ rm -f tool-data/shared/jars
+ ln -sf $JARS tool-data/shared/jars
+ fi
+ ;;
+esac
for sample in $SAMPLES; do
- file=`echo $sample | sed -e 's/\.sample$//'`
+ file=${sample%.sample}
echo "Copying $sample to $file"
cp $sample $file
done
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 datatypes_conf.xml.sample
--- a/datatypes_conf.xml.sample
+++ b/datatypes_conf.xml.sample
@@ -3,16 +3,13 @@
<registration converters_path="lib/galaxy/datatypes/converters" display_path="display_applications"><datatype extension="ab1" type="galaxy.datatypes.binary:Ab1" mimetype="application/octet-stream" display_in_upload="true"/><datatype extension="afg" type="galaxy.datatypes.assembly:Amos" display_in_upload="false"/>
+ <datatype extension="asn1" type="galaxy.datatypes.data:GenericAsn1" mimetype="text/plain" display_in_upload="true" />
+ <datatype extension="asn1-binary" type="galaxy.datatypes.binary:GenericAsn1Binary" mimetype="application/octet-stream" display_in_upload="true" /><datatype extension="axt" type="galaxy.datatypes.sequence:Axt" display_in_upload="true"/><datatype extension="fli" type="galaxy.datatypes.tabular:FeatureLocationIndex" display_in_upload="false"/><datatype extension="bam" type="galaxy.datatypes.binary:Bam" mimetype="application/octet-stream" display_in_upload="true"><converter file="bam_to_bai.xml" target_datatype="bai"/>
- <converter file="bam_to_summary_tree_converter.xml" target_datatype="summary_tree"/>
- <!--
- Caution: (a) this converter requires bedtools to be installed and (b) it is very memory intensive and
- is not recommended for most laptops/desktops.
- <converter file="bam_to_bigwig_converter.xml" target_datatype="bigwig"/>
- -->
+ <converter file="bam_to_bigwig_converter.xml" target_datatype="bigwig"/><display file="ucsc/bam.xml" /><display file="ensembl/ensembl_bam.xml" /><display file="igv/bam.xml" />
@@ -20,10 +17,9 @@
</datatype><datatype extension="bed" type="galaxy.datatypes.interval:Bed" display_in_upload="true"><converter file="bed_to_gff_converter.xml" target_datatype="gff"/>
- <converter file="interval_to_coverage.xml" target_datatype="coverage"/><converter file="bed_to_bgzip_converter.xml" target_datatype="bgzip"/><converter file="bed_to_tabix_converter.xml" target_datatype="tabix" depends_on="bgzip"/>
- <converter file="bed_to_summary_tree_converter.xml" target_datatype="summary_tree"/>
+ <converter file="bed_gff_or_vcf_to_bigwig_converter.xml" target_datatype="bigwig"/><converter file="bed_to_fli_converter.xml" target_datatype="fli"/><!-- <display file="ucsc/interval_as_bed.xml" /> --><display file="igb/bed.xml" />
@@ -49,7 +45,7 @@
<datatype extension="chrint" type="galaxy.datatypes.interval:ChromatinInteractions" display_in_upload="True"><converter file="interval_to_bgzip_converter.xml" target_datatype="bgzip"/><converter file="interval_to_tabix_converter.xml" target_datatype="tabix" depends_on="bgzip"/>
- <converter file="interval_to_summary_tree_converter.xml" target_datatype="summary_tree"/>
+ <converter file="bed_gff_or_vcf_to_bigwig_converter.xml" target_datatype="bigwig"/></datatype><!-- MSI added Datatypes --><datatype extension="csv" type="galaxy.datatypes.tabular:Tabular" subclass="True" display_in_upload="true" /><!-- FIXME: csv is 'tabular'ized data, but not 'tab-delimited'; the class used here is intended for 'tab-delimited' -->
@@ -91,7 +87,7 @@
<datatype extension="gff" type="galaxy.datatypes.interval:Gff" display_in_upload="true"><converter file="gff_to_bed_converter.xml" target_datatype="bed"/><converter file="gff_to_interval_index_converter.xml" target_datatype="interval_index"/>
- <converter file="gff_to_summary_tree_converter.xml" target_datatype="summary_tree"/>
+ <converter file="bed_gff_or_vcf_to_bigwig_converter.xml" target_datatype="bigwig"/><converter file="gff_to_fli_converter.xml" target_datatype="fli"/><display file="ensembl/ensembl_gff.xml" inherit="True"/><!-- <display file="gbrowse/gbrowse_gff.xml" inherit="True" /> -->
@@ -101,7 +97,7 @@
<datatype extension="gmaj.zip" type="galaxy.datatypes.images:Gmaj" mimetype="application/zip"/><datatype extension="gtf" type="galaxy.datatypes.interval:Gtf" display_in_upload="true"><converter file="gff_to_interval_index_converter.xml" target_datatype="interval_index"/>
- <converter file="gff_to_summary_tree_converter.xml" target_datatype="summary_tree"/>
+ <converter file="bed_gff_or_vcf_to_bigwig_converter.xml" target_datatype="bigwig"/></datatype><datatype extension="toolshed.gz" type="galaxy.datatypes.binary:Binary" mimetype="multipart/x-gzip" subclass="True" /><datatype extension="h5" type="galaxy.datatypes.binary:Binary" mimetype="application/octet-stream" subclass="True" />
@@ -113,7 +109,7 @@
<converter file="interval_to_bed12_converter.xml" target_datatype="bed12"/><converter file="interval_to_bgzip_converter.xml" target_datatype="bgzip"/><converter file="interval_to_tabix_converter.xml" target_datatype="tabix" depends_on="bgzip"/>
- <converter file="interval_to_summary_tree_converter.xml" target_datatype="summary_tree"/>
+ <converter file="interval_to_bigwig_converter.xml" target_datatype="bigwig"/><!-- <display file="ucsc/interval_as_bed.xml" inherit="True" /> --><display file="ensembl/ensembl_interval_as_bed.xml" inherit="True"/><display file="gbrowse/gbrowse_interval_as_bed.xml" inherit="True"/>
@@ -154,10 +150,13 @@
<datatype extension="encodepeak" type="galaxy.datatypes.interval:ENCODEPeak" display_in_upload="True"><converter file="encodepeak_to_tabix_converter.xml" target_datatype="tabix" depends_on="bgzip"/><converter file="encodepeak_to_bgzip_converter.xml" target_datatype="bgzip"/>
- <converter file="encodepeak_to_summary_tree_converter.xml" target_datatype="summary_tree"/>
+ <converter file="bed_gff_or_vcf_to_bigwig_converter.xml" target_datatype="bigwig"/></datatype><datatype extension="pdf" type="galaxy.datatypes.images:Pdf" mimetype="application/pdf"/>
- <datatype extension="pileup" type="galaxy.datatypes.tabular:Pileup" display_in_upload="true" />
+ <datatype extension="pileup" type="galaxy.datatypes.tabular:Pileup" display_in_upload="true">
+ <converter file="interval_to_bgzip_converter.xml" target_datatype="bgzip"/>
+ <converter file="interval_to_tabix_converter.xml" target_datatype="tabix" depends_on="bgzip"/>
+ </datatype><datatype extension="png" type="galaxy.datatypes.images:Png" mimetype="image/png"/><datatype extension="qual" type="galaxy.datatypes.qualityscore:QualityScore" /><datatype extension="qualsolexa" type="galaxy.datatypes.qualityscore:QualityScoreSolexa" display_in_upload="true"/>
@@ -167,7 +166,7 @@
<datatype extension="Roadmaps" type="galaxy.datatypes.assembly:Roadmaps" display_in_upload="false"/><datatype extension="sam" type="galaxy.datatypes.tabular:Sam" display_in_upload="true"><converter file="sam_to_bam.xml" target_datatype="bam"/>
- <converter file="sam_to_summary_tree_converter.xml" target_datatype="summary_tree"/>
+ <converter file="sam_to_bigwig_converter.xml" target_datatype="bigwig"/></datatype><datatype extension="scf" type="galaxy.datatypes.binary:Scf" mimetype="application/octet-stream" display_in_upload="true"/><datatype extension="Sequences" type="galaxy.datatypes.assembly:Sequences" display_in_upload="false"/>
@@ -185,7 +184,7 @@
<converter file="vcf_to_bgzip_converter.xml" target_datatype="bgzip"/><converter file="vcf_to_vcf_bgzip_converter.xml" target_datatype="vcf_bgzip"/><converter file="vcf_to_tabix_converter.xml" target_datatype="tabix" depends_on="bgzip"/>
- <converter file="vcf_to_summary_tree_converter.xml" target_datatype="summary_tree"/>
+ <converter file="bed_gff_or_vcf_to_bigwig_converter.xml" target_datatype="bigwig"/><display file="ucsc/vcf.xml" /><display file="igv/vcf.xml" /><display file="rviewer/vcf.xml" inherit="True"/>
@@ -198,7 +197,6 @@
<!-- <display file="gbrowse/gbrowse_wig.xml" /> --><display file="igb/wig.xml" /></datatype>
- <datatype extension="summary_tree" type="galaxy.datatypes.binary:Binary" subclass="True" /><datatype extension="interval_index" type="galaxy.datatypes.binary:Binary" subclass="True" /><datatype extension="tabix" type="galaxy.datatypes.binary:Binary" subclass="True" /><datatype extension="bgzip" type="galaxy.datatypes.binary:Binary" subclass="True" />
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 doc/source/lib/galaxy.webapps.tool_shed.api.rst
--- /dev/null
+++ b/doc/source/lib/galaxy.webapps.tool_shed.api.rst
@@ -0,0 +1,19 @@
+api Package
+===========
+
+:mod:`repositories` Module
+--------------------------
+
+.. automodule:: galaxy.webapps.tool_shed.api.repositories
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`repository_revisions` Module
+----------------------------------
+
+.. automodule:: galaxy.webapps.tool_shed.api.repository_revisions
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 doc/source/lib/galaxy.webapps.tool_shed.controllers.rst
--- /dev/null
+++ b/doc/source/lib/galaxy.webapps.tool_shed.controllers.rst
@@ -0,0 +1,59 @@
+controllers Package
+===================
+
+:mod:`controllers` Package
+--------------------------
+
+.. automodule:: galaxy.webapps.tool_shed.controllers
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`admin` Module
+-------------------
+
+.. automodule:: galaxy.webapps.tool_shed.controllers.admin
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`hg` Module
+----------------
+
+.. automodule:: galaxy.webapps.tool_shed.controllers.hg
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`repository` Module
+------------------------
+
+.. automodule:: galaxy.webapps.tool_shed.controllers.repository
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`repository_review` Module
+-------------------------------
+
+.. automodule:: galaxy.webapps.tool_shed.controllers.repository_review
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`upload` Module
+--------------------
+
+.. automodule:: galaxy.webapps.tool_shed.controllers.upload
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`user` Module
+------------------
+
+.. automodule:: galaxy.webapps.tool_shed.controllers.user
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 doc/source/lib/galaxy.webapps.tool_shed.framework.middleware.rst
--- /dev/null
+++ b/doc/source/lib/galaxy.webapps.tool_shed.framework.middleware.rst
@@ -0,0 +1,27 @@
+middleware Package
+==================
+
+:mod:`middleware` Package
+-------------------------
+
+.. automodule:: galaxy.webapps.tool_shed.framework.middleware
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`hg` Module
+----------------
+
+.. automodule:: galaxy.webapps.tool_shed.framework.middleware.hg
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`remoteuser` Module
+------------------------
+
+.. automodule:: galaxy.webapps.tool_shed.framework.middleware.remoteuser
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 doc/source/lib/galaxy.webapps.tool_shed.framework.rst
--- /dev/null
+++ b/doc/source/lib/galaxy.webapps.tool_shed.framework.rst
@@ -0,0 +1,18 @@
+framework Package
+=================
+
+:mod:`framework` Package
+------------------------
+
+.. automodule:: galaxy.webapps.tool_shed.framework
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+Subpackages
+-----------
+
+.. toctree::
+
+ galaxy.webapps.tool_shed.framework.middleware
+
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 doc/source/lib/galaxy.webapps.tool_shed.model.migrate.rst
--- /dev/null
+++ b/doc/source/lib/galaxy.webapps.tool_shed.model.migrate.rst
@@ -0,0 +1,11 @@
+migrate Package
+===============
+
+:mod:`check` Module
+-------------------
+
+.. automodule:: galaxy.webapps.tool_shed.model.migrate.check
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 doc/source/lib/galaxy.webapps.tool_shed.model.rst
--- /dev/null
+++ b/doc/source/lib/galaxy.webapps.tool_shed.model.rst
@@ -0,0 +1,26 @@
+model Package
+=============
+
+:mod:`model` Package
+--------------------
+
+.. automodule:: galaxy.webapps.tool_shed.model
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`mapping` Module
+---------------------
+
+.. automodule:: galaxy.webapps.tool_shed.model.mapping
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+Subpackages
+-----------
+
+.. toctree::
+
+ galaxy.webapps.tool_shed.model.migrate
+
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 doc/source/lib/galaxy.webapps.tool_shed.rst
--- /dev/null
+++ b/doc/source/lib/galaxy.webapps.tool_shed.rst
@@ -0,0 +1,47 @@
+tool_shed Package
+=================
+
+:mod:`tool_shed` Package
+------------------------
+
+.. automodule:: galaxy.webapps.tool_shed
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`app` Module
+-----------------
+
+.. automodule:: galaxy.webapps.tool_shed.app
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`buildapp` Module
+----------------------
+
+.. automodule:: galaxy.webapps.tool_shed.buildapp
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`config` Module
+--------------------
+
+.. automodule:: galaxy.webapps.tool_shed.config
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+Subpackages
+-----------
+
+.. toctree::
+
+ galaxy.webapps.tool_shed.api
+ galaxy.webapps.tool_shed.controllers
+ galaxy.webapps.tool_shed.framework
+ galaxy.webapps.tool_shed.model
+ galaxy.webapps.tool_shed.security
+ galaxy.webapps.tool_shed.util
+
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 doc/source/lib/galaxy.webapps.tool_shed.security.rst
--- /dev/null
+++ b/doc/source/lib/galaxy.webapps.tool_shed.security.rst
@@ -0,0 +1,11 @@
+security Package
+================
+
+:mod:`security` Package
+-----------------------
+
+.. automodule:: galaxy.webapps.tool_shed.security
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 doc/source/lib/galaxy.webapps.tool_shed.util.rst
--- /dev/null
+++ b/doc/source/lib/galaxy.webapps.tool_shed.util.rst
@@ -0,0 +1,35 @@
+util Package
+============
+
+:mod:`common_util` Module
+-------------------------
+
+.. automodule:: galaxy.webapps.tool_shed.util.common_util
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`container_util` Module
+----------------------------
+
+.. automodule:: galaxy.webapps.tool_shed.util.container_util
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`hgweb_config` Module
+--------------------------
+
+.. automodule:: galaxy.webapps.tool_shed.util.hgweb_config
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`shed_statistics` Module
+-----------------------------
+
+.. automodule:: galaxy.webapps.tool_shed.util.shed_statistics
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 doc/source/lib/tool_shed.galaxy_install.grids.rst
--- /dev/null
+++ b/doc/source/lib/tool_shed.galaxy_install.grids.rst
@@ -0,0 +1,11 @@
+grids Package
+=============
+
+:mod:`admin_toolshed_grids` Module
+----------------------------------
+
+.. automodule:: tool_shed.galaxy_install.grids.admin_toolshed_grids
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 doc/source/lib/tool_shed.galaxy_install.migrate.rst
--- /dev/null
+++ b/doc/source/lib/tool_shed.galaxy_install.migrate.rst
@@ -0,0 +1,19 @@
+migrate Package
+===============
+
+:mod:`check` Module
+-------------------
+
+.. automodule:: tool_shed.galaxy_install.migrate.check
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`common` Module
+--------------------
+
+.. automodule:: tool_shed.galaxy_install.migrate.common
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 doc/source/lib/tool_shed.galaxy_install.rst
--- /dev/null
+++ b/doc/source/lib/tool_shed.galaxy_install.rst
@@ -0,0 +1,44 @@
+galaxy_install Package
+======================
+
+:mod:`galaxy_install` Package
+-----------------------------
+
+.. automodule:: tool_shed.galaxy_install
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`install_manager` Module
+-----------------------------
+
+.. automodule:: tool_shed.galaxy_install.install_manager
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`repository_util` Module
+-----------------------------
+
+.. automodule:: tool_shed.galaxy_install.repository_util
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`update_manager` Module
+----------------------------
+
+.. automodule:: tool_shed.galaxy_install.update_manager
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+Subpackages
+-----------
+
+.. toctree::
+
+ tool_shed.galaxy_install.grids
+ tool_shed.galaxy_install.migrate
+ tool_shed.galaxy_install.tool_dependencies
+
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 doc/source/lib/tool_shed.galaxy_install.tool_dependencies.rst
--- /dev/null
+++ b/doc/source/lib/tool_shed.galaxy_install.tool_dependencies.rst
@@ -0,0 +1,27 @@
+tool_dependencies Package
+=========================
+
+:mod:`common_util` Module
+-------------------------
+
+.. automodule:: tool_shed.galaxy_install.tool_dependencies.common_util
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`fabric_util` Module
+-------------------------
+
+.. automodule:: tool_shed.galaxy_install.tool_dependencies.fabric_util
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`install_util` Module
+--------------------------
+
+.. automodule:: tool_shed.galaxy_install.tool_dependencies.install_util
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 doc/source/lib/tool_shed.grids.rst
--- /dev/null
+++ b/doc/source/lib/tool_shed.grids.rst
@@ -0,0 +1,35 @@
+grids Package
+=============
+
+:mod:`admin_grids` Module
+-------------------------
+
+.. automodule:: tool_shed.grids.admin_grids
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`repository_grids` Module
+------------------------------
+
+.. automodule:: tool_shed.grids.repository_grids
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`repository_review_grids` Module
+-------------------------------------
+
+.. automodule:: tool_shed.grids.repository_review_grids
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`util` Module
+------------------
+
+.. automodule:: tool_shed.grids.util
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 doc/source/lib/tool_shed.rst
--- /dev/null
+++ b/doc/source/lib/tool_shed.rst
@@ -0,0 +1,20 @@
+tool_shed Package
+=================
+
+:mod:`tool_shed_registry` Module
+--------------------------------
+
+.. automodule:: tool_shed.tool_shed_registry
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+Subpackages
+-----------
+
+.. toctree::
+
+ tool_shed.galaxy_install
+ tool_shed.grids
+ tool_shed.util
+
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 doc/source/lib/tool_shed.util.rst
--- /dev/null
+++ b/doc/source/lib/tool_shed.util.rst
@@ -0,0 +1,107 @@
+util Package
+============
+
+:mod:`common_install_util` Module
+---------------------------------
+
+.. automodule:: tool_shed.util.common_install_util
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`common_util` Module
+-------------------------
+
+.. automodule:: tool_shed.util.common_util
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`data_manager_util` Module
+-------------------------------
+
+.. automodule:: tool_shed.util.data_manager_util
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`datatype_util` Module
+---------------------------
+
+.. automodule:: tool_shed.util.datatype_util
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`encoding_util` Module
+---------------------------
+
+.. automodule:: tool_shed.util.encoding_util
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`metadata_util` Module
+---------------------------
+
+.. automodule:: tool_shed.util.metadata_util
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`readme_util` Module
+-------------------------
+
+.. automodule:: tool_shed.util.readme_util
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`repository_dependency_util` Module
+----------------------------------------
+
+.. automodule:: tool_shed.util.repository_dependency_util
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`review_util` Module
+-------------------------
+
+.. automodule:: tool_shed.util.review_util
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`shed_util_common` Module
+------------------------------
+
+.. automodule:: tool_shed.util.shed_util_common
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`tool_dependency_util` Module
+----------------------------------
+
+.. automodule:: tool_shed.util.tool_dependency_util
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`tool_util` Module
+-----------------------
+
+.. automodule:: tool_shed.util.tool_util
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+:mod:`workflow_util` Module
+---------------------------
+
+.. automodule:: tool_shed.util.workflow_util
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 eggs.ini
--- a/eggs.ini
+++ b/eggs.ini
@@ -14,7 +14,6 @@
[eggs:platform]
bx_python = 0.7.1
Cheetah = 2.2.2
-ctypes = 1.0.2
DRMAA_python = 0.2
MarkupSafe = 0.12
mercurial = 2.2.3
@@ -29,6 +28,7 @@
simplejson = 2.1.1
threadframe = 0.2
guppy = 0.1.8
+SQLAlchemy = 0.7.9
; msgpack_python = 0.2.4
[eggs:noplatform]
@@ -46,17 +46,17 @@
nose = 0.11.1
NoseHTML = 0.4.1
NoseTestDiff = 0.1
+Parsley = 1.1
Paste = 1.7.5.1
PasteDeploy = 1.5.0
pexpect = 2.4
python_openid = 2.2.5
python_daemon = 1.5.5
Routes = 1.12.3
-SQLAlchemy = 0.5.6
-sqlalchemy_migrate = 0.5.4
+sqlalchemy_migrate = 0.7.2
ssh = 1.7.14
SVGFig = 1.1.6
-Tempita = 0.1
+Tempita = 0.5.1
twill = 0.9
WebError = 0.8a
WebHelpers = 0.2
@@ -75,7 +75,6 @@
MySQL_python = _5.1.41_static
bx_python = _7b95ff194725
GeneTrack = _dev_48da9e998f0caf01c5be731e926f4b0481f658f0
-SQLAlchemy = _dev_r6498
pysam = _kanwei_b10f6e722e9a
; dependency source urls, necessary for scrambling. for an explanation, see
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 job_conf.xml.sample_advanced
--- a/job_conf.xml.sample_advanced
+++ b/job_conf.xml.sample_advanced
@@ -7,7 +7,7 @@
<plugin id="local" type="runner" load="galaxy.jobs.runners.local:LocalJobRunner"/><plugin id="pbs" type="runner" load="galaxy.jobs.runners.pbs:PBSJobRunner" workers="2"/><plugin id="drmaa" type="runner" load="galaxy.jobs.runners.drmaa:DRMAAJobRunner"/>
- <plugin id="lwr" type="runner" load="galaxy.jobs.runners.lwr.LwrJobRunner" /><!-- https://lwr.readthedocs.org -->
+ <plugin id="lwr" type="runner" load="galaxy.jobs.runners.lwr:LwrJobRunner" /><!-- https://lwr.readthedocs.org --><plugin id="cli" type="runner" load="galaxy.jobs.runners.cli:ShellJobRunner" /><plugin id="condor" type="runner" load="galaxy.jobs.runners.condor:CondorJobRunner" /></plugins>
@@ -40,7 +40,6 @@
</destination><destination id="dynamic" runner="dynamic"><!-- A destination that represents a method in the dynamic runner. -->
- <param id="type">python</param><param id="function">foo</param></destination><destination id="secure_lwr" runner="lwr">
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/fpconst.py
--- a/lib/fpconst.py
+++ /dev/null
@@ -1,163 +0,0 @@
-"""Utilities for handling IEEE 754 floating point special values
-
-This python module implements constants and functions for working with
-IEEE754 double-precision special values. It provides constants for
-Not-a-Number (NaN), Positive Infinity (PosInf), and Negative Infinity
-(NegInf), as well as functions to test for these values.
-
-The code is implemented in pure python by taking advantage of the
-'struct' standard module. Care has been taken to generate proper
-results on both big-endian and little-endian machines. Some efficiency
-could be gained by translating the core routines into C.
-
-See <http://babbage.cs.qc.edu/courses/cs341/IEEE-754references.html>
-for reference material on the IEEE 754 floating point standard.
-
-Further information on this package is available at
-<http://www.analytics.washington.edu/statcomp/projects/rzope/fpconst/>.
-
-Author: Gregory R. Warnes <gregory_r_warnes(a)groton.pfizer.com>
-Date:: 2003-04-08
-Copyright: (c) 2003, Pfizer, Inc.
-"""
-
-__version__ = "0.7.0"
-ident = "$Id: fpconst.py,v 1.12 2004/05/22 04:38:17 warnes Exp $"
-
-import struct, operator
-
-# check endianess
-_big_endian = struct.pack('i',1)[0] != '\x01'
-
-# and define appropriate constants
-if(_big_endian):
- NaN = struct.unpack('d', '\x7F\xF8\x00\x00\x00\x00\x00\x00')[0]
- PosInf = struct.unpack('d', '\x7F\xF0\x00\x00\x00\x00\x00\x00')[0]
- NegInf = -PosInf
-else:
- NaN = struct.unpack('d', '\x00\x00\x00\x00\x00\x00\xf8\xff')[0]
- PosInf = struct.unpack('d', '\x00\x00\x00\x00\x00\x00\xf0\x7f')[0]
- NegInf = -PosInf
-
-def _double_as_bytes(dval):
- "Use struct.unpack to decode a double precision float into eight bytes"
- tmp = list(struct.unpack('8B',struct.pack('d', dval)))
- if not _big_endian:
- tmp.reverse()
- return tmp
-
-##
-## Functions to extract components of the IEEE 754 floating point format
-##
-
-def _sign(dval):
- "Extract the sign bit from a double-precision floating point value"
- bb = _double_as_bytes(dval)
- return bb[0] >> 7 & 0x01
-
-def _exponent(dval):
- """Extract the exponentent bits from a double-precision floating
- point value.
-
- Note that for normalized values, the exponent bits have an offset
- of 1023. As a consequence, the actual exponentent is obtained
- by subtracting 1023 from the value returned by this function
- """
- bb = _double_as_bytes(dval)
- return (bb[0] << 4 | bb[1] >> 4) & 0x7ff
-
-def _mantissa(dval):
- """Extract the _mantissa bits from a double-precision floating
- point value."""
-
- bb = _double_as_bytes(dval)
- mantissa = bb[1] & 0x0f << 48
- mantissa += bb[2] << 40
- mantissa += bb[3] << 32
- mantissa += bb[4]
- return mantissa
-
-def _zero_mantissa(dval):
- """Determine whether the mantissa bits of the given double are all
- zero."""
- bb = _double_as_bytes(dval)
- return ((bb[1] & 0x0f) | reduce(operator.or_, bb[2:])) == 0
-
-##
-## Functions to test for IEEE 754 special values
-##
-
-def isNaN(value):
- "Determine if the argument is a IEEE 754 NaN (Not a Number) value."
- return (_exponent(value)==0x7ff and not _zero_mantissa(value))
-
-def isInf(value):
- """Determine if the argument is an infinite IEEE 754 value (positive
- or negative inifinity)"""
- return (_exponent(value)==0x7ff and _zero_mantissa(value))
-
-def isFinite(value):
- """Determine if the argument is an finite IEEE 754 value (i.e., is
- not NaN, positive or negative inifinity)"""
- return (_exponent(value)!=0x7ff)
-
-def isPosInf(value):
- "Determine if the argument is a IEEE 754 positive infinity value"
- return (_sign(value)==0 and _exponent(value)==0x7ff and \
- _zero_mantissa(value))
-
-def isNegInf(value):
- "Determine if the argument is a IEEE 754 negative infinity value"
- return (_sign(value)==1 and _exponent(value)==0x7ff and \
- _zero_mantissa(value))
-
-##
-## Functions to test public functions.
-##
-
-def test_isNaN():
- assert( not isNaN(PosInf) )
- assert( not isNaN(NegInf) )
- assert( isNaN(NaN ) )
- assert( not isNaN( 1.0) )
- assert( not isNaN( -1.0) )
-
-def test_isInf():
- assert( isInf(PosInf) )
- assert( isInf(NegInf) )
- assert( not isInf(NaN ) )
- assert( not isInf( 1.0) )
- assert( not isInf( -1.0) )
-
-def test_isFinite():
- assert( not isFinite(PosInf) )
- assert( not isFinite(NegInf) )
- assert( not isFinite(NaN ) )
- assert( isFinite( 1.0) )
- assert( isFinite( -1.0) )
-
-def test_isPosInf():
- assert( isPosInf(PosInf) )
- assert( not isPosInf(NegInf) )
- assert( not isPosInf(NaN ) )
- assert( not isPosInf( 1.0) )
- assert( not isPosInf( -1.0) )
-
-def test_isNegInf():
- assert( not isNegInf(PosInf) )
- assert( isNegInf(NegInf) )
- assert( not isNegInf(NaN ) )
- assert( not isNegInf( 1.0) )
- assert( not isNegInf( -1.0) )
-
-# overall test
-def test():
- test_isNaN()
- test_isInf()
- test_isFinite()
- test_isPosInf()
- test_isNegInf()
-
-if __name__ == "__main__":
- test()
-
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/__init__.py
--- a/lib/galaxy/__init__.py
+++ b/lib/galaxy/__init__.py
@@ -95,10 +95,15 @@
pkg_resources.Distribution._insert_on = pkg_resources.Distribution.insert_on
pkg_resources.Distribution.insert_on = _insert_on
-# patch to add the NullHandler class to logging
-if sys.version_info[:2] < ( 2, 7 ):
- import logging
+# compat: BadZipFile introduced in Python 2.7
+import zipfile
+if not hasattr( zipfile, 'BadZipFile' ):
+ zipfile.BadZipFile = zipfile.error
+
+# compat: patch to add the NullHandler class to logging
+import logging
+if not hasattr( logging, 'NullHandler' ):
class NullHandler( logging.Handler ):
def emit( self, record ):
pass
- logging.NullHandler = NullHandler
+ logging.NullHandler = NullHandler
\ No newline at end of file
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/app.py
--- a/lib/galaxy/app.py
+++ b/lib/galaxy/app.py
@@ -15,6 +15,7 @@
from galaxy.tags.tag_handler import GalaxyTagHandler
from galaxy.visualization.genomes import Genomes
from galaxy.visualization.data_providers.registry import DataProviderRegistry
+from galaxy.visualization.registry import VisualizationsRegistry
from galaxy.tools.imp_exp import load_history_imp_exp_tools
from galaxy.tools.genome_index import load_genome_index_tools
from galaxy.sample_tracking import external_service_types
@@ -61,7 +62,8 @@
self.config.database_engine_options,
database_query_profiling_proxy = self.config.database_query_profiling_proxy,
object_store = self.object_store,
- trace_logger=self.trace_logger )
+ trace_logger=self.trace_logger,
+ use_pbkdf2=self.config.get_bool( 'use_pbkdf2', True ) )
# Manage installed tool shed repositories.
self.installed_repository_manager = tool_shed.galaxy_install.InstalledRepositoryManager( self )
# Create an empty datatypes registry.
@@ -120,6 +122,9 @@
load_history_imp_exp_tools( self.toolbox )
# Load genome indexer tool.
load_genome_index_tools( self.toolbox )
+ # visualizations registry: associates resources with visualizations, controls how to render
+ self.visualizations_registry = ( VisualizationsRegistry( self.config.root, self.config.visualizations_conf_path )
+ if self.config.visualizations_conf_path else None )
# Load security policy.
self.security_agent = self.model.security_agent
self.host_security_agent = galaxy.security.HostAgent( model=self.security_agent.model, permitted_actions=self.security_agent.permitted_actions )
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/config.py
--- a/lib/galaxy/config.py
+++ b/lib/galaxy/config.py
@@ -86,7 +86,6 @@
self.galaxy_data_manager_data_path = kwargs.get( 'galaxy_data_manager_data_path', self.tool_data_path )
self.tool_secret = kwargs.get( "tool_secret", "" )
self.id_secret = kwargs.get( "id_secret", "USING THE DEFAULT IS NOT SECURE!" )
- self.set_metadata_externally = string_as_bool( kwargs.get( "set_metadata_externally", "False" ) )
self.retry_metadata_internally = string_as_bool( kwargs.get( "retry_metadata_internally", "True" ) )
self.use_remote_user = string_as_bool( kwargs.get( "use_remote_user", "False" ) )
self.remote_user_maildomain = kwargs.get( "remote_user_maildomain", None )
@@ -155,6 +154,10 @@
self.ucsc_display_sites = kwargs.get( 'ucsc_display_sites', "main,test,archaea,ucla" ).lower().split(",")
self.gbrowse_display_sites = kwargs.get( 'gbrowse_display_sites', "modencode,sgd_yeast,tair,wormbase,wormbase_ws120,wormbase_ws140,wormbase_ws170,wormbase_ws180,wormbase_ws190,wormbase_ws200,wormbase_ws204,wormbase_ws210,wormbase_ws220,wormbase_ws225" ).lower().split(",")
self.brand = kwargs.get( 'brand', None )
+ # Configuration for the message box directly below the masthead.
+ self.message_box_visible = kwargs.get( 'message_box_visible', False )
+ self.message_box_content = kwargs.get( 'message_box_content', None )
+ self.message_box_class = kwargs.get( 'message_box_class', 'info' )
self.support_url = kwargs.get( 'support_url', 'http://wiki.g2.bx.psu.edu/Support' )
self.wiki_url = kwargs.get( 'wiki_url', 'http://g2.trac.bx.psu.edu/' )
self.blog_url = kwargs.get( 'blog_url', None )
@@ -166,6 +169,7 @@
self.enable_whoosh_library_search = string_as_bool( kwargs.get( 'enable_whoosh_library_search', False ) )
self.whoosh_index_dir = resolve_path( kwargs.get( "whoosh_index_dir", "database/whoosh_indexes" ), self.root )
self.ftp_upload_dir = kwargs.get( 'ftp_upload_dir', None )
+ self.ftp_upload_dir_identifier = kwargs.get( 'ftp_upload_dir_identifier', 'email' ) # attribute on user - email, username, id, etc...
self.ftp_upload_site = kwargs.get( 'ftp_upload_site', None )
self.allow_library_path_paste = kwargs.get( 'allow_library_path_paste', False )
self.disable_library_comptypes = kwargs.get( 'disable_library_comptypes', '' ).lower().split( ',' )
@@ -271,6 +275,8 @@
self.fluent_log = string_as_bool( kwargs.get( 'fluent_log', False ) )
self.fluent_host = kwargs.get( 'fluent_host', 'localhost' )
self.fluent_port = int( kwargs.get( 'fluent_port', 24224 ) )
+ # visualizations registry config path
+ self.visualizations_conf_path = kwargs.get( 'visualizations_conf_path', None )
@property
def sentry_dsn_public( self ):
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/datatypes/assembly.py
--- a/lib/galaxy/datatypes/assembly.py
+++ b/lib/galaxy/datatypes/assembly.py
@@ -5,14 +5,14 @@
"""
import data
+import logging
+import os
+import re
+import sys
from galaxy.datatypes import sequence
-import logging, os, sys, time, tempfile, shutil, string, glob, re
-import galaxy.model
-from galaxy.datatypes import metadata
+from galaxy.datatypes.images import Html
from galaxy.datatypes.metadata import MetadataElement
-from galaxy import util
-from galaxy.datatypes.images import Html
-from sniff import *
+
log = logging.getLogger(__name__)
@@ -174,7 +174,6 @@
gen_msg = ''
try:
efp = dataset.extra_files_path
- flist = os.listdir(efp)
log_path = os.path.join(efp,'Log')
f = open(log_path,'r')
log_content = f.read(1000)
@@ -223,5 +222,5 @@
self.regenerate_primary_file(dataset)
if __name__ == '__main__':
- import doctest, sys
+ import doctest
doctest.testmod(sys.modules[__name__])
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/datatypes/binary.py
--- a/lib/galaxy/datatypes/binary.py
+++ b/lib/galaxy/datatypes/binary.py
@@ -2,18 +2,26 @@
Binary classes
"""
-import data, logging, binascii
+import binascii
+import data
+import gzip
+import logging
+import os
+import shutil
+import struct
+import subprocess
+import tempfile
+import zipfile
+
+from urllib import urlencode, quote_plus
+from galaxy import eggs
+eggs.require( "bx-python" )
+
+from bx.seq.twobit import TWOBIT_MAGIC_NUMBER, TWOBIT_MAGIC_NUMBER_SWAP, TWOBIT_MAGIC_SIZE
+
from galaxy.datatypes.metadata import MetadataElement
from galaxy.datatypes import metadata
from galaxy.datatypes.sniff import *
-from galaxy import eggs
-import pkg_resources
-pkg_resources.require( "bx-python" )
-from bx.seq.twobit import TWOBIT_MAGIC_NUMBER, TWOBIT_MAGIC_NUMBER_SWAP, TWOBIT_MAGIC_SIZE
-from urllib import urlencode, quote_plus
-import zipfile, gzip
-import os, subprocess, tempfile
-import struct
log = logging.getLogger(__name__)
@@ -85,9 +93,18 @@
Binary.register_unsniffable_binary_ext("ab1")
+class GenericAsn1Binary( Binary ):
+ """Class for generic ASN.1 binary format"""
+ file_ext = "asn1-binary"
+
+Binary.register_unsniffable_binary_ext("asn1-binary")
+
class Bam( Binary ):
"""Class describing a BAM binary file"""
file_ext = "bam"
+ track_type = "ReadTrack"
+ data_sources = { "data": "bai", "index": "bigwig" }
+
MetadataElement( name="bam_index", desc="BAM Index File", param=metadata.FileParameter, file_ext="bai", readonly=True, no_value=None, visible=False, optional=True )
def _get_samtools_version( self ):
@@ -238,9 +255,7 @@
return dataset.peek
except:
return "Binary bam alignments file (%s)" % ( data.nice_size( dataset.get_size() ) )
- def get_track_type( self ):
- return "ReadTrack", { "data": "bai", "index": [ "bigwig", "summary_tree" ] }
-
+
Binary.register_sniffable_binary_format("bam", "bam", Bam)
class H5( Binary ):
@@ -318,6 +333,9 @@
The supplemental info in the paper has the binary details:
http://bioinformatics.oxfordjournals.org/cgi/content/abstract/btq351v1
"""
+ track_type = "LineTrack"
+ data_sources = { "data_standalone": "bigwig" }
+
def __init__( self, **kwd ):
Binary.__init__( self, **kwd )
self._magic = 0x888FFC26
@@ -342,19 +360,18 @@
return dataset.peek
except:
return "Binary UCSC %s file (%s)" % ( self._name, data.nice_size( dataset.get_size() ) )
- def get_track_type( self ):
- return "LineTrack", {"data_standalone": "bigwig"}
-
+
Binary.register_sniffable_binary_format("bigwig", "bigwig", BigWig)
class BigBed(BigWig):
"""BigBed support from UCSC."""
+
+ data_sources = { "data_standalone": "bigbed" }
+
def __init__( self, **kwd ):
Binary.__init__( self, **kwd )
self._magic = 0x8789F2EB
self._name = "BigBed"
- def get_track_type( self ):
- return "LineTrack", {"data_standalone": "bigbed"}
Binary.register_sniffable_binary_format("bigbed", "bigbed", BigBed)
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/datatypes/chrominfo.py
--- a/lib/galaxy/datatypes/chrominfo.py
+++ b/lib/galaxy/datatypes/chrominfo.py
@@ -1,7 +1,3 @@
-import data
-from galaxy import util
-from galaxy.datatypes.sniff import *
-from galaxy.web import url_for
from tabular import Tabular
from galaxy.datatypes import metadata
from galaxy.datatypes.metadata import MetadataElement
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/datatypes/converters/bam_to_bigwig_converter.xml
--- a/lib/galaxy/datatypes/converters/bam_to_bigwig_converter.xml
+++ b/lib/galaxy/datatypes/converters/bam_to_bigwig_converter.xml
@@ -1,7 +1,14 @@
<tool id="CONVERTER_bam_to_bigwig_0" name="Convert BAM to BigWig" version="1.0.0" hidden="true"><!-- <description>__NOT_USED_CURRENTLY_FOR_CONVERTERS__</description> --><command>
- bedtools genomecov -bg -split -ibam $input -g $chromInfo | wigToBigWig stdin $chromInfo $output
+ bedtools genomecov -bg -split -ibam $input -g $chromInfo
+
+ ## Streaming the bedgraph file to wigToBigWig is fast but very memory intensive; hence, this
+ ## should only be used on systems with large RAM.
+ ## | wigToBigWig stdin $chromInfo $output
+
+ ## This can be used anywhere.
+ > temp.bg ; bedGraphToBigWig temp.bg $chromInfo $output
</command><inputs><param format="bam" name="input" type="data" label="Choose BAM file"/>
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/datatypes/converters/bam_to_summary_tree_converter.xml
--- a/lib/galaxy/datatypes/converters/bam_to_summary_tree_converter.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<tool id="CONVERTER_bam_to_summary_tree_0" name="Convert BAM to Summary Tree" version="1.0.0" hidden="true">
- <!-- <description>__NOT_USED_CURRENTLY_FOR_CONVERTERS__</description> -->
- <command interpreter="python">
- sam_or_bam_to_summary_tree_converter.py --bam $input1 $input1.metadata.bam_index $output1
- </command>
- <inputs>
- <param format="bam" name="input1" type="data" label="Choose BAM file"/>
- </inputs>
- <outputs>
- <data format="summary_tree" name="output1"/>
- </outputs>
- <help>
- </help>
-</tool>
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/datatypes/converters/bed_gff_or_vcf_to_bigwig_converter.xml
--- /dev/null
+++ b/lib/galaxy/datatypes/converters/bed_gff_or_vcf_to_bigwig_converter.xml
@@ -0,0 +1,25 @@
+<tool id="CONVERTER_bed_gff_or_vcf_to_bigwig_0" name="Convert BED, GFF, or VCF to BigWig" version="1.0.0" hidden="true">
+ <!-- <description>__NOT_USED_CURRENTLY_FOR_CONVERTERS__</description> -->
+ <command>
+ ## Remove comments and sort by chromosome.
+ grep -v '^#' $input | sort -k1,1 |
+
+ ## Generate coverage bedgraph.
+ bedtools genomecov -bg -split -i stdin -g $chromInfo
+
+ ## Streaming the bedgraph file to wigToBigWig is fast but very memory intensive; hence, this
+ ## should only be used on systems with large RAM.
+ ## | wigToBigWig stdin $chromInfo $output
+
+ ## This can be used anywhere.
+ > temp.bg ; bedGraphToBigWig temp.bg $chromInfo $output
+ </command>
+ <inputs>
+ <param format="bed,gff,vcf" name="input" type="data" label="Choose input file"/>
+ </inputs>
+ <outputs>
+ <data format="bigwig" name="output"/>
+ </outputs>
+ <help>
+ </help>
+</tool>
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/datatypes/converters/bed_to_summary_tree_converter.xml
--- a/lib/galaxy/datatypes/converters/bed_to_summary_tree_converter.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<tool id="CONVERTER_bed_to_summary_tree_0" name="Convert BED to Summary Tree" version="1.0.0" hidden="true">
-<!-- <description>__NOT_USED_CURRENTLY_FOR_CONVERTERS__</description> -->
- <command interpreter="python">interval_to_summary_tree_converter.py $input1 $output1</command>
- <inputs>
- <page>
- <param format="bed" name="input1" type="data" label="Choose BED file"/>
- </page>
- </inputs>
- <outputs>
- <data format="summary_tree" name="output1"/>
- </outputs>
- <help>
- </help>
-</tool>
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/datatypes/converters/encodepeak_to_summary_tree_converter.xml
--- a/lib/galaxy/datatypes/converters/encodepeak_to_summary_tree_converter.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<tool id="CONVERTER_encodepeak_to_summary_tree_0" name="Convert ENCODEPeak to Summary Tree" version="1.0.0" hidden="true">
-<!-- <description>__NOT_USED_CURRENTLY_FOR_CONVERTERS__</description> -->
- <command interpreter="python">interval_to_summary_tree_converter.py
- -c ${input1.metadata.chromCol}
- -s ${input1.metadata.startCol}
- -e ${input1.metadata.endCol}
- $input1 $output1
- </command>
-
- <inputs>
- <page>
- <param format="ENCODEPeak" name="input1" type="data" label="Choose ENCODEPeak file"/>
- </page>
- </inputs>
- <outputs>
- <data format="summary_tree" name="output1"/>
- </outputs>
- <help>
- </help>
-</tool>
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/datatypes/converters/gff_to_summary_tree_converter.xml
--- a/lib/galaxy/datatypes/converters/gff_to_summary_tree_converter.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<tool id="CONVERTER_gff_to_summary_tree_0" name="Convert GFF to Summary Tree" version="1.0.0" hidden="true">
-<!-- <description>__NOT_USED_CURRENTLY_FOR_CONVERTERS__</description> -->
- <command interpreter="python">interval_to_summary_tree_converter.py $input1 $output1 --gff</command>
- <inputs>
- <page>
- <param format="gff" name="input1" type="data" label="Choose GFF file"/>
- </page>
- </inputs>
- <outputs>
- <data format="summary_tree" name="output1"/>
- </outputs>
- <help>
- </help>
-</tool>
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/datatypes/converters/interval_to_bigwig_converter.xml
--- /dev/null
+++ b/lib/galaxy/datatypes/converters/interval_to_bigwig_converter.xml
@@ -0,0 +1,33 @@
+<tool id="CONVERTER_interval_to_bigwig_0" name="Convert Genomic Intervals To Coverage">
+ <!-- <description>__NOT_USED_CURRENTLY_FOR_CONVERTERS__</description> -->
+ <!-- Used on the metadata edit page. -->
+ <command>
+
+ ## Remove comments and sort by chromosome.
+ grep -v '^#' $input1 | sort -k${input1.metadata.chromCol},${input1.metadata.chromCol} |
+
+ ## Create simple BED by cutting chrom, start, and end columns.
+ awk -v OFS=' ' '{print $${input1.metadata.chromCol},$${input1.metadata.startCol},$${input1.metadata.endCol} }' |
+
+ ## Generate coverage bedgraph.
+ bedtools genomecov -bg -split -i stdin -g $chromInfo
+
+ ## Streaming the bedgraph file to wigToBigWig is fast but very memory intensive; hence, this
+ ## should only be used on systems with large RAM.
+ ## | wigToBigWig stdin $chromInfo $output
+
+ ## This can be used anywhere.
+ > temp.bg ; bedGraphToBigWig temp.bg $chromInfo $output
+
+ </command>
+ <inputs>
+ <page>
+ <param format="interval" name="input1" type="data" label="Choose intervals"/>
+ </page>
+ </inputs>
+ <outputs>
+ <data format="bigwig" name="output"/>
+ </outputs>
+ <help>
+ </help>
+</tool>
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/datatypes/converters/interval_to_summary_tree_converter.py
--- a/lib/galaxy/datatypes/converters/interval_to_summary_tree_converter.py
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/usr/bin/env python
-
-"""
-Convert from interval file to summary tree file. Default input file format is BED (0-based, half-open intervals).
-
-usage: %prog <options> in_file out_file
- -c, --chr-col: chromosome column, default=1
- -s, --start-col: start column, default=2
- -e, --end-col: end column, default=3
- -t, --strand-col: strand column, default=6
- -G, --gff: input is GFF format, meaning start and end coordinates are 1-based, closed interval
-"""
-from __future__ import division
-
-import sys, fileinput, optparse
-from galaxy import eggs
-import pkg_resources; pkg_resources.require( "bx-python" )
-from galaxy.visualization.tracks.summary import *
-from bx.intervals.io import *
-from galaxy.datatypes.util.gff_util import *
-
-def main():
- # Read options, args.
- parser = optparse.OptionParser()
- parser.add_option( '-c', '--chr-col', type='int', dest='chrom_col', default=1 )
- parser.add_option( '-s', '--start-col', type='int', dest='start_col', default=2 )
- parser.add_option( '-e', '--end-col', type='int', dest='end_col', default=3 )
- parser.add_option( '-t', '--strand-col', type='int', dest='strand_col', default=6 )
- parser.add_option( '-G', '--gff', dest="gff_format", action="store_true" )
- (options, args) = parser.parse_args()
- input_fname, output_fname = args
-
- # Convert column indices to 0-based.
- options.chrom_col -= 1
- options.start_col -= 1
- options.end_col -= 1
- options.strand_col -= 1
-
- # Do conversion.
- if options.gff_format:
- reader_wrapper_class = GFFReaderWrapper
- chr_col, start_col, end_col, strand_col = ( 0, 3, 4, 6 )
- else:
- reader_wrapper_class = NiceReaderWrapper
- chr_col, start_col, end_col, strand_col = ( options.chrom_col, options.start_col, options.end_col, options.strand_col )
- reader_wrapper = reader_wrapper_class( fileinput.FileInput( input_fname ),
- chrom_col=chr_col,
- start_col=start_col,
- end_col=end_col,
- strand_col=strand_col,
- fix_strand=True )
- st = SummaryTree()
- for feature in list( reader_wrapper ):
- if isinstance( feature, GenomicInterval ):
- # Tree expects BED coordinates.
- if type( feature ) is GFFFeature:
- convert_gff_coords_to_bed( feature )
- st.insert_range( feature.chrom, long( feature.start ), long( feature.end ) )
-
- st.write( output_fname )
-
-if __name__ == "__main__":
- main()
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/datatypes/converters/interval_to_summary_tree_converter.xml
--- a/lib/galaxy/datatypes/converters/interval_to_summary_tree_converter.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<tool id="CONVERTER_interval_to_summary_tree_0" name="Convert Interval to Summary Tree" version="1.0.0" hidden="true">
-<!-- <description>__NOT_USED_CURRENTLY_FOR_CONVERTERS__</description> -->
- <command interpreter="python">interval_to_summary_tree_converter.py
- -c ${input1.metadata.chromCol}
- -s ${input1.metadata.startCol}
- -e ${input1.metadata.endCol}
- $input1 $output1
- </command>
-
- <inputs>
- <page>
- <param format="interval" name="input1" type="data" label="Choose Interval file"/>
- </page>
- </inputs>
- <outputs>
- <data format="summary_tree" name="output1"/>
- </outputs>
- <help>
- </help>
-</tool>
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/datatypes/converters/pileup_to_interval_index_converter.py
--- /dev/null
+++ b/lib/galaxy/datatypes/converters/pileup_to_interval_index_converter.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python
+
+"""
+Convert from pileup file to interval index file.
+
+usage: %prog <options> in_file out_file
+"""
+
+from __future__ import division
+
+import sys, fileinput, optparse
+from galaxy import eggs
+import pkg_resources; pkg_resources.require( "bx-python" )
+from galaxy.visualization.tracks.summary import *
+from galaxy.datatypes.util.gff_util import convert_gff_coords_to_bed
+from bx.interval_index_file import Indexes
+
+def main():
+
+ # Read options, args.
+ parser = optparse.OptionParser()
+ (options, args) = parser.parse_args()
+ input_fname, output_fname = args
+
+ # Do conversion.
+ index = Indexes()
+ offset = 0
+ for line in open( input_fname, "r" ):
+ chrom, start = line.split()[ 0:2 ]
+ # Pileup format is 1-based.
+ start = int( start ) - 1
+ index.add( chrom, start, start + 1, offset )
+ offset += len( line )
+
+ index.write( open(output_fname, "w") )
+
+if __name__ == "__main__":
+ main()
+
\ No newline at end of file
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/datatypes/converters/pileup_to_interval_index_converter.xml
--- /dev/null
+++ b/lib/galaxy/datatypes/converters/pileup_to_interval_index_converter.xml
@@ -0,0 +1,15 @@
+<tool id="CONVERTER_pileup_to_interval_index_0" name="Convert Pileup to Interval Index" version="1.0.0" hidden="true">
+<!-- <description>__NOT_USED_CURRENTLY_FOR_CONVERTERS__</description> -->
+ <command interpreter="python">pileup_to_interval_index_converter.py $input $output
+ </command>
+ <inputs>
+ <page>
+ <param format="pileup" name="input" type="data" label="Choose Pileup file"/>
+ </page>
+ </inputs>
+ <outputs>
+ <data format="interval_index" name="output"/>
+ </outputs>
+ <help>
+ </help>
+</tool>
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/datatypes/converters/sam_or_bam_to_summary_tree_converter.py
--- a/lib/galaxy/datatypes/converters/sam_or_bam_to_summary_tree_converter.py
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/env python
-
-from __future__ import division
-
-import sys, os, optparse
-sys.stderr = open(os.devnull, 'w') # suppress stderr as cython produces warning on some systems:
- # csamtools.so:6: RuntimeWarning: __builtin__.file size changed
-
-from galaxy import eggs
-import pkg_resources
-
-if sys.version_info[:2] == (2, 4):
- pkg_resources.require( "ctypes" )
-pkg_resources.require( "pysam" )
-
-from pysam import csamtools
-from galaxy.visualization.tracks.summary import *
-
-def main():
- parser = optparse.OptionParser()
- parser.add_option( '-S', '--sam', action="store_true", dest="is_sam" )
- parser.add_option( '-B', '--bam', action="store_true", dest="is_bam" )
- options, args = parser.parse_args()
-
- if options.is_bam:
- input_fname = args[0]
- index_fname = args[1]
- out_fname = args[2]
- samfile = csamtools.Samfile( filename=input_fname, mode='rb', index_filename=index_fname )
- elif options.is_sam:
- input_fname = args[0]
- out_fname = args[1]
- samfile = csamtools.Samfile( filename=input_fname, mode='r' )
-
- st = SummaryTree()
- for read in samfile.fetch():
- st.insert_range( samfile.getrname( read.rname ), read.pos, read.pos + read.rlen )
-
- st.write(out_fname)
-
-if __name__ == "__main__":
- main()
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/datatypes/converters/sam_to_bigwig_converter.xml
--- /dev/null
+++ b/lib/galaxy/datatypes/converters/sam_to_bigwig_converter.xml
@@ -0,0 +1,20 @@
+<tool id="CONVERTER_sam_to_bigwig_0" name="Convert SAM to BigWig" version="1.0.0" hidden="true">
+ <command>
+ samtools view -bh $input | bedtools genomecov -bg -split -ibam stdin -g $chromInfo
+
+ ## Streaming the bedgraph file to wigToBigWig is fast but very memory intensive; hence, this
+ ## should only be used on systems with large RAM.
+ ## | wigToBigWig stdin $chromInfo $output
+
+ ## This can be used anywhere.
+ > temp.bg ; bedGraphToBigWig temp.bg $chromInfo $output
+ </command>
+ <inputs>
+ <param format="bam" name="input" type="data" label="Choose BAM file"/>
+ </inputs>
+ <outputs>
+ <data format="bigwig" name="output"/>
+ </outputs>
+ <help>
+ </help>
+</tool>
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/datatypes/converters/sam_to_summary_tree_converter.xml
--- a/lib/galaxy/datatypes/converters/sam_to_summary_tree_converter.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<tool id="CONVERTER_sam_to_summary_tree_0" name="Convert SAM to Summary Tree" version="1.0.0" hidden="true">
-<!-- <description>__NOT_USED_CURRENTLY_FOR_CONVERTERS__</description> -->
- <command interpreter="python">sam_or_bam_to_summary_tree_converter.py --sam $input1 $output1</command>
- <inputs>
- <page>
- <param format="sam" name="input1" type="data" label="Choose sam file"/>
- </page>
- </inputs>
- <outputs>
- <data format="summary_tree" name="output1"/>
- </outputs>
- <help>
- </help>
-</tool>
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/datatypes/converters/vcf_to_summary_tree_converter.py
--- a/lib/galaxy/datatypes/converters/vcf_to_summary_tree_converter.py
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env python
-
-"""
-Convert from VCF file to summary tree file.
-
-usage: %prog in_file out_file
-"""
-from __future__ import division
-
-import optparse
-import galaxy_utils.sequence.vcf
-from galaxy.visualization.tracks.summary import SummaryTree
-
-def main():
- # Read options, args.
- parser = optparse.OptionParser()
- (options, args) = parser.parse_args()
- in_file, out_file = args
-
- # Do conversion.
- st = SummaryTree()
- for line in list( galaxy_utils.sequence.vcf.Reader( open( in_file ) ) ):
- # VCF format provides a chrom and 1-based position for each variant.
- # SummaryTree expects 0-based coordinates.
- st.insert_range( line.chrom, long( line.pos-1 ), long( line.pos ) )
-
- st.write(out_file)
-
-if __name__ == "__main__":
- main()
\ No newline at end of file
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/datatypes/converters/vcf_to_summary_tree_converter.xml
--- a/lib/galaxy/datatypes/converters/vcf_to_summary_tree_converter.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<tool id="CONVERTER_vcf_to_summary_tree_0" name="Convert VCF to Summary Tree" version="1.0.0" hidden="true">
- <!-- <description>__NOT_USED_CURRENTLY_FOR_CONVERTERS__</description> -->
- <command interpreter="python">vcf_to_summary_tree_converter.py $input1 $output1</command>
- <inputs>
- <page>
- <param format="vcf" name="input1" type="data" label="Choose VCF file"/>
- </page>
- </inputs>
- <outputs>
- <data format="summary_tree" name="output1"/>
- </outputs>
- <help>
- </help>
-</tool>
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/datatypes/coverage.py
--- a/lib/galaxy/datatypes/coverage.py
+++ b/lib/galaxy/datatypes/coverage.py
@@ -2,21 +2,14 @@
Coverage datatypes
"""
-import pkg_resources
-pkg_resources.require( "bx-python" )
-import logging, os, sys, time, tempfile, shutil
-import data
-from galaxy import util
-from galaxy.datatypes.sniff import *
-from galaxy.web import url_for
-from cgi import escape
-import urllib
-from bx.intervals.io import *
+import logging
+import math
+
+from galaxy import eggs
from galaxy.datatypes import metadata
from galaxy.datatypes.metadata import MetadataElement
from galaxy.datatypes.tabular import Tabular
-import math
log = logging.getLogger(__name__)
@@ -34,7 +27,7 @@
Assumes we have a numpy file.
"""
# Maybe if we import here people will still be able to use Galaxy when numpy kills it
- pkg_resources.require("numpy>=1.2.1")
+ eggs.require("numpy>=1.2.1")
#from numpy.lib import format
import numpy
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/datatypes/data.py
--- a/lib/galaxy/datatypes/data.py
+++ b/lib/galaxy/datatypes/data.py
@@ -2,6 +2,7 @@
import metadata
import mimetypes
import os
+import shutil
import sys
import tempfile
import zipfile
@@ -17,12 +18,6 @@
eggs.require( "Paste" )
import paste
-
-if sys.version_info[:2] < ( 2, 6 ):
- zipfile.BadZipFile = zipfile.error
-if sys.version_info[:2] < ( 2, 5 ):
- zipfile.LargeZipFile = zipfile.error
-
log = logging.getLogger(__name__)
tmpd = tempfile.mkdtemp()
@@ -103,6 +98,12 @@
#A per datatype setting (inherited): max file size (in bytes) for setting optional metadata
_max_optional_metadata_filesize = None
+ # Trackster track type.
+ track_type = None
+
+ # Data sources.
+ data_sources = {}
+
def __init__(self, **kwd):
"""Initialize the datatype"""
object.__init__(self, **kwd)
@@ -545,21 +546,21 @@
return False
-
def merge( split_files, output_file):
"""
- TODO: Do we need to merge gzip files using gzjoin? cat seems to work,
- but might be brittle. Need to revisit this.
+ Merge files with copy.copyfileobj() will not hit the
+ max argument limitation of cat. gz and bz2 files are also working.
"""
if not split_files:
raise ValueError('Asked to merge zero files as %s' % output_file)
elif len(split_files) == 1:
- cmd = 'mv -f %s %s' % ( split_files[0], output_file )
+ shutil.copyfileobj(open(split_files[0], 'rb'), open(output_file, 'wb'))
else:
- cmd = 'cat %s > %s' % ( ' '.join(split_files), output_file )
- result = os.system(cmd)
- if result != 0:
- raise Exception('Result %s from %s' % (result, cmd))
+ fdst = open(output_file, 'wb')
+ for fsrc in split_files:
+ shutil.copyfileobj(open(fsrc, 'rb'), fdst)
+ fdst.close()
+
merge = staticmethod(merge)
def get_visualizations( self, dataset ):
@@ -567,7 +568,7 @@
Returns a list of visualizations for datatype.
"""
- if hasattr( self, 'get_track_type' ):
+ if self.track_type:
return [ 'trackster', 'circster' ]
return []
@@ -740,6 +741,10 @@
f.close()
split = classmethod(split)
+class GenericAsn1( Text ):
+ """Class for generic ASN.1 text format"""
+ file_ext = 'asn1'
+
class LineCount( Text ):
"""
Dataset contains a single line with a single integer that denotes the
diff -r 03ebba1d1de6f14ccb00e08795ef2f1896135bae -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 lib/galaxy/datatypes/display_applications/application.py
--- a/lib/galaxy/datatypes/display_applications/application.py
+++ b/lib/galaxy/datatypes/display_applications/application.py
@@ -12,7 +12,7 @@
log = logging.getLogger( __name__ )
#Any basic functions that we want to provide as a basic part of parameter dict should be added to this dict
-BASE_PARAMS = { 'qp': quote_plus, 'url_for':url_for } #url_for has route memory...
+BASE_PARAMS = { 'qp': quote_plus, 'url_for':url_for }
class DisplayApplicationLink( object ):
@classmethod
@@ -40,7 +40,7 @@
self.name = None
def get_display_url( self, data, trans ):
dataset_hash, user_hash = encode_dataset_user( trans, data, None )
- return url_for( controller='/dataset',
+ return url_for( controller='dataset',
action="display_application",
dataset_id=dataset_hash,
user_id=user_hash,
This diff is so big that we needed to truncate the remainder.
https://bitbucket.org/galaxy/galaxy-central/commits/776ac2651214/
Changeset: 776ac2651214
Branch: stable
User: natefoo
Date: 2013-06-03 21:45:31
Summary: Added tag release_2013.06.03 for changeset 58811a78af8a
Affected #: 1 file
diff -r 58811a78af8a09b77405dc343a5b2795f4cc6e88 -r 776ac26512144a65593ab999dafa2217bd2c4153 .hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -2,3 +2,4 @@
1c717491139269651bb59687563da9410b84c65d release_2013.02.08
75f09617abaadbc8cc732bb8ee519decaeb56ea7 release_2013.04.01
2cc8d10988e03257dc7b97f8bb332c7df745d1dd security_2013.04.08
+58811a78af8a09b77405dc343a5b2795f4cc6e88 release_2013.06.03
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/a243d2dbca9d/
Changeset: a243d2dbca9d
Branch: next-stable
User: greg
Date: 2013-06-03 21:40:37
Summary: Fix for rendering xml elements that were not loaded using normal parsing methods.
Affected #: 2 files
diff -r 09d45fa9a84c1a91e7b14b94186bd8128883ddc4 -r a243d2dbca9d88724d03848a4136d9ae88d0b174 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
@@ -193,7 +193,7 @@
os.write( fd, '<?xml version="1.0"?>\n' )
os.write( fd, '<toolbox tool_path="%s">\n' % str( tool_path ) )
for elem in config_elems:
- os.write( fd, '%s' % xml_util.xml_to_string( elem ) )
+ os.write( fd, '%s' % xml_util.xml_to_string( elem, use_indent=True ) )
os.write( fd, '</toolbox>\n' )
os.close( fd )
shutil.move( filename, os.path.abspath( config_filename ) )
diff -r 09d45fa9a84c1a91e7b14b94186bd8128883ddc4 -r a243d2dbca9d88724d03848a4136d9ae88d0b174 lib/tool_shed/util/xml_util.py
--- a/lib/tool_shed/util/xml_util.py
+++ b/lib/tool_shed/util/xml_util.py
@@ -41,6 +41,28 @@
fh.close()
return tmp_filename
+def indent( elem, level=0 ):
+ """
+ Prints an XML tree with each node indented according to its depth. This method is used to print the shed tool config (e.g., shed_tool_conf.xml
+ from the in-memory list of config_elems because each config_elem in the list may be a hierarchical structure that was not created using the
+ parse_xml() method below, and so will not be properly written with xml.etree.ElementTree.tostring() without manually indenting the tree first.
+ """
+ i = "\n" + level * " "
+ if len( elem ):
+ if not elem.text or not elem.text.strip():
+ elem.text = i + " "
+ if not elem.tail or not elem.tail.strip():
+ elem.tail = i
+ for child in elem:
+ indent( child, level+1 )
+ if not child.tail or not child.tail.strip():
+ child.tail = i
+ if not elem.tail or not elem.tail.strip():
+ elem.tail = i
+ else:
+ if level and ( not elem.tail or not elem.tail.strip() ):
+ elem.tail = i
+
def parse_xml( file_name ):
"""Returns a parsed xml tree with comments intact."""
error_message = ''
@@ -64,9 +86,15 @@
fobj.close()
return tree, error_message
-def xml_to_string( elem, encoding='utf-8' ):
- if using_python_27:
- xml_str = '%s\n' % xml.etree.ElementTree.tostring( elem, encoding=encoding, method="xml" )
+def xml_to_string( elem, encoding='utf-8', use_indent=False ):
+ if elem:
+ if use_indent:
+ # We were called from suc.config_elems_to_xml_file(), so set the level to 1 since level 0 is the <toolbox> tag set.
+ indent( elem, level=1 )
+ if using_python_27:
+ xml_str = '%s\n' % xml.etree.ElementTree.tostring( elem, encoding=encoding, method="xml" )
+ else:
+ xml_str = '%s\n' % xml.etree.ElementTree.tostring( elem, encoding=encoding )
else:
- xml_str = '%s\n' % xml.etree.ElementTree.tostring( elem, encoding=encoding )
+ xml_str = ''
return xml_str
https://bitbucket.org/galaxy/galaxy-central/commits/8cbb23ed305e/
Changeset: 8cbb23ed305e
User: greg
Date: 2013-06-03 21:40:58
Summary: Merged from next-stable
Affected #: 2 files
diff -r 75bea1afc2e3e3a49c95a3540a27be165766aaac -r 8cbb23ed305e6803da733eb7be74bab779ee9ea4 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
@@ -193,7 +193,7 @@
os.write( fd, '<?xml version="1.0"?>\n' )
os.write( fd, '<toolbox tool_path="%s">\n' % str( tool_path ) )
for elem in config_elems:
- os.write( fd, '%s' % xml_util.xml_to_string( elem ) )
+ os.write( fd, '%s' % xml_util.xml_to_string( elem, use_indent=True ) )
os.write( fd, '</toolbox>\n' )
os.close( fd )
shutil.move( filename, os.path.abspath( config_filename ) )
diff -r 75bea1afc2e3e3a49c95a3540a27be165766aaac -r 8cbb23ed305e6803da733eb7be74bab779ee9ea4 lib/tool_shed/util/xml_util.py
--- a/lib/tool_shed/util/xml_util.py
+++ b/lib/tool_shed/util/xml_util.py
@@ -41,6 +41,28 @@
fh.close()
return tmp_filename
+def indent( elem, level=0 ):
+ """
+ Prints an XML tree with each node indented according to its depth. This method is used to print the shed tool config (e.g., shed_tool_conf.xml
+ from the in-memory list of config_elems because each config_elem in the list may be a hierarchical structure that was not created using the
+ parse_xml() method below, and so will not be properly written with xml.etree.ElementTree.tostring() without manually indenting the tree first.
+ """
+ i = "\n" + level * " "
+ if len( elem ):
+ if not elem.text or not elem.text.strip():
+ elem.text = i + " "
+ if not elem.tail or not elem.tail.strip():
+ elem.tail = i
+ for child in elem:
+ indent( child, level+1 )
+ if not child.tail or not child.tail.strip():
+ child.tail = i
+ if not elem.tail or not elem.tail.strip():
+ elem.tail = i
+ else:
+ if level and ( not elem.tail or not elem.tail.strip() ):
+ elem.tail = i
+
def parse_xml( file_name ):
"""Returns a parsed xml tree with comments intact."""
error_message = ''
@@ -64,9 +86,15 @@
fobj.close()
return tree, error_message
-def xml_to_string( elem, encoding='utf-8' ):
- if using_python_27:
- xml_str = '%s\n' % xml.etree.ElementTree.tostring( elem, encoding=encoding, method="xml" )
+def xml_to_string( elem, encoding='utf-8', use_indent=False ):
+ if elem:
+ if use_indent:
+ # We were called from suc.config_elems_to_xml_file(), so set the level to 1 since level 0 is the <toolbox> tag set.
+ indent( elem, level=1 )
+ if using_python_27:
+ xml_str = '%s\n' % xml.etree.ElementTree.tostring( elem, encoding=encoding, method="xml" )
+ else:
+ xml_str = '%s\n' % xml.etree.ElementTree.tostring( elem, encoding=encoding )
else:
- xml_str = '%s\n' % xml.etree.ElementTree.tostring( elem, encoding=encoding )
+ xml_str = ''
return xml_str
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/09d45fa9a84c/
Changeset: 09d45fa9a84c
Branch: next-stable
User: Dave Bouvier
Date: 2013-06-03 18:33:02
Summary: Fix for installing a tool dependencies when set_environment actions are distributed between multiple action tag groups.
Affected #: 1 file
diff -r 6a8584218f61c5cf7aa129677a7548c610cd0cca -r 09d45fa9a84c1a91e7b14b94186bd8128883ddc4 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
@@ -130,10 +130,10 @@
if package_install_version == '1.0':
# 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.
+ env_var_dicts = []
for actions_elem in package_elem:
for action_elem in actions_elem:
action_type = action_elem.get( 'type', 'shell_command' )
- env_var_dicts = []
if action_type == 'set_environment':
# <action type="set_environment">
# <environment_variable name="PYTHONPATH" action="append_to">$INSTALL_DIR/lib/python</environment_variable>
@@ -143,7 +143,8 @@
if env_elem.tag == 'environment_variable':
env_var_dict = common_util.create_env_var_dict( env_elem, tool_dependency_install_dir=install_dir )
if env_var_dict:
- env_var_dicts.append( env_var_dict )
+ if env_var_dict not in env_var_dicts:
+ env_var_dicts.append( env_var_dict )
elif action_type == 'setup_virtualenv':
# 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" )
@@ -155,40 +156,40 @@
else:
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:
- 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
+ if 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:
raise NotImplementedError( 'Only install version 1.0 is currently supported (i.e., change your tag to be <install version="1.0">).' )
return None, actions
@@ -464,7 +465,12 @@
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 action_type == 'set_environment':
+ if action_tuple not in actions:
+ actions.append( action_tuple )
+ else:
+ actions.append( action_tuple )
if actions:
actions_dict[ 'actions' ] = actions
if proprietary_fabfile_path:
https://bitbucket.org/galaxy/galaxy-central/commits/75bea1afc2e3/
Changeset: 75bea1afc2e3
User: Dave Bouvier
Date: 2013-06-03 18:35:52
Summary: Merge in next-stable.
Affected #: 1 file
diff -r 83213accd759e752538c025275557d3dfc5d1433 -r 75bea1afc2e3e3a49c95a3540a27be165766aaac 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
@@ -130,10 +130,10 @@
if package_install_version == '1.0':
# 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.
+ env_var_dicts = []
for actions_elem in package_elem:
for action_elem in actions_elem:
action_type = action_elem.get( 'type', 'shell_command' )
- env_var_dicts = []
if action_type == 'set_environment':
# <action type="set_environment">
# <environment_variable name="PYTHONPATH" action="append_to">$INSTALL_DIR/lib/python</environment_variable>
@@ -143,7 +143,8 @@
if env_elem.tag == 'environment_variable':
env_var_dict = common_util.create_env_var_dict( env_elem, tool_dependency_install_dir=install_dir )
if env_var_dict:
- env_var_dicts.append( env_var_dict )
+ if env_var_dict not in env_var_dicts:
+ env_var_dicts.append( env_var_dict )
elif action_type == 'setup_virtualenv':
# 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" )
@@ -155,40 +156,40 @@
else:
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:
- 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
+ if 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:
raise NotImplementedError( 'Only install version 1.0 is currently supported (i.e., change your tag to be <install version="1.0">).' )
return None, actions
@@ -464,7 +465,12 @@
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 action_type == 'set_environment':
+ if action_tuple not in actions:
+ actions.append( action_tuple )
+ 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
2 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/6a8584218f61/
Changeset: 6a8584218f61
Branch: next-stable
User: greg
Date: 2013-06-03 18:05:24
Summary: Fix for handling tool panel section selection when installting tool shed repositories.
Affected #: 5 files
diff -r 3df028d4cab449f4ee2b5db771ec545d88e3440e -r 6a8584218f61c5cf7aa129677a7548c610cd0cca lib/tool_shed/galaxy_install/repository_util.py
--- a/lib/tool_shed/galaxy_install/repository_util.py
+++ b/lib/tool_shed/galaxy_install/repository_util.py
@@ -388,25 +388,9 @@
tool_shed_url = installation_dict[ 'tool_shed_url' ]
# Handle contained tools.
if includes_tools_for_display_in_tool_panel and ( new_tool_panel_section or tool_panel_section ):
- if new_tool_panel_section:
- section_id = new_tool_panel_section.lower().replace( ' ', '_' )
- tool_panel_section_key = 'section_%s' % str( section_id )
- if tool_panel_section_key in trans.app.toolbox.tool_panel:
- # Appending a tool to an existing section in trans.app.toolbox.tool_panel
- log.debug( "Appending to tool panel section: %s" % new_tool_panel_section )
- tool_section = trans.app.toolbox.tool_panel[ tool_panel_section_key ]
- else:
- # Appending a new section to trans.app.toolbox.tool_panel
- log.debug( "Loading new tool panel section: %s" % new_tool_panel_section )
- elem = XmlET.Element( 'section' )
- elem.attrib[ 'name' ] = new_tool_panel_section
- elem.attrib[ 'id' ] = section_id
- elem.attrib[ 'version' ] = ''
- tool_section = tools.ToolSection( elem )
- trans.app.toolbox.tool_panel[ tool_panel_section_key ] = tool_section
- else:
- tool_panel_section_key = 'section_%s' % tool_panel_section
- tool_section = trans.app.toolbox.tool_panel[ tool_panel_section_key ]
+ tool_panel_section_key, tool_section = tool_util.handle_tool_panel_section( trans,
+ tool_panel_section=tool_panel_section,
+ new_tool_panel_section=new_tool_panel_section )
else:
tool_panel_section_key = None
tool_section = None
diff -r 3df028d4cab449f4ee2b5db771ec545d88e3440e -r 6a8584218f61c5cf7aa129677a7548c610cd0cca lib/tool_shed/util/datatype_util.py
--- a/lib/tool_shed/util/datatype_util.py
+++ b/lib/tool_shed/util/datatype_util.py
@@ -34,7 +34,7 @@
relative_path_to_datatype_file_name = None
datatype_files = datatypes_config_root.find( 'datatype_files' )
datatype_class_modules = []
- if datatype_files:
+ if datatype_files is not None:
# The <datatype_files> tag set contains any number of <datatype_file> tags.
# <datatype_files>
# <datatype_file name="gmap.py"/>
@@ -74,14 +74,14 @@
os.write( fd, '<?xml version="1.0"?>\n' )
os.write( fd, '<datatypes>\n' )
os.write( fd, '%s' % xml_util.xml_to_string( registration ) )
- if sniffers:
+ if sniffers is not None:
os.write( fd, '%s' % xml_util.xml_to_string( sniffers ) )
os.write( fd, '</datatypes>\n' )
os.close( fd )
os.chmod( proprietary_datatypes_config, 0644 )
# Load proprietary datatypes
app.datatypes_registry.load_datatypes( root_dir=app.config.root, config=proprietary_datatypes_config, deactivate=deactivate, override=override )
- if datatype_files:
+ if datatype_files is not None:
try:
os.unlink( proprietary_datatypes_config )
except:
diff -r 3df028d4cab449f4ee2b5db771ec545d88e3440e -r 6a8584218f61c5cf7aa129677a7548c610cd0cca lib/tool_shed/util/metadata_util.py
--- a/lib/tool_shed/util/metadata_util.py
+++ b/lib/tool_shed/util/metadata_util.py
@@ -435,14 +435,14 @@
root = tree.getroot()
repository_datatype_code_files = []
datatype_files = root.find( 'datatype_files' )
- if datatype_files:
+ if datatype_files is not None:
for elem in datatype_files.findall( 'datatype_file' ):
name = elem.get( 'name', None )
repository_datatype_code_files.append( name )
metadata_dict[ 'datatype_files' ] = repository_datatype_code_files
datatypes = []
registration = root.find( 'registration' )
- if registration:
+ if registration is not None:
for elem in registration.findall( 'datatype' ):
converters = []
display_app_containers = []
diff -r 3df028d4cab449f4ee2b5db771ec545d88e3440e -r 6a8584218f61c5cf7aa129677a7548c610cd0cca lib/tool_shed/util/repository_dependency_util.py
--- a/lib/tool_shed/util/repository_dependency_util.py
+++ b/lib/tool_shed/util/repository_dependency_util.py
@@ -203,22 +203,15 @@
else:
# We're installing a new tool shed repository that does not yet have a database record. This repository is a repository dependency
# of a different repository being installed.
- if new_tool_panel_section:
- section_id = new_tool_panel_section.lower().replace( ' ', '_' )
- tool_panel_section_key = 'section_%s' % str( section_id )
- elif tool_panel_section:
- tool_panel_section_key = 'section_%s' % tool_panel_section
- else:
- tool_panel_section_key = None
+ tool_panel_section_key, tool_section = tool_util.handle_tool_panel_section( trans,
+ tool_panel_section=tool_panel_section,
+ new_tool_panel_section=new_tool_panel_section )
+
else:
# We're installing a new tool shed repository that does not yet have a database record.
- if new_tool_panel_section:
- section_id = new_tool_panel_section.lower().replace( ' ', '_' )
- tool_panel_section_key = 'section_%s' % str( section_id )
- elif tool_panel_section:
- tool_panel_section_key = 'section_%s' % tool_panel_section
- else:
- tool_panel_section_key = None
+ tool_panel_section_key, tool_section = tool_util.handle_tool_panel_section( trans,
+ tool_panel_section=tool_panel_section,
+ new_tool_panel_section=new_tool_panel_section )
tool_shed_repository = suc.create_or_update_tool_shed_repository( app=trans.app,
name=name,
description=description,
@@ -239,7 +232,7 @@
tool_panel_section_keys.append( tool_panel_section_key )
filtered_repo_info_dicts.append( repo_info_dict )
# Build repository dependency relationships even if the user chose to not install repository dependencies.
- build_repository_dependency_relationships( trans, all_repo_info_dicts, all_created_or_updated_tool_shed_repositories )
+ build_repository_dependency_relationships( trans, all_repo_info_dicts, all_created_or_updated_tool_shed_repositories )
return created_or_updated_tool_shed_repositories, tool_panel_section_keys, all_repo_info_dicts, filtered_repo_info_dicts, message
def generate_message_for_invalid_repository_dependencies( metadata_dict ):
diff -r 3df028d4cab449f4ee2b5db771ec545d88e3440e -r 6a8584218f61c5cf7aa129677a7548c610cd0cca lib/tool_shed/util/tool_util.py
--- a/lib/tool_shed/util/tool_util.py
+++ b/lib/tool_shed/util/tool_util.py
@@ -458,6 +458,31 @@
fh.close()
return sample_files, deleted_sample_files
+def get_or_create_tool_section( trans, tool_panel_section_id, new_tool_panel_section=None ):
+ tool_panel_section_key = 'section_%s' % str( tool_panel_section_id )
+ if tool_panel_section_key in trans.app.toolbox.tool_panel:
+ # Appending a tool to an existing section in trans.app.toolbox.tool_panel
+ tool_section = trans.app.toolbox.tool_panel[ tool_panel_section_key ]
+ log.debug( "Appending to tool panel section: %s" % str( tool_section.name ) )
+ else:
+ # Appending a new section to trans.app.toolbox.tool_panel
+ try:
+ new_tool_panel_section_name = new_tool_panel_section.name
+ except:
+ new_tool_panel_section_name = new_tool_panel_section
+ if new_tool_panel_section_name:
+ elem = XmlET.Element( 'section' )
+ elem.attrib[ 'name' ] = new_tool_panel_section_name
+ elem.attrib[ 'id' ] = tool_panel_section_id
+ elem.attrib[ 'version' ] = ''
+ tool_section = galaxy.tools.ToolSection( elem )
+ trans.app.toolbox.tool_panel[ tool_panel_section_key ] = tool_section
+ log.debug( "Loading new tool panel section: %s" % str( tool_section.name ) )
+ else:
+ log.debug( "Unable to create new tool pane section using received new_tool_panel_section: %s" % str( new_tool_panel_section ))
+ return None, None
+ return tool_panel_section_key, tool_section
+
def get_tool_path_install_dir( partial_install_dir, shed_tool_conf_dict, tool_dict, config_elems ):
for elem in config_elems:
if elem.tag == 'tool':
@@ -614,8 +639,8 @@
if 'tools' in metadata:
# This forces everything to be loaded into the same section (or no section) in the tool panel.
if no_changes_checked:
- # Make sure the no_changes checkbox overrides the new_tool_panel_section if the user checked the checkbox and
- # entered something into the field.
+ # Make sure the no_changes check box overrides the new_tool_panel_section if the user checked the check box and entered something
+ # into the field.
new_tool_panel_section = None
if 'tool_panel_section' in metadata:
tool_panel_dict = metadata[ 'tool_panel_section' ]
@@ -630,42 +655,29 @@
original_section_id = tool_section_dict[ 'id' ]
original_section_name = tool_section_dict[ 'name' ]
if original_section_id:
- tool_panel_section_key = 'section_%s' % str( original_section_id )
- if tool_panel_section_key in trans.app.toolbox.tool_panel:
- tool_section = trans.app.toolbox.tool_panel[ tool_panel_section_key ]
- else:
- # The section in which the tool was originally loaded used to be in the tool panel, but no longer is.
- elem = XmlET.Element( 'section' )
- elem.attrib[ 'name' ] = original_section_name
- elem.attrib[ 'id' ] = original_section_id
- elem.attrib[ 'version' ] = ''
- tool_section = galaxy.tools.ToolSection( elem )
- trans.app.toolbox.tool_panel[ tool_panel_section_key ] = tool_section
+ tool_panel_section_key, tool_section = get_or_create_tool_section( trans,
+ tool_panel_section_id=original_section_id,
+ new_tool_panel_section=new_tool_panel_section )
else:
# The user elected to change the tool panel section to contain the tools.
- if new_tool_panel_section:
- section_id = new_tool_panel_section.lower().replace( ' ', '_' )
- tool_panel_section_key = 'section_%s' % str( section_id )
- if tool_panel_section_key in trans.app.toolbox.tool_panel:
- # Appending a tool to an existing section in trans.app.toolbox.tool_panel
- log.debug( "Appending to tool panel section: %s" % new_tool_panel_section )
- tool_section = trans.app.toolbox.tool_panel[ tool_panel_section_key ]
- else:
- # Appending a new section to trans.app.toolbox.tool_panel
- log.debug( "Loading new tool panel section: %s" % new_tool_panel_section )
- elem = XmlET.Element( 'section' )
- elem.attrib[ 'name' ] = new_tool_panel_section
- elem.attrib[ 'id' ] = section_id
- elem.attrib[ 'version' ] = ''
- tool_section = galaxy.tools.ToolSection( elem )
- trans.app.toolbox.tool_panel[ tool_panel_section_key ] = tool_section
- elif tool_panel_section:
- tool_panel_section_key = 'section_%s' % tool_panel_section
- tool_section = trans.app.toolbox.tool_panel[ tool_panel_section_key ]
- else:
- tool_section = None
+ tool_panel_section_key, tool_section = handle_tool_panel_section( trans,
+ tool_panel_section=tool_panel_section,
+ new_tool_panel_section=new_tool_panel_section )
return tool_section, new_tool_panel_section, tool_panel_section_key
+def handle_tool_panel_section( trans, tool_panel_section=None, new_tool_panel_section=None ):
+ if new_tool_panel_section:
+ section_id = new_tool_panel_section.lower().replace( ' ', '_' )
+ tool_panel_section_key, tool_section = get_or_create_tool_section( trans,
+ tool_panel_section_id=section_id,
+ new_tool_panel_section=new_tool_panel_section )
+ elif tool_panel_section:
+ tool_panel_section_key = 'section_%s' % str( tool_panel_section )
+ tool_section = trans.app.toolbox.tool_panel[ tool_panel_section_key ]
+ else:
+ return None, None
+ return tool_panel_section_key, tool_section
+
def handle_tool_versions( app, tool_version_dicts, tool_shed_repository ):
"""
Using the list of tool_version_dicts retrieved from the tool shed (one per changeset revison up to the currently installed changeset revision),
https://bitbucket.org/galaxy/galaxy-central/commits/83213accd759/
Changeset: 83213accd759
User: greg
Date: 2013-06-03 18:05:49
Summary: Merged from next-stable
Affected #: 5 files
diff -r 1380f4546418736a0645267868de615ac6d1b0e1 -r 83213accd759e752538c025275557d3dfc5d1433 lib/tool_shed/galaxy_install/repository_util.py
--- a/lib/tool_shed/galaxy_install/repository_util.py
+++ b/lib/tool_shed/galaxy_install/repository_util.py
@@ -388,25 +388,9 @@
tool_shed_url = installation_dict[ 'tool_shed_url' ]
# Handle contained tools.
if includes_tools_for_display_in_tool_panel and ( new_tool_panel_section or tool_panel_section ):
- if new_tool_panel_section:
- section_id = new_tool_panel_section.lower().replace( ' ', '_' )
- tool_panel_section_key = 'section_%s' % str( section_id )
- if tool_panel_section_key in trans.app.toolbox.tool_panel:
- # Appending a tool to an existing section in trans.app.toolbox.tool_panel
- log.debug( "Appending to tool panel section: %s" % new_tool_panel_section )
- tool_section = trans.app.toolbox.tool_panel[ tool_panel_section_key ]
- else:
- # Appending a new section to trans.app.toolbox.tool_panel
- log.debug( "Loading new tool panel section: %s" % new_tool_panel_section )
- elem = XmlET.Element( 'section' )
- elem.attrib[ 'name' ] = new_tool_panel_section
- elem.attrib[ 'id' ] = section_id
- elem.attrib[ 'version' ] = ''
- tool_section = tools.ToolSection( elem )
- trans.app.toolbox.tool_panel[ tool_panel_section_key ] = tool_section
- else:
- tool_panel_section_key = 'section_%s' % tool_panel_section
- tool_section = trans.app.toolbox.tool_panel[ tool_panel_section_key ]
+ tool_panel_section_key, tool_section = tool_util.handle_tool_panel_section( trans,
+ tool_panel_section=tool_panel_section,
+ new_tool_panel_section=new_tool_panel_section )
else:
tool_panel_section_key = None
tool_section = None
diff -r 1380f4546418736a0645267868de615ac6d1b0e1 -r 83213accd759e752538c025275557d3dfc5d1433 lib/tool_shed/util/datatype_util.py
--- a/lib/tool_shed/util/datatype_util.py
+++ b/lib/tool_shed/util/datatype_util.py
@@ -34,7 +34,7 @@
relative_path_to_datatype_file_name = None
datatype_files = datatypes_config_root.find( 'datatype_files' )
datatype_class_modules = []
- if datatype_files:
+ if datatype_files is not None:
# The <datatype_files> tag set contains any number of <datatype_file> tags.
# <datatype_files>
# <datatype_file name="gmap.py"/>
@@ -74,14 +74,14 @@
os.write( fd, '<?xml version="1.0"?>\n' )
os.write( fd, '<datatypes>\n' )
os.write( fd, '%s' % xml_util.xml_to_string( registration ) )
- if sniffers:
+ if sniffers is not None:
os.write( fd, '%s' % xml_util.xml_to_string( sniffers ) )
os.write( fd, '</datatypes>\n' )
os.close( fd )
os.chmod( proprietary_datatypes_config, 0644 )
# Load proprietary datatypes
app.datatypes_registry.load_datatypes( root_dir=app.config.root, config=proprietary_datatypes_config, deactivate=deactivate, override=override )
- if datatype_files:
+ if datatype_files is not None:
try:
os.unlink( proprietary_datatypes_config )
except:
diff -r 1380f4546418736a0645267868de615ac6d1b0e1 -r 83213accd759e752538c025275557d3dfc5d1433 lib/tool_shed/util/metadata_util.py
--- a/lib/tool_shed/util/metadata_util.py
+++ b/lib/tool_shed/util/metadata_util.py
@@ -435,14 +435,14 @@
root = tree.getroot()
repository_datatype_code_files = []
datatype_files = root.find( 'datatype_files' )
- if datatype_files:
+ if datatype_files is not None:
for elem in datatype_files.findall( 'datatype_file' ):
name = elem.get( 'name', None )
repository_datatype_code_files.append( name )
metadata_dict[ 'datatype_files' ] = repository_datatype_code_files
datatypes = []
registration = root.find( 'registration' )
- if registration:
+ if registration is not None:
for elem in registration.findall( 'datatype' ):
converters = []
display_app_containers = []
diff -r 1380f4546418736a0645267868de615ac6d1b0e1 -r 83213accd759e752538c025275557d3dfc5d1433 lib/tool_shed/util/repository_dependency_util.py
--- a/lib/tool_shed/util/repository_dependency_util.py
+++ b/lib/tool_shed/util/repository_dependency_util.py
@@ -203,22 +203,15 @@
else:
# We're installing a new tool shed repository that does not yet have a database record. This repository is a repository dependency
# of a different repository being installed.
- if new_tool_panel_section:
- section_id = new_tool_panel_section.lower().replace( ' ', '_' )
- tool_panel_section_key = 'section_%s' % str( section_id )
- elif tool_panel_section:
- tool_panel_section_key = 'section_%s' % tool_panel_section
- else:
- tool_panel_section_key = None
+ tool_panel_section_key, tool_section = tool_util.handle_tool_panel_section( trans,
+ tool_panel_section=tool_panel_section,
+ new_tool_panel_section=new_tool_panel_section )
+
else:
# We're installing a new tool shed repository that does not yet have a database record.
- if new_tool_panel_section:
- section_id = new_tool_panel_section.lower().replace( ' ', '_' )
- tool_panel_section_key = 'section_%s' % str( section_id )
- elif tool_panel_section:
- tool_panel_section_key = 'section_%s' % tool_panel_section
- else:
- tool_panel_section_key = None
+ tool_panel_section_key, tool_section = tool_util.handle_tool_panel_section( trans,
+ tool_panel_section=tool_panel_section,
+ new_tool_panel_section=new_tool_panel_section )
tool_shed_repository = suc.create_or_update_tool_shed_repository( app=trans.app,
name=name,
description=description,
@@ -239,7 +232,7 @@
tool_panel_section_keys.append( tool_panel_section_key )
filtered_repo_info_dicts.append( repo_info_dict )
# Build repository dependency relationships even if the user chose to not install repository dependencies.
- build_repository_dependency_relationships( trans, all_repo_info_dicts, all_created_or_updated_tool_shed_repositories )
+ build_repository_dependency_relationships( trans, all_repo_info_dicts, all_created_or_updated_tool_shed_repositories )
return created_or_updated_tool_shed_repositories, tool_panel_section_keys, all_repo_info_dicts, filtered_repo_info_dicts, message
def generate_message_for_invalid_repository_dependencies( metadata_dict ):
diff -r 1380f4546418736a0645267868de615ac6d1b0e1 -r 83213accd759e752538c025275557d3dfc5d1433 lib/tool_shed/util/tool_util.py
--- a/lib/tool_shed/util/tool_util.py
+++ b/lib/tool_shed/util/tool_util.py
@@ -458,6 +458,31 @@
fh.close()
return sample_files, deleted_sample_files
+def get_or_create_tool_section( trans, tool_panel_section_id, new_tool_panel_section=None ):
+ tool_panel_section_key = 'section_%s' % str( tool_panel_section_id )
+ if tool_panel_section_key in trans.app.toolbox.tool_panel:
+ # Appending a tool to an existing section in trans.app.toolbox.tool_panel
+ tool_section = trans.app.toolbox.tool_panel[ tool_panel_section_key ]
+ log.debug( "Appending to tool panel section: %s" % str( tool_section.name ) )
+ else:
+ # Appending a new section to trans.app.toolbox.tool_panel
+ try:
+ new_tool_panel_section_name = new_tool_panel_section.name
+ except:
+ new_tool_panel_section_name = new_tool_panel_section
+ if new_tool_panel_section_name:
+ elem = XmlET.Element( 'section' )
+ elem.attrib[ 'name' ] = new_tool_panel_section_name
+ elem.attrib[ 'id' ] = tool_panel_section_id
+ elem.attrib[ 'version' ] = ''
+ tool_section = galaxy.tools.ToolSection( elem )
+ trans.app.toolbox.tool_panel[ tool_panel_section_key ] = tool_section
+ log.debug( "Loading new tool panel section: %s" % str( tool_section.name ) )
+ else:
+ log.debug( "Unable to create new tool pane section using received new_tool_panel_section: %s" % str( new_tool_panel_section ))
+ return None, None
+ return tool_panel_section_key, tool_section
+
def get_tool_path_install_dir( partial_install_dir, shed_tool_conf_dict, tool_dict, config_elems ):
for elem in config_elems:
if elem.tag == 'tool':
@@ -614,8 +639,8 @@
if 'tools' in metadata:
# This forces everything to be loaded into the same section (or no section) in the tool panel.
if no_changes_checked:
- # Make sure the no_changes checkbox overrides the new_tool_panel_section if the user checked the checkbox and
- # entered something into the field.
+ # Make sure the no_changes check box overrides the new_tool_panel_section if the user checked the check box and entered something
+ # into the field.
new_tool_panel_section = None
if 'tool_panel_section' in metadata:
tool_panel_dict = metadata[ 'tool_panel_section' ]
@@ -630,42 +655,29 @@
original_section_id = tool_section_dict[ 'id' ]
original_section_name = tool_section_dict[ 'name' ]
if original_section_id:
- tool_panel_section_key = 'section_%s' % str( original_section_id )
- if tool_panel_section_key in trans.app.toolbox.tool_panel:
- tool_section = trans.app.toolbox.tool_panel[ tool_panel_section_key ]
- else:
- # The section in which the tool was originally loaded used to be in the tool panel, but no longer is.
- elem = XmlET.Element( 'section' )
- elem.attrib[ 'name' ] = original_section_name
- elem.attrib[ 'id' ] = original_section_id
- elem.attrib[ 'version' ] = ''
- tool_section = galaxy.tools.ToolSection( elem )
- trans.app.toolbox.tool_panel[ tool_panel_section_key ] = tool_section
+ tool_panel_section_key, tool_section = get_or_create_tool_section( trans,
+ tool_panel_section_id=original_section_id,
+ new_tool_panel_section=new_tool_panel_section )
else:
# The user elected to change the tool panel section to contain the tools.
- if new_tool_panel_section:
- section_id = new_tool_panel_section.lower().replace( ' ', '_' )
- tool_panel_section_key = 'section_%s' % str( section_id )
- if tool_panel_section_key in trans.app.toolbox.tool_panel:
- # Appending a tool to an existing section in trans.app.toolbox.tool_panel
- log.debug( "Appending to tool panel section: %s" % new_tool_panel_section )
- tool_section = trans.app.toolbox.tool_panel[ tool_panel_section_key ]
- else:
- # Appending a new section to trans.app.toolbox.tool_panel
- log.debug( "Loading new tool panel section: %s" % new_tool_panel_section )
- elem = XmlET.Element( 'section' )
- elem.attrib[ 'name' ] = new_tool_panel_section
- elem.attrib[ 'id' ] = section_id
- elem.attrib[ 'version' ] = ''
- tool_section = galaxy.tools.ToolSection( elem )
- trans.app.toolbox.tool_panel[ tool_panel_section_key ] = tool_section
- elif tool_panel_section:
- tool_panel_section_key = 'section_%s' % tool_panel_section
- tool_section = trans.app.toolbox.tool_panel[ tool_panel_section_key ]
- else:
- tool_section = None
+ tool_panel_section_key, tool_section = handle_tool_panel_section( trans,
+ tool_panel_section=tool_panel_section,
+ new_tool_panel_section=new_tool_panel_section )
return tool_section, new_tool_panel_section, tool_panel_section_key
+def handle_tool_panel_section( trans, tool_panel_section=None, new_tool_panel_section=None ):
+ if new_tool_panel_section:
+ section_id = new_tool_panel_section.lower().replace( ' ', '_' )
+ tool_panel_section_key, tool_section = get_or_create_tool_section( trans,
+ tool_panel_section_id=section_id,
+ new_tool_panel_section=new_tool_panel_section )
+ elif tool_panel_section:
+ tool_panel_section_key = 'section_%s' % str( tool_panel_section )
+ tool_section = trans.app.toolbox.tool_panel[ tool_panel_section_key ]
+ else:
+ return None, None
+ return tool_panel_section_key, tool_section
+
def handle_tool_versions( app, tool_version_dicts, tool_shed_repository ):
"""
Using the list of tool_version_dicts retrieved from the tool shed (one per changeset revison up to the currently installed changeset revision),
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/3df028d4cab4/
Changeset: 3df028d4cab4
Branch: next-stable
User: jgoecks
Date: 2013-06-03 15:43:42
Summary: Remove documentation for Tophat -F option because it is no longer supported.
Affected #: 2 files
diff -r 6dbe92e40de6d352b4d54ec31c89e83fafcdd532 -r 3df028d4cab449f4ee2b5db771ec545d88e3440e tools/ngs_rna/tophat2_wrapper.xml
--- a/tools/ngs_rna/tophat2_wrapper.xml
+++ b/tools/ngs_rna/tophat2_wrapper.xml
@@ -350,7 +350,7 @@
<test><!-- Tophat commands:
bowtie2-build -f test-data/tophat_in1.fasta tophat_in1
- tophat2 -o tmp_dir -p 1 -a 8 -m 0 -i 70 -I 500000 -F 0.15 -g 40 +coverage-search +min-coverage-intron 50 +max-coverage-intro 20000 +segment-mismatches 2 +segment-length 25 +microexon-search tophat_in1 test-data/tophat_in2.fastqsanger
+ tophat2 -o tmp_dir -p 1 -a 8 -m 0 -i 70 -I 500000 -g 40 +coverage-search +min-coverage-intron 50 +max-coverage-intro 20000 +segment-mismatches 2 +segment-length 25 +microexon-search tophat_in1 test-data/tophat_in2.fastqsanger
Replace the + with double-dash
Rename the files in tmp_dir appropriately
-->
@@ -400,7 +400,7 @@
<!-- Test base-space paired-end reads with user-supplied reference fasta and full parameters --><test><!-- TopHat commands:
- tophat2 -o tmp_dir -r 20 -p 1 -a 8 -m 0 -i 70 -I 500000 -F 0.15 -g 40 +coverage-search +min-coverage-intron 50 +max-coverage-intro 20000 +segment-mismatches 2 +segment-length 25 +microexon-search +report_discordant_pairs tophat_in1 test-data/tophat_in2.fastqsanger test-data/tophat_in3.fastqsanger
+ tophat2 -o tmp_dir -r 20 -p 1 -a 8 -m 0 -i 70 -I 500000 -g 40 +coverage-search +min-coverage-intron 50 +max-coverage-intro 20000 +segment-mismatches 2 +segment-length 25 +microexon-search +report_discordant_pairs tophat_in1 test-data/tophat_in2.fastqsanger test-data/tophat_in3.fastqsanger
Replace the + with double-dash
Rename the files in tmp_dir appropriately
-->
@@ -506,9 +506,6 @@
-m/--splice-mismatches INT The maximum number of mismatches that may appear in the "anchor" region of a spliced alignment. The default is 0.
-i/--min-intron-length INT The minimum intron length. TopHat will ignore donor/acceptor pairs closer than this many bases apart. The default is 70.
-I/--max-intron-length INT The maximum intron length. When searching for junctions ab initio, TopHat will ignore donor/acceptor pairs farther than this many bases apart, except when such a pair is supported by a split segment alignment of a long read. The default is 500000.
- -F/--min-isoform-fraction 0.0-1.0 TopHat filters out junctions supported by too few alignments. Suppose a junction spanning two exons, is supported by S reads. Let the average depth of coverage of
- exon A be D, and assume that it is higher than B. If S / D is less than the minimum isoform fraction, the junction is not reported. A value of zero disables the
- filter. The default is 0.15.
-g/--max-multihits INT Instructs TopHat to allow up to this many alignments to the reference for a given read, and suppresses all alignments for reads with more than this many
alignments. The default is 40.
-G/--GTF [GTF 2.2 file] Supply TopHat with a list of gene model annotations. TopHat will use the exon records in this file to build a set of known splice junctions for each gene, and will attempt to align reads to these junctions even if they would not normally be covered by the initial mapping.
diff -r 6dbe92e40de6d352b4d54ec31c89e83fafcdd532 -r 3df028d4cab449f4ee2b5db771ec545d88e3440e tools/ngs_rna/tophat_wrapper.xml
--- a/tools/ngs_rna/tophat_wrapper.xml
+++ b/tools/ngs_rna/tophat_wrapper.xml
@@ -403,7 +403,7 @@
<test><!-- Tophat commands:
bowtie-build -f test-data/tophat_in1.fasta tophat_in1
- tophat -o tmp_dir -p 1 -a 8 -m 0 -i 70 -I 500000 -F 0.15 -g 40 +coverage-search +min-coverage-intron 50 +max-coverage-intro 20000 +segment-mismatches 2 +segment-length 25 +closure-search +min-closure-exon 50 +min-closure-intron 50 +max-closure-intro 5000 +microexon-search tophat_in1 test-data/tophat_in2.fastqsanger
+ tophat -o tmp_dir -p 1 -a 8 -m 0 -i 70 -I 500000 -g 40 +coverage-search +min-coverage-intron 50 +max-coverage-intro 20000 +segment-mismatches 2 +segment-length 25 +closure-search +min-closure-exon 50 +min-closure-intron 50 +max-closure-intro 5000 +microexon-search tophat_in1 test-data/tophat_in2.fastqsanger
Replace the + with double-dash
Rename the files in tmp_dir appropriately
-->
@@ -445,7 +445,7 @@
<!-- Test base-space paired-end reads with user-supplied reference fasta and full parameters --><test><!-- TopHat commands:
- tophat -o tmp_dir -r 20 -p 1 -a 8 -m 0 -i 70 -I 500000 -F 0.15 -g 40 +coverage-search +min-coverage-intron 50 +max-coverage-intro 20000 +segment-mismatches 2 +segment-length 25 +microexon-search tophat_in1 test-data/tophat_in2.fastqsanger test-data/tophat_in3.fastqsanger
+ tophat -o tmp_dir -r 20 -p 1 -a 8 -m 0 -i 70 -I 500000 -g 40 +coverage-search +min-coverage-intron 50 +max-coverage-intro 20000 +segment-mismatches 2 +segment-length 25 +microexon-search tophat_in1 test-data/tophat_in2.fastqsanger test-data/tophat_in3.fastqsanger
Replace the + with double-dash
Rename the files in tmp_dir appropriately
-->
@@ -538,9 +538,6 @@
-m/--splice-mismatches INT The maximum number of mismatches that may appear in the "anchor" region of a spliced alignment. The default is 0.
-i/--min-intron-length INT The minimum intron length. TopHat will ignore donor/acceptor pairs closer than this many bases apart. The default is 70.
-I/--max-intron-length INT The maximum intron length. When searching for junctions ab initio, TopHat will ignore donor/acceptor pairs farther than this many bases apart, except when such a pair is supported by a split segment alignment of a long read. The default is 500000.
- -F/--min-isoform-fraction 0.0-1.0 TopHat filters out junctions supported by too few alignments. Suppose a junction spanning two exons, is supported by S reads. Let the average depth of coverage of
- exon A be D, and assume that it is higher than B. If S / D is less than the minimum isoform fraction, the junction is not reported. A value of zero disables the
- filter. The default is 0.15.
-g/--max-multihits INT Instructs TopHat to allow up to this many alignments to the reference for a given read, and suppresses all alignments for reads with more than this many
alignments. The default is 40.
-G/--GTF [GTF 2.2 file] Supply TopHat with a list of gene model annotations. TopHat will use the exon records in this file to build a set of known splice junctions for each gene, and will attempt to align reads to these junctions even if they would not normally be covered by the initial mapping.
https://bitbucket.org/galaxy/galaxy-central/commits/1380f4546418/
Changeset: 1380f4546418
User: jgoecks
Date: 2013-06-03 15:44:02
Summary: Automated merge of next-stable
Affected #: 2 files
diff -r 716f29e4c77d2246a49c92ea205734f768369fbb -r 1380f4546418736a0645267868de615ac6d1b0e1 tools/ngs_rna/tophat2_wrapper.xml
--- a/tools/ngs_rna/tophat2_wrapper.xml
+++ b/tools/ngs_rna/tophat2_wrapper.xml
@@ -350,7 +350,7 @@
<test><!-- Tophat commands:
bowtie2-build -f test-data/tophat_in1.fasta tophat_in1
- tophat2 -o tmp_dir -p 1 -a 8 -m 0 -i 70 -I 500000 -F 0.15 -g 40 +coverage-search +min-coverage-intron 50 +max-coverage-intro 20000 +segment-mismatches 2 +segment-length 25 +microexon-search tophat_in1 test-data/tophat_in2.fastqsanger
+ tophat2 -o tmp_dir -p 1 -a 8 -m 0 -i 70 -I 500000 -g 40 +coverage-search +min-coverage-intron 50 +max-coverage-intro 20000 +segment-mismatches 2 +segment-length 25 +microexon-search tophat_in1 test-data/tophat_in2.fastqsanger
Replace the + with double-dash
Rename the files in tmp_dir appropriately
-->
@@ -400,7 +400,7 @@
<!-- Test base-space paired-end reads with user-supplied reference fasta and full parameters --><test><!-- TopHat commands:
- tophat2 -o tmp_dir -r 20 -p 1 -a 8 -m 0 -i 70 -I 500000 -F 0.15 -g 40 +coverage-search +min-coverage-intron 50 +max-coverage-intro 20000 +segment-mismatches 2 +segment-length 25 +microexon-search +report_discordant_pairs tophat_in1 test-data/tophat_in2.fastqsanger test-data/tophat_in3.fastqsanger
+ tophat2 -o tmp_dir -r 20 -p 1 -a 8 -m 0 -i 70 -I 500000 -g 40 +coverage-search +min-coverage-intron 50 +max-coverage-intro 20000 +segment-mismatches 2 +segment-length 25 +microexon-search +report_discordant_pairs tophat_in1 test-data/tophat_in2.fastqsanger test-data/tophat_in3.fastqsanger
Replace the + with double-dash
Rename the files in tmp_dir appropriately
-->
@@ -506,9 +506,6 @@
-m/--splice-mismatches INT The maximum number of mismatches that may appear in the "anchor" region of a spliced alignment. The default is 0.
-i/--min-intron-length INT The minimum intron length. TopHat will ignore donor/acceptor pairs closer than this many bases apart. The default is 70.
-I/--max-intron-length INT The maximum intron length. When searching for junctions ab initio, TopHat will ignore donor/acceptor pairs farther than this many bases apart, except when such a pair is supported by a split segment alignment of a long read. The default is 500000.
- -F/--min-isoform-fraction 0.0-1.0 TopHat filters out junctions supported by too few alignments. Suppose a junction spanning two exons, is supported by S reads. Let the average depth of coverage of
- exon A be D, and assume that it is higher than B. If S / D is less than the minimum isoform fraction, the junction is not reported. A value of zero disables the
- filter. The default is 0.15.
-g/--max-multihits INT Instructs TopHat to allow up to this many alignments to the reference for a given read, and suppresses all alignments for reads with more than this many
alignments. The default is 40.
-G/--GTF [GTF 2.2 file] Supply TopHat with a list of gene model annotations. TopHat will use the exon records in this file to build a set of known splice junctions for each gene, and will attempt to align reads to these junctions even if they would not normally be covered by the initial mapping.
diff -r 716f29e4c77d2246a49c92ea205734f768369fbb -r 1380f4546418736a0645267868de615ac6d1b0e1 tools/ngs_rna/tophat_wrapper.xml
--- a/tools/ngs_rna/tophat_wrapper.xml
+++ b/tools/ngs_rna/tophat_wrapper.xml
@@ -403,7 +403,7 @@
<test><!-- Tophat commands:
bowtie-build -f test-data/tophat_in1.fasta tophat_in1
- tophat -o tmp_dir -p 1 -a 8 -m 0 -i 70 -I 500000 -F 0.15 -g 40 +coverage-search +min-coverage-intron 50 +max-coverage-intro 20000 +segment-mismatches 2 +segment-length 25 +closure-search +min-closure-exon 50 +min-closure-intron 50 +max-closure-intro 5000 +microexon-search tophat_in1 test-data/tophat_in2.fastqsanger
+ tophat -o tmp_dir -p 1 -a 8 -m 0 -i 70 -I 500000 -g 40 +coverage-search +min-coverage-intron 50 +max-coverage-intro 20000 +segment-mismatches 2 +segment-length 25 +closure-search +min-closure-exon 50 +min-closure-intron 50 +max-closure-intro 5000 +microexon-search tophat_in1 test-data/tophat_in2.fastqsanger
Replace the + with double-dash
Rename the files in tmp_dir appropriately
-->
@@ -445,7 +445,7 @@
<!-- Test base-space paired-end reads with user-supplied reference fasta and full parameters --><test><!-- TopHat commands:
- tophat -o tmp_dir -r 20 -p 1 -a 8 -m 0 -i 70 -I 500000 -F 0.15 -g 40 +coverage-search +min-coverage-intron 50 +max-coverage-intro 20000 +segment-mismatches 2 +segment-length 25 +microexon-search tophat_in1 test-data/tophat_in2.fastqsanger test-data/tophat_in3.fastqsanger
+ tophat -o tmp_dir -r 20 -p 1 -a 8 -m 0 -i 70 -I 500000 -g 40 +coverage-search +min-coverage-intron 50 +max-coverage-intro 20000 +segment-mismatches 2 +segment-length 25 +microexon-search tophat_in1 test-data/tophat_in2.fastqsanger test-data/tophat_in3.fastqsanger
Replace the + with double-dash
Rename the files in tmp_dir appropriately
-->
@@ -538,9 +538,6 @@
-m/--splice-mismatches INT The maximum number of mismatches that may appear in the "anchor" region of a spliced alignment. The default is 0.
-i/--min-intron-length INT The minimum intron length. TopHat will ignore donor/acceptor pairs closer than this many bases apart. The default is 70.
-I/--max-intron-length INT The maximum intron length. When searching for junctions ab initio, TopHat will ignore donor/acceptor pairs farther than this many bases apart, except when such a pair is supported by a split segment alignment of a long read. The default is 500000.
- -F/--min-isoform-fraction 0.0-1.0 TopHat filters out junctions supported by too few alignments. Suppose a junction spanning two exons, is supported by S reads. Let the average depth of coverage of
- exon A be D, and assume that it is higher than B. If S / D is less than the minimum isoform fraction, the junction is not reported. A value of zero disables the
- filter. The default is 0.15.
-g/--max-multihits INT Instructs TopHat to allow up to this many alignments to the reference for a given read, and suppresses all alignments for reads with more than this many
alignments. The default is 40.
-G/--GTF [GTF 2.2 file] Supply TopHat with a list of gene model annotations. TopHat will use the exon records in this file to build a set of known splice junctions for each gene, and will attempt to align reads to these junctions even if they would not normally be covered by the initial mapping.
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/6dbe92e40de6/
Changeset: 6dbe92e40de6
Branch: next-stable
User: greg
Date: 2013-06-01 23:22:27
Summary: Fix for resetting all metadata on writable repositories in the tool shed when the user is not an admin.
Affected #: 1 file
diff -r 016b0b22e826625ce39621aeebccdee4d3f6a959 -r 6dbe92e40de6d352b4d54ec31c89e83fafcdd532 templates/webapps/tool_shed/common/reset_metadata_on_selected_repositories.mako
--- a/templates/webapps/tool_shed/common/reset_metadata_on_selected_repositories.mako
+++ b/templates/webapps/tool_shed/common/reset_metadata_on_selected_repositories.mako
@@ -19,7 +19,15 @@
<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" >
+ <%
+ if trans.user_is_admin():
+ controller = 'admin'
+ action = 'reset_metadata_on_selected_repositories_in_tool_shed'
+ else:
+ controller = 'repository'
+ action = 'reset_metadata_on_my_writable_repositories_in_tool_shed'
+ %>
+ <form name="reset_metadata_on_selected_repositories" id="reset_metadata_on_selected_repositories" action="${h.url_for( controller=controller, action=action )}" 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>
https://bitbucket.org/galaxy/galaxy-central/commits/716f29e4c77d/
Changeset: 716f29e4c77d
User: greg
Date: 2013-06-01 23:23:12
Summary: Merged from next-stable
Affected #: 1 file
diff -r f1bbaa14ddd16181c59d89a3f66d49a6e360c327 -r 716f29e4c77d2246a49c92ea205734f768369fbb templates/webapps/tool_shed/common/reset_metadata_on_selected_repositories.mako
--- a/templates/webapps/tool_shed/common/reset_metadata_on_selected_repositories.mako
+++ b/templates/webapps/tool_shed/common/reset_metadata_on_selected_repositories.mako
@@ -19,7 +19,15 @@
<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" >
+ <%
+ if trans.user_is_admin():
+ controller = 'admin'
+ action = 'reset_metadata_on_selected_repositories_in_tool_shed'
+ else:
+ controller = 'repository'
+ action = 'reset_metadata_on_my_writable_repositories_in_tool_shed'
+ %>
+ <form name="reset_metadata_on_selected_repositories" id="reset_metadata_on_selected_repositories" action="${h.url_for( controller=controller, action=action )}" 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>
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/016b0b22e826/
Changeset: 016b0b22e826
Branch: next-stable
User: greg
Date: 2013-06-01 20:29:31
Summary: Strip traling / from tool shed url when using it's value to search the Galaxy database.
Affected #: 1 file
diff -r c3fe9ba931c20975711dad6e410c9a4d0601c1fc -r 016b0b22e826625ce39621aeebccdee4d3f6a959 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
@@ -685,6 +685,8 @@
def get_repository_for_dependency_relationship( app, tool_shed, name, owner, changeset_revision ):
"""Return a tool shed repository database record that is defined by either the current changeset revision or the installed_changeset_revision."""
# This method is used only in Galaxy, not the tool shed.
+ if tool_shed.endswith( '/' ):
+ tool_shed = tool_shed.rstrip( '/' )
repository = get_tool_shed_repository_by_shed_name_owner_installed_changeset_revision( app=app,
tool_shed=tool_shed,
name=name,
https://bitbucket.org/galaxy/galaxy-central/commits/f1bbaa14ddd1/
Changeset: f1bbaa14ddd1
User: greg
Date: 2013-06-01 20:30:16
Summary: Merged from next-stable
Affected #: 1 file
diff -r 7c9738db4d0004490329a87e15091a1be02628b6 -r f1bbaa14ddd16181c59d89a3f66d49a6e360c327 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
@@ -685,6 +685,8 @@
def get_repository_for_dependency_relationship( app, tool_shed, name, owner, changeset_revision ):
"""Return a tool shed repository database record that is defined by either the current changeset revision or the installed_changeset_revision."""
# This method is used only in Galaxy, not the tool shed.
+ if tool_shed.endswith( '/' ):
+ tool_shed = tool_shed.rstrip( '/' )
repository = get_tool_shed_repository_by_shed_name_owner_installed_changeset_revision( app=app,
tool_shed=tool_shed,
name=name,
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/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
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