galaxy-dist commit a8ef6a46d622: Added AttributeValueSplitterFilter to tool select parameter filters so that GFF attributes can be read and used as tool inputs. Updated gff_filtering tool to use this filter.
by commits-noreply@bitbucket.org
# HG changeset patch -- Bitbucket.org
# Project galaxy-dist
# URL http://bitbucket.org/galaxy/galaxy-dist/overview
# User jeremy goecks <jeremy.goecks(a)emory.edu>
# Date 1280439706 14400
# Node ID a8ef6a46d6221d8eb3a7bc919fc3e2b13c1bc2aa
# Parent 66e03194e2dae00723d446509e077a869f274922
Added AttributeValueSplitterFilter to tool select parameter filters so that GFF attributes can be read and used as tool inputs. Updated gff_filtering tool to use this filter.
--- a/lib/galaxy/tools/parameters/dynamic_options.py
+++ b/lib/galaxy/tools/parameters/dynamic_options.py
@@ -206,6 +206,40 @@ class MultipleSplitterFilter( Filter ):
for field in fields[column].split( self.separator ):
rval.append( fields[0:column] + [field] + fields[column:] )
return rval
+
+class AttributeValueSplitterFilter( Filter ):
+ """
+ Filters a list of attribute-value pairs to be unique attribute names.
+
+ Type: attribute_value_splitter
+
+ Required Attributes:
+ column: column in options to compare with
+ Optional Attributes:
+ pair_separator: Split column by this (,)
+ name_val_separator: Split name-value pair by this ( whitespace )
+ """
+ def __init__( self, d_option, elem ):
+ Filter.__init__( self, d_option, elem )
+ self.pair_separator = elem.get( "pair_separator", "," )
+ self.name_val_separator = elem.get( "name_val_separator", None )
+ self.columns = elem.get( "column", None )
+ assert self.columns is not None, "Required 'columns' attribute missing from filter"
+ self.columns = [ int ( column ) for column in self.columns.split( "," ) ]
+ def filter_options( self, options, trans, other_values ):
+ attr_names = []
+ rval = []
+ for fields in options:
+ for column in self.columns:
+ for pair in fields[column].split( self.pair_separator ):
+ ary = pair.split( self.name_val_separator )
+ if len( ary ) == 2:
+ name, value = ary
+ if name not in attr_names:
+ rval.append( fields[0:column] + [name] + fields[column:] )
+ attr_names.append( name )
+ return rval
+
class AdditionalValueFilter( Filter ):
"""
@@ -322,6 +356,7 @@ filter_types = dict( data_meta = DataMet
static_value = StaticValueFilter,
unique_value = UniqueValueFilter,
multiple_splitter = MultipleSplitterFilter,
+ attribute_value_splitter = AttributeValueSplitterFilter,
add_value = AdditionalValueFilter,
remove_value = RemoveValueFilter,
sort_by = SortByColumnFilter )
--- a/tools/ngs_rna/gff_filtering.xml
+++ b/tools/ngs_rna/gff_filtering.xml
@@ -5,8 +5,12 @@
</command><inputs><param format="gff" name="input" type="data" label="Filter" help="Query missing? See TIP below."/>
- <param name="attribute_name" size="40" type="text" label="Attribute name" help="">
- <validator type="empty_field" message="Enter a valid attribute name."/>
+ <param name="attribute_name" type="select" label="Attribute name" help="">
+ <options from_dataset="input">
+ <column name="name" index="8"/>
+ <column name="value" index="8"/>
+ <filter type="attribute_value_splitter" pair_separator=";" column="8"/>
+ </options></param><param name="attribute_type" type="select" label="Attribute type"><option value="float">Float</option>
12 years, 6 months
galaxy-dist commit 66e03194e2da: lims:
by commits-noreply@bitbucket.org
# HG changeset patch -- Bitbucket.org
# Project galaxy-dist
# URL http://bitbucket.org/galaxy/galaxy-dist/overview
# User rc
# Date 1280424157 14400
# Node ID 66e03194e2dae00723d446509e077a869f274922
# Parent 07e7db914c6d2090ef7579a5e2c0583af50c39f3
lims:
- sample dataset size now appear correctly in the grid. The path of the datasets no longer appears with it.
--- a/lib/galaxy/model/__init__.py
+++ b/lib/galaxy/model/__init__.py
@@ -1624,7 +1624,7 @@ class Sample( object ):
output = pexpect.run(cmd, events={'.ssword:*': datatx_info['password']+'\r\n',
pexpect.TIMEOUT:print_ticks},
timeout=10)
- return output.split('\t')[0]
+ return output.replace(filepath, '').strip()
class SampleState( object ):
def __init__(self, name=None, desc=None, request_type=None):
12 years, 6 months
galaxy-dist commit 07e7db914c6d: Modified Group tool by adding Mode function to the list of aggregate operations.
by commits-noreply@bitbucket.org
# HG changeset patch -- Bitbucket.org
# Project galaxy-dist
# URL http://bitbucket.org/galaxy/galaxy-dist/overview
# User gua110
# Date 1280420469 14400
# Node ID 07e7db914c6d2090ef7579a5e2c0583af50c39f3
# Parent 79baa9583d9390bb6341d3484aa9f55b8e3808f8
Modified Group tool by adding Mode function to the list of aggregate operations.
--- a/tools/stats/grouping.py
+++ b/tools/stats/grouping.py
@@ -23,6 +23,12 @@ def main():
cols.append(var.split()[1])
rounds.append(var.split()[2])
+ if 'Mode' in ops:
+ try:
+ r.library('prettyR')
+ except:
+ stop_err('R package prettyR could not be loaded. Please make sure it is installed.')
+
"""
At this point, ops, cols and rounds will look something like this:
ops: ['mean', 'min', 'c']
@@ -46,9 +52,10 @@ def main():
except:
stop_err( "Group column not specified." )
+ str_ops = ['c', 'length', 'unique', 'random', 'cuniq', 'Mode'] #ops that can handle string/non-numeric inputs
for k,col in enumerate(cols):
col = int(col)-1
- if ops[k] not in ['c', 'length', 'unique', 'random', 'cuniq']:
+ if ops[k] not in str_ops:
# We'll get here only if the user didn't choose 'Concatenate' or 'Count' or 'Count Distinct' or 'pick randmly', which are the
# only aggregation functions that can be used on columns containing strings.
try:
@@ -109,7 +116,7 @@ def main():
valid = True
# Before appending the current value, make sure it is numeric if the
# operation for the column requires it.
- if ops[i] not in ['c','length', 'unique','random','cuniq']:
+ if ops[i] not in str_ops:
try:
float( fields[col].strip())
except:
@@ -128,13 +135,14 @@ def main():
due to the sort on group_col we've applied to the data above.
"""
out_str = prev_item
-
+ multiple_modes = False
+ mode_index = None
for i, op in enumerate( ops ):
if op == 'cuniq':
rfunc = "r.c"
else:
rfunc = "r." + op
- if op not in ['c','length','unique','random','cuniq']:
+ if op not in str_ops:
for j, elem in enumerate( prev_vals[i] ):
prev_vals[i][j] = float( elem )
rout = eval( rfunc )( prev_vals[i] )
@@ -148,7 +156,10 @@ def main():
else:
rand_index = random.randint(0,len(prev_vals[i])-1)
rout = prev_vals[i][rand_index]
-
+
+ if op == 'Mode' and rout == '>1 mode':
+ multiple_modes = True
+ mode_index = i
if op == 'unique':
rfunc = "r.length"
rout = eval( rfunc )( rout )
@@ -165,8 +176,13 @@ def main():
out_str += "\t" + str(rout)
else:
out_str += "\t" + str(rout)
-
- print >>fout, out_str
+ if multiple_modes and mode_index != None:
+ out_str_list = out_str.split('\t')
+ for val in prev_vals[mode_index]:
+ out_str = '\t'.join(out_str_list[:mode_index+1]) + '\t' + str(val) + '\t' + '\t'.join(out_str_list[mode_index+2:])
+ print >>fout, out_str.rstrip('\t')
+ else:
+ print >>fout, out_str
prev_item = item
prev_vals = []
@@ -195,14 +211,15 @@ def main():
# Handle the last grouped value
out_str = prev_item
-
+ multiple_modes = False
+ mode_index = None
for i, op in enumerate(ops):
if op == 'cuniq':
rfunc = "r.c"
else:
rfunc = "r." + op
try:
- if op not in ['c','length','unique','random','cuniq']:
+ if op not in str_ops:
for j, elem in enumerate( prev_vals[i] ):
prev_vals[i][j] = float( elem )
rout = eval( rfunc )( prev_vals[i] )
@@ -216,7 +233,10 @@ def main():
else:
rand_index = random.randint(0,len(prev_vals[i])-1)
rout = prev_vals[i][rand_index]
-
+
+ if op == 'Mode' and rout == '>1 mode':
+ multiple_modes = True
+ mode_index = i
if op == 'unique':
rfunc = "r.length"
rout = eval( rfunc )( rout )
@@ -238,7 +258,13 @@ def main():
if not first_invalid_line:
first_invalid_line = ii+1
- print >>fout, out_str
+ if multiple_modes and mode_index != None:
+ out_str_list = out_str.split('\t')
+ for val in prev_vals[mode_index]:
+ out_str = '\t'.join(out_str_list[:mode_index+1]) + '\t' + str(val) + '\t' + '\t'.join(out_str_list[mode_index+2:])
+ print >>fout, out_str.rstrip('\t')
+ else:
+ print >>fout, out_str
# Generate a useful info message.
msg = "--Group by c%d: " %(group_col+1)
--- a/tools/stats/grouping.xml
+++ b/tools/stats/grouping.xml
@@ -1,4 +1,4 @@
-<tool id="Grouping1" name="Group" version="1.9.0">
+<tool id="Grouping1" name="Group" version="1.9.1"><description>data by a column and perform aggregate operation on other columns.</description><command interpreter="python">
grouping.py
@@ -22,6 +22,7 @@
<param name="optype" type="select" label="Type"><option value="mean">Mean</option><option value="median">Median</option>
+ <option value="Mode">Mode</option><option value="max">Maximum</option><option value="min">Minimum</option><option value="sum">Sum</option>
@@ -77,10 +78,12 @@
**Syntax**
-This tool allows you to group the input dataset by a particular column and perform aggregate functions like Mean, Sum, Max, Min and Concatenate on other columns.
+This tool allows you to group the input dataset by a particular column and perform aggregate functions like Mean, Median, Mode, Sum, Max, Min, Count, Random draw and Concatenate on other columns.
- All invalid, blank and comment lines are skipped when performing the aggregate functions. The number of skipped lines is displayed in the resulting history item.
+- If multiple modes are present, all are reported.
+
-----
**Example**
12 years, 6 months
galaxy-dist commit c653ccfa1a1e: Allow access to /api without HTTP_REMOTE_USER set if use_remote_user = True, since the API controllers handle authentication internally.
by commits-noreply@bitbucket.org
# HG changeset patch -- Bitbucket.org
# Project galaxy-dist
# URL http://bitbucket.org/galaxy/galaxy-dist/overview
# User Nate Coraor <nate(a)bx.psu.edu>
# Date 1280416580 14400
# Node ID c653ccfa1a1ef7c2a384ee4b3ab72da0b391ae14
# Parent ab48c0e20a948f310ad3b072c23560faa8433aa3
Allow access to /api without HTTP_REMOTE_USER set if use_remote_user = True, since the API controllers handle authentication internally.
--- a/lib/galaxy/web/framework/middleware/remoteuser.py
+++ b/lib/galaxy/web/framework/middleware/remoteuser.py
@@ -75,8 +75,8 @@ class RemoteUser( object ):
# Apache sets REMOTE_USER to the string '(null)' when using the
# Rewrite* method for passing REMOTE_USER and a user is
# un-authenticated. Any other possible values need to go here as well.
+ path_info = environ.get('PATH_INFO', '')
if environ.has_key( 'HTTP_REMOTE_USER' ) and environ[ 'HTTP_REMOTE_USER' ] != '(null)':
- path_info = environ.get('PATH_INFO', '')
if not environ[ 'HTTP_REMOTE_USER' ].count( '@' ):
if self.maildomain is not None:
environ[ 'HTTP_REMOTE_USER' ] += '@' + self.maildomain
@@ -96,7 +96,7 @@ class RemoteUser( object ):
if path_info.startswith( '/user/create' ) and environ[ 'HTTP_REMOTE_USER' ] in self.admin_users:
pass # admins can create users
elif path_info.startswith( '/user/api_keys' ):
- pass
+ pass # api keys can be managed when remote_user is in use
elif path_info.startswith( '/user' ):
title = "Access to Galaxy user controls is disabled"
message = """
@@ -105,6 +105,9 @@ class RemoteUser( object ):
"""
return self.error( start_response, title, message )
return self.app( environ, start_response )
+ elif path_info.startswith( '/api/' ):
+ # The API handles its own authentication via keys
+ return self.app( environ, start_response )
else:
title = "Access to Galaxy is denied"
message = """
12 years, 6 months
galaxy-dist commit 0736d9af9e6e: Allow access to API Key creation when use_remote_user is true.
by commits-noreply@bitbucket.org
# HG changeset patch -- Bitbucket.org
# Project galaxy-dist
# URL http://bitbucket.org/galaxy/galaxy-dist/overview
# User Nate Coraor <nate(a)bx.psu.edu>
# Date 1280416177 14400
# Node ID 0736d9af9e6e7facef8fad93baa3a303e0cf9526
# Parent d27912281a74ba74a8df6f5d72db7c553ca846c5
Allow access to API Key creation when use_remote_user is true.
--- /dev/null
+++ b/templates/webapps/galaxy/user/api_keys.mako
@@ -0,0 +1,35 @@
+<%inherit file="/base.mako"/>
+<%namespace file="/message.mako" import="render_msg" />
+
+%if message:
+ ${render_msg( message, status )}
+%endif
+
+<div class="toolForm">
+ <form name="user_api_keys" id="user_api_keys" action="${h.url_for( controller='user', action='api_keys' )}" method="post" >
+ <div class="toolFormTitle">Web API Key</div>
+ <div class="toolFormBody">
+ <div class="form-row">
+ <label>Current API key:</label>
+ %if user.api_keys:
+ ${user.api_keys[0].key}
+ %else:
+ none set
+ %endif
+ </div>
+ <div class="form-row">
+ <input type="submit" name="new_api_key_button" value="Generate a new key now"/>
+ %if user.api_keys:
+ (invalidates old key)
+ %endif
+ <div class="toolParamHelp" style="clear: both;">
+ An API key will allow you to access Galaxy via its web
+ API (documentation forthcoming). Please note that
+ <strong>this key acts as an alternate means to access
+ your account, and should be treated with the same care
+ as your login password</strong>.
+ </div>
+ </div>
+ </div>
+ </form>
+</div>
--- a/lib/galaxy/web/framework/middleware/remoteuser.py
+++ b/lib/galaxy/web/framework/middleware/remoteuser.py
@@ -95,6 +95,8 @@ class RemoteUser( object ):
return self.error( start_response, title, message )
if path_info.startswith( '/user/create' ) and environ[ 'HTTP_REMOTE_USER' ] in self.admin_users:
pass # admins can create users
+ elif path_info.startswith( '/user/api_keys' ):
+ pass
elif path_info.startswith( '/user' ):
title = "Access to Galaxy user controls is disabled"
message = """
--- a/lib/galaxy/web/controllers/user.py
+++ b/lib/galaxy/web/controllers/user.py
@@ -1003,24 +1003,20 @@ class User( BaseController ):
@web.expose
- def new_api_key( self, trans, **kwd ):
+ def api_keys( self, trans, **kwd ):
params = util.Params( kwd )
message = util.restore_text( params.get( 'message', '' ) )
status = params.get( 'status', 'done' )
- admin_view = util.string_as_bool( params.get( 'admin_view', False ) )
error = ''
- user = trans.sa_session.query( trans.app.model.User ).get( int( params.get( 'user_id', None ) ) )
if params.get( 'new_api_key_button', None ) == 'Generate a new key now':
new_key = trans.app.model.APIKeys()
- new_key.user_id = user.id
+ new_key.user_id = trans.user.id
new_key.key = trans.app.security.get_new_guid()
trans.sa_session.add( new_key )
trans.sa_session.flush()
message = "Generated a new web API key"
status = "done"
- return trans.response.send_redirect( web.url_for( controller='user',
- action='show_info',
- admin_view=admin_view,
- user_id=user.id,
- message=message,
- status=status ) )
+ return trans.fill_template( 'webapps/galaxy/user/api_keys.mako',
+ user=trans.user,
+ message=message,
+ status=status )
--- a/templates/webapps/galaxy/base_panels.mako
+++ b/templates/webapps/galaxy/base_panels.mako
@@ -130,6 +130,9 @@
%if app.config.get_bool( 'enable_pages', False ):
<li><a href="${h.url_for( controller='/page', action='list' )}">Pages</a></li>
%endif
+ %if app.config.enable_api:
+ <li><a target="galaxy_main" href="${h.url_for( controller='/user', action='api_keys' )}">API Keys</a></li>
+ %endif
</ul></div></td>
--- a/templates/webapps/galaxy/user/info.mako
+++ b/templates/webapps/galaxy/user/info.mako
@@ -120,36 +120,3 @@
</div></form></div>
-
-<p/>
-
-%if trans.app.config.enable_api:
- <div class="toolForm">
- <form name="user_api_keys" id="user_api_keys" action="${h.url_for( controller='user', action='new_api_key', user_id=user.id, admin_view=admin_view )}" method="post" >
- <div class="toolFormTitle">Web API Key</div>
- <div class="toolFormBody">
- <div class="form-row">
- <label>Current API key:</label>
- %if user.api_keys:
- ${user.api_keys[0].key}
- %else:
- none set
- %endif
- </div>
- <div class="form-row">
- <input type="submit" name="new_api_key_button" value="Generate a new key now"/>
- %if user.api_keys:
- (invalidates old key)
- %endif
- <div class="toolParamHelp" style="clear: both;">
- An API key will allow you to access Galaxy via its web
- API (documentation forthcoming). Please note that
- <strong>this key acts as an alternate means to access
- your account, and should be treated with the same care
- as your login password</strong>.
- </div>
- </div>
- </div>
- </form>
- </div>
-%endif
--- a/templates/user/index.mako
+++ b/templates/user/index.mako
@@ -12,6 +12,9 @@
%if webapp == 'galaxy':
<li><a href="${h.url_for( controller='user', action='show_info' )}">${_('Manage your information')}</a></li><li><a href="${h.url_for( controller='user', action='set_default_permissions' )}">${_('Change default permissions')}</a> for new histories</li>
+ %if trans.app.config.enable_api:
+ <li><a href="${h.url_for( controller='user', action='api_keys' )}">${_('Manage your API Keys')}</a> for new histories</li>
+ %endif
%else:
<li><a href="${h.url_for( controller='user', action='show_info', webapp='community' )}">${_('Manage your information')}</a></li>
%endif
12 years, 6 months
galaxy-dist commit 79baa9583d93: lims:
by commits-noreply@bitbucket.org
# HG changeset patch -- Bitbucket.org
# Project galaxy-dist
# URL http://bitbucket.org/galaxy/galaxy-dist/overview
# User rc
# Date 1280417621 14400
# Node ID 79baa9583d9390bb6341d3484aa9f55b8e3808f8
# Parent 8d255150cb3e868974777eee030843d2c3e7ad16
lims:
- fixed a migration script bug when moving the sample datasets info from the 'sample' to 'sample_dataset' table
--- a/lib/galaxy/model/migrate/versions/0052_sample_dataset_table.py
+++ b/lib/galaxy/model/migrate/versions/0052_sample_dataset_table.py
@@ -61,19 +61,20 @@ def upgrade():
result = db_session.execute( cmd )
for r in result:
sample_id = r[0]
- dataset_files = from_json_string(r[1])
- for df in dataset_files:
- cmd = "INSERT INTO sample_dataset VALUES (%s, %s, %s, %s, '%s', '%s', '%s', '%s', '%s')"
- cmd = cmd % ( nextval('sample_dataset'),
- localtimestamp(),
- localtimestamp(),
- str(sample_id),
- df['name'],
- df['filepath'],
- df['status'],
- df['error_msg'].replace('"', '').replace("'", ""),
- df['size'] )
- db_session.execute( cmd )
+ if r[1]:
+ dataset_files = from_json_string(r[1])
+ for df in dataset_files:
+ cmd = "INSERT INTO sample_dataset VALUES (%s, %s, %s, %s, '%s', '%s', '%s', '%s', '%s')"
+ cmd = cmd % ( nextval('sample_dataset'),
+ localtimestamp(),
+ localtimestamp(),
+ str(sample_id),
+ df['name'],
+ df['filepath'],
+ df['status'].replace('"', '').replace("'", ""),
+ "",
+ df['size'].replace('"', '').replace("'", "") )
+ db_session.execute( cmd )
# Delete the dataset_files column in the Sample table
try:
12 years, 6 months
galaxy-dist commit b0cf8217826e: lims:
by commits-noreply@bitbucket.org
# HG changeset patch -- Bitbucket.org
# Project galaxy-dist
# URL http://bitbucket.org/galaxy/galaxy-dist/overview
# User rc
# Date 1280416255 14400
# Node ID b0cf8217826e7a289eec88fd31894683818d2bee
# Parent d27912281a74ba74a8df6f5d72db7c553ca846c5
lims:
- fixed couple of broken links
- comminting the db migrate script (0052) skipped in the previous commit
--- /dev/null
+++ b/lib/galaxy/model/migrate/versions/0052_sample_dataset_table.py
@@ -0,0 +1,92 @@
+"""
+Migration script to add the sample_dataset table and remove the 'dataset_files' column
+from the 'sample' table
+"""
+
+from sqlalchemy import *
+from sqlalchemy.orm import *
+from migrate import *
+from migrate.changeset import *
+from sqlalchemy.exc import *
+
+from galaxy.model.custom_types import *
+from galaxy.util.json import from_json_string, to_json_string
+
+import datetime
+now = datetime.datetime.utcnow
+
+import logging
+log = logging.getLogger( __name__ )
+
+metadata = MetaData( migrate_engine )
+db_session = scoped_session( sessionmaker( bind=migrate_engine, autoflush=False, autocommit=True ) )
+
+
+def nextval( table, col='id' ):
+ if migrate_engine.name == 'postgres':
+ return "nextval('%s_%s_seq')" % ( table, col )
+ elif migrate_engine.name == 'mysql' or migrate_engine.name == 'sqlite':
+ return "null"
+ else:
+ raise Exception( 'Unable to convert data for unknown database type: %s' % migrate_engine.name )
+
+def localtimestamp():
+ if migrate_engine.name == 'postgres' or migrate_engine.name == 'mysql':
+ return "LOCALTIMESTAMP"
+ elif migrate_engine.name == 'sqlite':
+ return "current_date || ' ' || current_time"
+ else:
+ raise Exception( 'Unable to convert data for unknown database type: %s' % db )
+
+SampleDataset_table = Table('sample_dataset', metadata,
+ Column( "id", Integer, primary_key=True ),
+ Column( "create_time", DateTime, default=now ),
+ Column( "update_time", DateTime, default=now, onupdate=now ),
+ Column( "sample_id", Integer, ForeignKey( "sample.id" ), index=True ),
+ Column( "name", TrimmedString( 255 ), nullable=False ),
+ Column( "file_path", TrimmedString( 255 ), nullable=False ),
+ Column( "status", TrimmedString( 255 ), nullable=False ),
+ Column( "error_msg", TEXT ),
+ Column( "size", TrimmedString( 255 ) ) )
+
+def upgrade():
+ print __doc__
+ metadata.reflect()
+ try:
+ SampleDataset_table.create()
+ except Exception, e:
+ log.debug( "Creating sample_dataset table failed: %s" % str( e ) )
+
+ cmd = "SELECT id, dataset_files FROM sample"
+ result = db_session.execute( cmd )
+ for r in result:
+ sample_id = r[0]
+ dataset_files = from_json_string(r[1])
+ for df in dataset_files:
+ cmd = "INSERT INTO sample_dataset VALUES (%s, %s, %s, %s, '%s', '%s', '%s', '%s', '%s')"
+ cmd = cmd % ( nextval('sample_dataset'),
+ localtimestamp(),
+ localtimestamp(),
+ str(sample_id),
+ df['name'],
+ df['filepath'],
+ df['status'],
+ df['error_msg'].replace('"', '').replace("'", ""),
+ df['size'] )
+ db_session.execute( cmd )
+
+ # Delete the dataset_files column in the Sample table
+ try:
+ Sample_table = Table( "sample", metadata, autoload=True )
+ except NoSuchTableError:
+ Sample_table = None
+ log.debug( "Failed loading table sample" )
+ if Sample_table:
+ try:
+ Sample_table.c.dataset_files.drop()
+ except Exception, e:
+ log.debug( "Deleting column 'dataset_files' from the 'sample' table failed: %s" % ( str( e ) ) )
+
+
+def downgrade():
+ pass
--- a/templates/requests/common/events.mako
+++ b/templates/requests/common/events.mako
@@ -4,7 +4,7 @@
<h2>History of Sequencing Request "${request.name}"</h2><ul class="manage-table-actions"><li>
- <a class="action-button" href="${h.url_for( controller=cntrller, action='list', operation='show_request', id=trans.security.encode_id(request.id) )}">
+ <a class="action-button" href="${h.url_for( controller=cntrller, action='list', operation='show', id=trans.security.encode_id(request.id) )}"><span>Browse this request</span></a></li><li>
--- a/templates/admin/requests/reject.mako
+++ b/templates/admin/requests/reject.mako
@@ -8,12 +8,12 @@
<h2>Reject Sequencing Request "${request.name}"</h2><ul class="manage-table-actions"><li>
- <a class="action-button" href="${h.url_for( controller='requests_admin', action='list', operation='show_request', id=trans.security.encode_id(request.id) )}">
- <span>Browse this request</span></a>
+ <a class="action-button" href="${h.url_for( controller='requests_admin', action='list', operation='events', id=trans.security.encode_id(request.id) )}">
+ <span>Events</span></a></li><li>
- <a class="action-button" href="${h.url_for( controller='requests_admin', action='list', operation='events', id=trans.security.encode_id(request.id) )}">
- <span>Events</span></a>
+ <a class="action-button" href="${h.url_for( controller='requests_admin', action='list', operation='show', id=trans.security.encode_id(request.id) )}">
+ <span>Browse this request</span></a></li></ul><h3>User: ${request.user.email}</h3>
--- a/templates/admin/requests/datasets_grid.mako
+++ b/templates/admin/requests/datasets_grid.mako
@@ -4,7 +4,6 @@
<%def name="custom_javascripts()"><script type="text/javascript">
$("#select-dataset-action-button").bind( "click", function(e) {
- alert('afdhblvi')
$.ajax({
url: "${h.url_for( controller='requests_admin', action='remote_file_browser' )}",
data: {id: 6},
12 years, 6 months
galaxy-dist commit 8d255150cb3e: Use env for the API example scripts instead of directly referring to /usr/bin/python
by commits-noreply@bitbucket.org
# HG changeset patch -- Bitbucket.org
# Project galaxy-dist
# URL http://bitbucket.org/galaxy/galaxy-dist/overview
# User Nate Coraor <nate(a)bx.psu.edu>
# Date 1280416695 14400
# Node ID 8d255150cb3e868974777eee030843d2c3e7ad16
# Parent c653ccfa1a1ef7c2a384ee4b3ab72da0b391ae14
Use env for the API example scripts instead of directly referring to /usr/bin/python
--- a/scripts/api/library_upload_from_import_dir.py
+++ b/scripts/api/library_upload_from_import_dir.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
import os, sys
sys.path.insert( 0, os.path.dirname( __file__ ) )
--- a/scripts/api/library_create_library.py
+++ b/scripts/api/library_create_library.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
import os, sys
sys.path.insert( 0, os.path.dirname( __file__ ) )
--- a/scripts/api/library_create_folder.py
+++ b/scripts/api/library_create_folder.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
import os, sys
sys.path.insert( 0, os.path.dirname( __file__ ) )
--- a/scripts/api/display.py
+++ b/scripts/api/display.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
import os, sys
sys.path.insert( 0, os.path.dirname( __file__ ) )
12 years, 6 months
galaxy-dist commit 9780508ee0c3: Allow interval to bedstrict converter to work on bed files that may have e.g. a 'track' line.
by commits-noreply@bitbucket.org
# HG changeset patch -- Bitbucket.org
# Project galaxy-dist
# URL http://bitbucket.org/galaxy/galaxy-dist/overview
# User Dan Blankenberg <dan(a)bx.psu.edu>
# Date 1280371288 14400
# Node ID 9780508ee0c31b132158842afcae6c5ef90028a7
# Parent 75e99661d24caaeda1381b14cd062ffdcf7c3ecd
Allow interval to bedstrict converter to work on bed files that may have e.g. a 'track' line.
--- a/lib/galaxy/datatypes/converters/interval_to_bedstrict_converter.py
+++ b/lib/galaxy/datatypes/converters/interval_to_bedstrict_converter.py
@@ -81,8 +81,8 @@ def __main__():
first_skipped_line = count + 1
continue
fields = line.split('\t')
- assert len( fields ) >= 3, 'A BED file requires at least 3 columns' #we can't fix this
try:
+ assert len( fields ) >= 3, 'A BED file requires at least 3 columns' #we can't fix this
if len(fields) > 12:
strict_bed = False
break
12 years, 6 months