1 new changeset in galaxy-central:
http://bitbucket.org/galaxy/galaxy-central/changeset/5b9fe1d9b4fa/
changeset: 5b9fe1d9b4fa
user: kanwei
date: 2011-06-17 21:23:28
summary: Upgrade to Mako 0.4.1 and fix failing tests due to entity escaping. Improve error message for checking strings in history.
affected #: 4 files (501 bytes)
--- a/eggs.ini Fri Jun 17 15:00:22 2011 -0400
+++ b/eggs.ini Fri Jun 17 15:23:28 2011 -0400
@@ -38,7 +38,7 @@
elementtree = 1.2.6_20050316
GeneTrack = 2.0.0_beta_1
lrucache = 0.2
-Mako = 0.2.5
+Mako = 0.4.1
nose = 0.11.1
NoseHTML = 0.4.1
NoseTestDiff = 0.1
--- a/templates/sharing_base.mako Fri Jun 17 15:00:22 2011 -0400
+++ b/templates/sharing_base.mako Fri Jun 17 15:23:28 2011 -0400
@@ -41,13 +41,11 @@
<%def name="javascripts()">
${parent.javascripts()}
<script type="text/javascript">
- $(document).ready( function()
- {
+ $(document).ready( function() {
//
// Set up slug-editing functionality.
//
- var on_start = function( text_elt )
- {
+ var on_start = function( text_elt ) {
// Replace URL with URL text.
$('#item-url').hide();
$('#item-url-text').show();
@@ -58,8 +56,7 @@
});
};
- var on_finish = function( text_elt )
- {
+ var on_finish = function( text_elt ) {
// Replace URL text with URL.
$('#item-url-text').hide();
$('#item-url').show();
@@ -81,20 +78,17 @@
${parent.stylesheets()}
<style>
## Put some whitespace before each section header.
- h3
- {
+ h3 {
margin-top: 2em;
}
- input.action-button
- {
+ input.action-button {
margin-left: 0;
}
## If page is displayed in panels, pad from edges for readability.
%if context.get('use_panels'):
- div#center
- {
- padding: 10px;
- }
+ div#center {
+ padding: 10px;
+ }
%endif
</style></%def>
@@ -131,8 +125,8 @@
## Require that user have a public username before sharing or publishing an item.
%if trans.get_user().username is None or trans.get_user().username is "":
- To make a ${item_class_name_lc} accessible via link or publish it, you must create a public username:
- <p>
+ <p>To make a ${item_class_name_lc} accessible via link or publish it, you must create a public username:</p>
+
<form action="${h.url_for( action='set_public_username', id=trans.security.encode_id( item.id ) )}"
method="POST"><div class="form-row">
@@ -181,38 +175,36 @@
<p>You can:
<div>
- <form action="${h.url_for( action='sharing', id=trans.security.encode_id( item.id ) )}"
- method="POST">
- %if not item.published:
- ## Item is importable but not published. User can disable importable or publish.
- <input class="action-button" type="submit" name="disable_link_access" value="Disable Access to ${item_class_name} Link">
- <div class="toolParamHelp">Disables ${item_class_name_lc}'s link so that it is not accessible.</div>
- <br>
- <input class="action-button" type="submit" name="publish" value="Publish ${item_class_name}" method="POST">
- <div class="toolParamHelp">Publishes the ${item_class_name_lc} to Galaxy's <a href='${h.url_for( action='list_published' )}' target="_top">Published ${item_class_plural_name}</a> section, where it is publicly listed and searchable.</div>
+ <form action="${h.url_for( action='sharing', id=trans.security.encode_id( item.id ) )}" method="POST">
+ %if not item.published:
+ ## Item is importable but not published. User can disable importable or publish.
+ <input class="action-button" type="submit" name="disable_link_access" value="Disable Access to ${item_class_name} Link">
+ <div class="toolParamHelp">Disables ${item_class_name_lc}'s link so that it is not accessible.</div>
+ <br />
+ <input class="action-button" type="submit" name="publish" value="Publish ${item_class_name}" method="POST">
+ <div class="toolParamHelp">Publishes the ${item_class_name_lc} to Galaxy's <a href='${h.url_for( action='list_published' )}' target="_top">Published ${item_class_plural_name}</a> section, where it is publicly listed and searchable.</div>
- <br>
- %else: ## item.published == True
- ## Item is importable and published. User can unpublish or disable import and unpublish.
- <input class="action-button" type="submit" name="unpublish" value="Unpublish ${item_class_name}">
- <div class="toolParamHelp">Removes this ${item_class_name_lc} from Galaxy's <a href='${h.url_for( action='list_published' )}' target="_top">Published ${item_class_plural_name}</a> section so that it is not publicly listed or searchable.</div>
- <br>
- <input class="action-button" type="submit" name="disable_link_access_and_unpublish" value="Disable Access to ${item_class_name} via Link and Unpublish">
- <div class="toolParamHelp">Disables this ${item_class_name_lc}'s link so that it is not accessible and removes ${item_class_name_lc} from Galaxy's <a href='${h.url_for( action='list_published' )}' target='_top'>Published ${item_class_plural_name}</a> section so that it is not publicly listed or searchable.</div>
- %endif
-
+ <br />
+ %else: ## item.published == True
+ ## Item is importable and published. User can unpublish or disable import and unpublish.
+ <input class="action-button" type="submit" name="unpublish" value="Unpublish ${item_class_name}">
+ <div class="toolParamHelp">Removes this ${item_class_name_lc} from Galaxy's <a href='${h.url_for( action='list_published' )}' target="_top">Published ${item_class_plural_name}</a> section so that it is not publicly listed or searchable.</div>
+ <br />
+ <input class="action-button" type="submit" name="disable_link_access_and_unpublish" value="Disable Access to ${item_class_name} via Link and Unpublish">
+ <div class="toolParamHelp">Disables this ${item_class_name_lc}'s link so that it is not accessible and removes ${item_class_name_lc} from Galaxy's <a href='${h.url_for( action='list_published' )}' target='_top'>Published ${item_class_plural_name}</a> section so that it is not publicly listed or searchable.</div>
+ %endif
</form></div>
%else:
- This ${item_class_name_lc} is currently restricted so that only you and the users listed below can access it. You can:
- <p>
+ <p>This ${item_class_name_lc} is currently restricted so that only you and the users listed below can access it. You can:</p>
+
<form action="${h.url_for( action='sharing', id=trans.security.encode_id(item.id) )}" method="POST"><input class="action-button" type="submit" name="make_accessible_via_link" value="Make ${item_class_name} Accessible via Link"><div class="toolParamHelp">Generates a web link that you can share with other people so that they can view and import the ${item_class_name_lc}.</div>
- <br>
+ <br /><input class="action-button" type="submit" name="make_accessible_and_publish" value="Make ${item_class_name} Accessible and Publish" method="POST"><div class="toolParamHelp">Makes the ${item_class_name_lc} accessible via link (see above) and publishes the ${item_class_name_lc} to Galaxy's <a href='${h.url_for( action='list_published' )}' target='_top'>Published ${item_class_plural_name}</a> section, where it is publicly listed and searchable.</div></form>
@@ -266,13 +258,13 @@
href="${h.url_for( action='share', id=trans.security.encode_id(item.id), use_panels=use_panels )}"><span>Share with a user</span></a>
- <br>
+ <br />
%endif
</div></div>
%endif
- <p><br><br>
+ <br /><br /><a href="${h.url_for( action="list" )}">Back to ${item_class_plural_name} List</a></%def>
\ No newline at end of file
--- a/test/base/twilltestcase.py Fri Jun 17 15:00:22 2011 -0400
+++ b/test/base/twilltestcase.py Fri Jun 17 15:23:28 2011 -0400
@@ -8,6 +8,8 @@
import twill.commands as tc
from twill.other_packages._mechanize_dist import ClientForm
pkg_resources.require( "elementtree" )
+pkg_resources.require( "MarkupSafe" )
+from markupsafe import escape
from elementtree import ElementTree
from galaxy.web import security
from galaxy.web.framework.helpers import iff
@@ -239,7 +241,12 @@
else:
self.visit_page( "history" )
for subpatt in patt.split():
- tc.find(subpatt)
+ try:
+ tc.find( escape(subpatt) )
+ except:
+ fname = self.write_temp_file( tc.browser.get_html() )
+ errmsg = "no match to '%s'\npage content written to '%s'" % ( escape(subpatt), fname )
+ raise AssertionError( errmsg )
self.home()
def clear_history( self ):
"""Empties a history of all datasets"""
@@ -611,13 +618,10 @@
return hids
def makeTfname(self, fname=None):
- """
- safe temp name - preserve the file extension for tools that interpret it
- """
+ """safe temp name - preserve the file extension for tools that interpret it"""
suffix = os.path.split(fname)[-1] # ignore full path
- fd,temp_prefix = tempfile.mkstemp(prefix='tmp',suffix=suffix)
- return temp_prefix
-
+ fd,temp_prefix = tempfile.mkstemp(prefix='tmp',suffix=suffix)
+ return temp_prefix
def verify_dataset_correctness( self, filename, hid=None, wait=True, maxseconds=120, attributes=None ):
"""Verifies that the attributes and contents of a history item meet expectations"""
@@ -673,12 +677,12 @@
self.files_re_match( local_name, temp_name, attributes=attributes )
elif compare == 're_match_multiline':
self.files_re_match_multiline( local_name, temp_name, attributes=attributes )
- elif compare == 'sim_size':
- delta = attributes.get('delta','100')
- s1 = len(data)
- s2 = os.path.getsize(local_name)
- if abs(s1-s2) > int(delta):
- raise Exception, 'Files %s=%db but %s=%db - compare (delta=%s) failed' % (temp_name,s1,local_name,s2,delta)
+ elif compare == 'sim_size':
+ delta = attributes.get('delta','100')
+ s1 = len(data)
+ s2 = os.path.getsize(local_name)
+ if abs(s1-s2) > int(delta):
+ raise Exception, 'Files %s=%db but %s=%db - compare (delta=%s) failed' % (temp_name,s1,local_name,s2,delta)
elif compare == "contains":
self.files_contains( local_name, temp_name, attributes=attributes )
else:
@@ -749,7 +753,7 @@
errmsg += str( err )
raise AssertionError( errmsg )
finally:
- os.remove( temp_name )
+ os.remove( temp_name )
def is_zipped( self, filename ):
if not zipfile.is_zipfile( filename ):
--- a/test/functional/test_history_functions.py Fri Jun 17 15:00:22 2011 -0400
+++ b/test/functional/test_history_functions.py Fri Jun 17 15:23:28 2011 -0400
@@ -282,9 +282,9 @@
.first()
assert hda_3_bed is not None, "Problem retrieving hda_3_bed from database"
# Make sure the deleted datasets are included in the cloned history
- check_str = 'This dataset has been deleted. Click undelete id=%d"' % hda_2_bed.id
+ check_str = 'This dataset has been deleted. Click undelete id=%d' % hda_2_bed.id
self.check_history_for_string( check_str, show_deleted=True )
- check_str = 'This dataset has been deleted. Click undelete id=%d"' % hda_3_bed.id
+ check_str = 'This dataset has been deleted. Click undelete id=%d' % hda_3_bed.id
self.check_history_for_string( check_str, show_deleted=True )
# Test cloning only active datasets
self.clone_history( self.security.encode_id( history3.id ),
@@ -353,7 +353,7 @@
.first()
assert history5 is not None, "Problem retrieving history5 from database"
self.rename_history( self.security.encode_id( history5.id ), history5.name, new_name=urllib.quote( 'history 5' ) )
- # Current history is hostory5
+ # Current history is history5
sa_session.refresh( history5 )
# Due to the limitations of twill ( not functional with the permissions forms ), we're forced
# to do this manually. At this point, we just want to restrict the access permission on history5
@@ -514,7 +514,7 @@
self.visit_page( "root/history_options" )
try:
self.check_page_for_string( 'List</a> histories shared with you by others' )
- raise AssertionError, "history5 still shared with regular_user2 after unshaing it with that user."
+ raise AssertionError, "history5 still shared with regular_user2 after unsharing it with that user."
except:
pass
self.logout()
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 new changeset in galaxy-central:
http://bitbucket.org/galaxy/galaxy-central/changeset/8a3730093edc/
changeset: 8a3730093edc
user: jgoecks
date: 2011-06-17 20:27:47
summary: (1) Create generic methods for copying visualizations and visualization configurations; (2) use generic visualization copying to support importing and cloning visualizations.
affected #: 3 files (3.4 KB)
--- a/lib/galaxy/model/__init__.py Fri Jun 17 13:16:53 2011 -0400
+++ b/lib/galaxy/model/__init__.py Fri Jun 17 14:27:47 2011 -0400
@@ -2244,20 +2244,59 @@
self.user = None
class Visualization( object ):
- def __init__( self ):
+ def __init__( self, user=None, type=None, title=None, dbkey=None, latest_revision=None ):
self.id = None
- self.user = None
- self.type = None
- self.title = None
- self.latest_revision = None
+ self.user = user
+ self.type = type
+ self.title = title
+ self.dbkey = dbkey
+ self.latest_revision = latest_revision
self.revisions = []
+ if self.latest_revision:
+ self.revisions.append( latest_revision )
+
+ def copy( self, user=None, title=None ):
+ """
+ Provide copy of visualization with only its latest revision.
+ """
+ # NOTE: a shallow copy is done: the config is copied as is but datasets
+ # are not copied nor are the dataset ids changed. This means that the
+ # user does not have a copy of the data in his/her history and the
+ # user who owns the datasets may delete them, making them inaccessible
+ # for the current user.
+ # TODO: a deep copy option is needed.
+
+ if not user:
+ user = self.user
+ if not title:
+ title = self.title
+
+ copy_viz = Visualization( user=user, type=self.type, title=title, dbkey=self.dbkey )
+ copy_revision = self.latest_revision.copy( visualization=copy_viz )
+ copy_viz.latest_revision = copy_revision
+ return copy_viz
class VisualizationRevision( object ):
- def __init__( self ):
+ def __init__( self, visualization=None, title=None, dbkey=None, config=None ):
self.id = None
- self.visualization = None
- self.title = None
- self.config = None
+ self.visualization = visualization
+ self.title = title
+ self.dbkey = dbkey
+ self.config = config
+
+ def copy( self, visualization=None ):
+ """
+ Returns a copy of this object.
+ """
+ if not visualization:
+ visualization = self.visualization
+
+ return VisualizationRevision(
+ visualization=visualization,
+ title=self.title,
+ dbkey=self.dbkey,
+ config=self.config
+ )
class VisualizationUserShareAssociation( object ):
def __init__( self ):
--- a/lib/galaxy/web/controllers/visualization.py Fri Jun 17 13:16:53 2011 -0400
+++ b/lib/galaxy/web/controllers/visualization.py Fri Jun 17 14:27:47 2011 -0400
@@ -92,29 +92,21 @@
@web.expose
@web.require_login()
def clone(self, trans, id, *args, **kwargs):
- viz = self.get_visualization( trans, id, check_ownership=False )
+ visualization = self.get_visualization( trans, id, check_ownership=False )
user = trans.get_user()
- if viz.user == user:
- owner = True
- else:
- if trans.sa_session.query( model.VisualizationUserShareAssociation ) \
- .filter_by( user=user, visualization=viz ).count() == 0:
- error( "Visualization is not owned by or shared with current user" )
- owner = False
- new_viz = model.Visualization()
- new_viz.title = "Clone of '%s'" % viz.title
- new_viz.dbkey = viz.dbkey
- new_viz.type = viz.type
- new_viz.latest_revision = viz.latest_revision
- if not owner:
- new_viz.title += " shared by '%s'" % viz.user.email
- new_viz.user = user
+ if trans.sa_session.query( model.VisualizationUserShareAssociation ) \
+ .filter_by( user=user, visualization=visualization ).count() == 0:
+ error( "Visualization is not owned by or shared with current user" )
+
+ cloned_visualization = visualization.copy( user=trans.user, title="Copy of '%s'" % visualization.title )
+
# Persist
session = trans.sa_session
- session.add( new_viz )
+ session.add( cloned_visualization )
session.flush()
+
# Display the management page
- trans.set_message( 'Clone created with name "%s"' % new_viz.title )
+ trans.set_message( 'Copy created with name "%s"' % cloned_visualization.title )
return self.list( trans )
@web.expose
@@ -205,36 +197,14 @@
elif visualization.deleted:
return trans.show_error_message( "You can't import this visualization because it has been deleted.<br>You can %s" % referer_message, use_panels=True )
else:
- #
# Create imported visualization via copy.
- # NOTE: a shallow copy is done: the config is copied as is but datasets
- # are not copied nor are the dataset ids changed. This means that the
- # user does not have a copy of the data in his/her history and the
- # user who owns the datasets may delete them, making them inaccessible
- # for the current user.
- # TODO:
- # -a deep copy is needed;
- # -need to handle custom db keys.
- #
+ # TODO: need to handle custom db keys.
- imported_visualization = model.Visualization()
- imported_visualization.title = visualization.title
- imported_visualization.dbkey = visualization.dbkey
- imported_visualization.type = visualization.type
- imported_visualization.user = trans.user
+ imported_visualization = visualization.copy( user=trans.user, title="imported: " + visualization.title )
- # And the first visualization revision
- imported_visualization_revision = model.VisualizationRevision()
- imported_visualization_revision.title = visualization.title
- imported_visualization_revision.config = visualization.latest_revision.config
- imported_visualization_revision.dbkey = visualization.dbkey
- imported_visualization_revision.visualization = imported_visualization
- imported_visualization.latest_revision = imported_visualization_revision
-
# Persist
session = trans.sa_session
session.add( imported_visualization )
- session.add( imported_visualization_revision )
session.flush()
# Redirect to load galaxy frames.
--- a/templates/visualization/list.mako Fri Jun 17 13:16:53 2011 -0400
+++ b/templates/visualization/list.mako Fri Jun 17 14:27:47 2011 -0400
@@ -13,6 +13,19 @@
<div style="overflow: auto; height: 100%;"><div class="page-container" style="padding: 10px;">
+ %if message:
+ <%
+ try:
+ status
+ except:
+ status = "done"
+ %>
+ <p />
+ <div class="${status}message">
+ ${h.to_unicode( message )}
+ </div>
+ %endif
+
${h.to_unicode( grid )}
<br><br>
@@ -35,6 +48,7 @@
<td><div popupmenu="shared-${i}-popup"><a class="action-button" href="${h.url_for( action='display_by_username_and_slug', username=visualization.user.username, slug=visualization.slug)}" target="_top">View</a>
+ <a class="action-button" href="${h.url_for( action='clone', id=trans.security.encode_id(visualization.id) )}">Copy</a></div></td></tr>
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.
2 new changesets in galaxy-central:
http://bitbucket.org/galaxy/galaxy-central/changeset/55af252cd550/
changeset: 55af252cd550
user: jgoecks
date: 2011-06-17 19:16:34
summary: Enable importing of visualizations via a shallow copy: only a viz's config is copied, not its datasets.
affected #: 2 files (1.1 KB)
--- a/lib/galaxy/web/controllers/visualization.py Fri Jun 17 12:16:53 2011 -0400
+++ b/lib/galaxy/web/controllers/visualization.py Fri Jun 17 13:16:34 2011 -0400
@@ -87,7 +87,7 @@
@web.require_login( "use Galaxy visualizations", use_panels=True )
def index( self, trans, *args, **kwargs ):
""" Lists user's saved visualizations. """
- return self.list( trans, args, kwargs )
+ return self.list( trans, *args, **kwargs )
@web.expose
@web.require_login()
@@ -202,20 +202,39 @@
visualization = self.get_visualization( trans, id, check_ownership=False )
if visualization.importable == False:
return trans.show_error_message( "The owner of this visualization has disabled imports via this link.<br>You can %s" % referer_message, use_panels=True )
- elif visualization.user == trans.user:
- return trans.show_error_message( "You can't import this visualization because you own it.<br>You can %s" % referer_message, use_panels=True )
elif visualization.deleted:
return trans.show_error_message( "You can't import this visualization because it has been deleted.<br>You can %s" % referer_message, use_panels=True )
else:
- # Create imported visualization via copy. TODO: Visualizations use datasets -- do we need to check to ensure that
- # datasets can be imported/viewed and/or copy datasets to user?
+ #
+ # Create imported visualization via copy.
+ # NOTE: a shallow copy is done: the config is copied as is but datasets
+ # are not copied nor are the dataset ids changed. This means that the
+ # user does not have a copy of the data in his/her history and the
+ # user who owns the datasets may delete them, making them inaccessible
+ # for the current user.
+ # TODO:
+ # -a deep copy is needed;
+ # -need to handle custom db keys.
+ #
+
imported_visualization = model.Visualization()
- imported_visualization.title = "imported: " + visualization.title
- imported_visualization.latest_revision = visualization.latest_revision
+ imported_visualization.title = visualization.title
+ imported_visualization.dbkey = visualization.dbkey
+ imported_visualization.type = visualization.type
imported_visualization.user = trans.user
- # Save new visualization.
+
+ # And the first visualization revision
+ imported_visualization_revision = model.VisualizationRevision()
+ imported_visualization_revision.title = visualization.title
+ imported_visualization_revision.config = visualization.latest_revision.config
+ imported_visualization_revision.dbkey = visualization.dbkey
+ imported_visualization_revision.visualization = imported_visualization
+ imported_visualization.latest_revision = imported_visualization_revision
+
+ # Persist
session = trans.sa_session
session.add( imported_visualization )
+ session.add( imported_visualization_revision )
session.flush()
# Redirect to load galaxy frames.
--- a/templates/visualization/display.mako Fri Jun 17 12:16:53 2011 -0400
+++ b/templates/visualization/display.mako Fri Jun 17 13:16:34 2011 -0400
@@ -49,7 +49,12 @@
</%def><%def name="render_item_links( visualization )">
-
+ <a
+ href="${h.url_for( controller='/visualization', action='imp', id=trans.security.encode_id( visualization.id ) )}"
+ class="icon-button import"
+ ## Needed to overwide initial width so that link is floated left appropriately.
+ style="width: 100%"
+ title="Import visualization">Import visualization</a></%def><%def name="render_item( visualization, config )">
http://bitbucket.org/galaxy/galaxy-central/changeset/dc33340cad7d/
changeset: dc33340cad7d
user: jgoecks
date: 2011-06-17 19:16:53
summary: Merge.
affected #: 1 file (8 bytes)
--- a/lib/galaxy/datatypes/wsf.py Fri Jun 17 13:16:34 2011 -0400
+++ b/lib/galaxy/datatypes/wsf.py Fri Jun 17 13:16:53 2011 -0400
@@ -26,7 +26,7 @@
def set_meta( self, dataset, overwrite = True, **kwd ):
- Tabular.set_meta( self, dataset, overwrite=overwrite, skip=1, max_data_lines=None, **kwd )
+ Tabular.set_meta( self, dataset, overwrite=overwrite, max_data_lines=None, **kwd )
# these two if statements work around a potential bug in metadata.py
if dataset.metadata.labels is None or dataset.metadata.labels == dataset.metadata.spec['labels'].no_value:
self._set_column_labels_metadata( dataset )
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 new changeset in galaxy-central:
http://bitbucket.org/galaxy/galaxy-central/changeset/acbd9488ba36/
changeset: acbd9488ba36
user: richard_burhans
date: 2011-06-17 19:13:01
summary: fixed displayed line count
affected #: 1 file (8 bytes)
--- a/lib/galaxy/datatypes/wsf.py Fri Jun 17 12:16:53 2011 -0400
+++ b/lib/galaxy/datatypes/wsf.py Fri Jun 17 13:13:01 2011 -0400
@@ -26,7 +26,7 @@
def set_meta( self, dataset, overwrite = True, **kwd ):
- Tabular.set_meta( self, dataset, overwrite=overwrite, skip=1, max_data_lines=None, **kwd )
+ Tabular.set_meta( self, dataset, overwrite=overwrite, max_data_lines=None, **kwd )
# these two if statements work around a potential bug in metadata.py
if dataset.metadata.labels is None or dataset.metadata.labels == dataset.metadata.spec['labels'].no_value:
self._set_column_labels_metadata( dataset )
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 new changeset in galaxy-central:
http://bitbucket.org/galaxy/galaxy-central/changeset/abd3907ca534/
changeset: abd3907ca534
user: natefoo
date: 2011-06-17 16:19:29
summary: Fix test_metadata_editing, a ridiculous twill/mechanize/ClientForm bug that requires that <br /> tags contain the space before the / or else parsing <select>s will fail, but with a completely unrelated exception (an exception encountered when trying to raise the original exception).
http://code.google.com/p/twill/issues/detail?id=51http://lists.idyll.org/pipermail/twill/2010-January/001027.html
affected #: 1 file (4 bytes)
--- a/templates/dataset/security_common.mako Thu Jun 16 16:46:30 2011 -0400
+++ b/templates/dataset/security_common.mako Fri Jun 17 10:19:29 2011 -0400
@@ -16,21 +16,21 @@
</p><div style="width: 100%; white-space: nowrap;"><div style="float: left; width: 50%;">
- Roles associated:<br/>
+ Roles associated:<br /><select name="${action_key}_in" id="${action_key}_in_select" class="in_select" style="max-width: 98%; width: 98%; height: 150px; font-size: 100%;" multiple>
%for role in in_roles:
<option value="${role.id}">${role.name}</option>
%endfor
- </select><br/>
+ </select><br /><div style="width: 98%; text-align: right"><input type="submit" id="${action_key}_remove_button" class="role_remove_button" value=">>"/></div></div><div style="width: 50%;">
- Roles not associated:<br/>
+ Roles not associated:<br /><select name="${action_key}_out" id="${action_key}_out_select" style="max-width: 98%; width: 98%; height: 150px; font-size: 100%;" multiple>
%for role in out_roles:
<option value="${role.id}">${role.name}</option>
%endfor
- </select><br/>
+ </select><br /><input type="submit" id="${action_key}_add_button" class="role_add_button" value="<<"/></div></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 new changeset in galaxy-central:
http://bitbucket.org/galaxy/galaxy-central/changeset/eb4bcac2c60a/
changeset: eb4bcac2c60a
user: jgoecks
date: 2011-06-16 22:46:30
summary: Put 'import' link for published/accessible items in header; this is cleaner than its previous location in the center panel.
affected #: 1 file (8 bytes)
--- a/templates/display_base.mako Thu Jun 16 14:55:21 2011 -0400
+++ b/templates/display_base.mako Thu Jun 16 16:46:30 2011 -0400
@@ -204,15 +204,16 @@
Private ${get_class_display_name( item.__class__ )}
%endif
| ${get_item_name( item )}
+
+ <div style="float: right">
+ ${self.render_item_links( item )}
+ </div></div></div><div class="unified-panel-body"><div style="overflow: auto; height: 100%;"><div class="page-body">
- <div style="float: right">
- ${self.render_item_links( item )}
- </div><div>
${self.render_item_header( item )}
</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.