galaxy-dev
Threads by month
- ----- 2026 -----
- 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
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- 10009 discussions
15 Apr '10
details: http://www.bx.psu.edu/hg/galaxy/rev/f2b6d4f3189c
changeset: 3606:f2b6d4f3189c
user: Greg Von Kuster <greg(a)bx.psu.edu>
date: Fri Apr 02 16:06:43 2010 -0400
description:
Move toward standardizing the way messages are displayed on Galaxy forms by using params 'message' and 'status' instead of 'msg' and 'messagetype'.
diffstat:
lib/galaxy/web/controllers/admin.py | 140 +-
lib/galaxy/web/controllers/forms.py | 76 +-
lib/galaxy/web/controllers/history.py | 7 +-
lib/galaxy/web/controllers/library.py | 16 +-
lib/galaxy/web/controllers/library_admin.py | 46 +-
lib/galaxy/web/controllers/library_common.py | 548 +++++++-------
lib/galaxy/web/controllers/requests.py | 164 ++--
lib/galaxy/web/controllers/requests_admin.py | 298 +++---
lib/galaxy/web/controllers/root.py | 32 +-
lib/galaxy/web/controllers/user.py | 200 ++--
templates/admin/dataset_security/group/group.mako | 4 +-
templates/admin/dataset_security/group/group_create.mako | 4 +-
templates/admin/dataset_security/group/group_rename.mako | 4 +-
templates/admin/dataset_security/role/role.mako | 4 +-
templates/admin/dataset_security/role/role_create.mako | 4 +-
templates/admin/dataset_security/role/role_rename.mako | 4 +-
templates/admin/forms/create_form.mako | 4 +-
templates/admin/forms/edit_form.mako | 4 +-
templates/admin/forms/show_form_read_only.mako | 4 +-
templates/admin/jobs.mako | 4 +-
templates/admin/library/new_library.mako | 4 +-
templates/admin/memdump.mako | 4 +-
templates/admin/reload_tool.mako | 4 +-
templates/admin/requests/add_states.mako | 4 +-
templates/admin/requests/create_request_type.mako | 4 +-
templates/admin/requests/edit_request.mako | 4 +-
templates/admin/requests/edit_request_type.mako | 4 +-
templates/admin/requests/events.mako | 4 +-
templates/admin/requests/get_data.mako | 4 +-
templates/admin/requests/new_request.mako | 4 +-
templates/admin/requests/reject.mako | 4 +-
templates/admin/requests/show_request.mako | 4 +-
templates/admin/requests/view_request_type.mako | 4 +-
templates/admin/samples/bar_codes.mako | 4 +-
templates/admin/samples/events.mako | 4 +-
templates/admin/user/reset_password.mako | 4 +-
templates/admin/user/user.mako | 4 +-
templates/dataset/edit_attributes.mako | 4 +-
templates/history/sharing.mako | 4 +-
templates/library/browse_libraries.mako | 4 +-
templates/library/common/browse_library.mako | 4 +-
templates/library/common/edit_template.mako | 4 +-
templates/library/common/folder_info.mako | 4 +-
templates/library/common/folder_permissions.mako | 4 +-
templates/library/common/ldda_edit_info.mako | 4 +-
templates/library/common/ldda_info.mako | 4 +-
templates/library/common/ldda_permissions.mako | 4 +-
templates/library/common/library_dataset_info.mako | 4 +-
templates/library/common/library_dataset_permissions.mako | 4 +-
templates/library/common/library_info.mako | 4 +-
templates/library/common/library_permissions.mako | 4 +-
templates/library/common/new_folder.mako | 4 +-
templates/library/common/select_template.mako | 4 +-
templates/library/common/upload.mako | 4 +-
templates/mobile/manage_library.mako | 4 +-
templates/requests/edit_request.mako | 4 +-
templates/requests/events.mako | 4 +-
templates/requests/new_request.mako | 4 +-
templates/requests/show_data.mako | 4 +-
templates/requests/show_request.mako | 4 +-
templates/sample/sample_events.mako | 4 +-
templates/user/edit_address.mako | 4 +-
templates/user/index.mako | 4 +-
templates/user/info.mako | 4 +-
templates/user/login.mako | 4 +-
templates/user/logout.mako | 4 +-
templates/user/new_address.mako | 4 +-
templates/user/register.mako | 4 +-
templates/user/reset_password.mako | 4 +-
69 files changed, 883 insertions(+), 880 deletions(-)
diffs (truncated from 4762 to 3000 lines):
diff -r 43b7a7f4bff5 -r f2b6d4f3189c lib/galaxy/web/controllers/admin.py
--- a/lib/galaxy/web/controllers/admin.py Fri Apr 02 15:09:29 2010 -0400
+++ b/lib/galaxy/web/controllers/admin.py Fri Apr 02 16:06:43 2010 -0400
@@ -263,9 +263,9 @@
@web.require_admin
def index( self, trans, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
- return trans.fill_template( '/admin/index.mako', msg=msg, messagetype=messagetype )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
+ return trans.fill_template( '/admin/index.mako', message=message, status=status )
@web.expose
@web.require_admin
def center( self, trans, **kwd ):
@@ -274,17 +274,17 @@
@web.require_admin
def reload_tool( self, trans, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
- return trans.fill_template( '/admin/reload_tool.mako', toolbox=self.app.toolbox, msg=msg, messagetype=messagetype )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
+ return trans.fill_template( '/admin/reload_tool.mako', toolbox=self.app.toolbox, message=message, status=status )
@web.expose
@web.require_admin
def tool_reload( self, trans, tool_version=None, **kwd ):
params = util.Params( kwd )
tool_id = params.tool_id
self.app.toolbox.reload( tool_id )
- msg = 'Reloaded tool: ' + tool_id
- return trans.fill_template( '/admin/reload_tool.mako', toolbox=self.app.toolbox, msg=msg, messagetype='done' )
+ message = 'Reloaded tool: ' + tool_id
+ return trans.fill_template( '/admin/reload_tool.mako', toolbox=self.app.toolbox, message=message, status='done' )
# Galaxy Role Stuff
@web.expose
@@ -312,8 +312,8 @@
@web.require_admin
def create_role( self, trans, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
if params.get( 'create_role_button', False ):
name = util.restore_text( params.name )
description = util.restore_text( params.description )
@@ -321,9 +321,9 @@
in_groups = util.listify( params.get( 'in_groups', [] ) )
create_group_for_role = params.get( 'create_group_for_role', 'no' )
if not name or not description:
- msg = "Enter a valid name and a description"
+ message = "Enter a valid name and a description"
elif trans.sa_session.query( trans.app.model.Role ).filter( trans.app.model.Role.table.c.name==name ).first():
- msg = "A role with that name already exists"
+ message = "A role with that name already exists"
else:
# Create the role
role = trans.app.model.Role( name=name, description=description, type=trans.app.model.Role.types.ADMIN )
@@ -340,13 +340,13 @@
# Create the group
group = trans.app.model.Group( name=name )
trans.sa_session.add( group )
- msg = "Group '%s' has been created, and role '%s' has been created with %d associated users and %d associated groups" % \
+ message = "Group '%s' has been created, and role '%s' has been created with %d associated users and %d associated groups" % \
( group.name, role.name, len( in_users ), len( in_groups ) )
else:
- msg = "Role '%s' has been created with %d associated users and %d associated groups" % ( role.name, len( in_users ), len( in_groups ) )
+ message = "Role '%s' has been created with %d associated users and %d associated groups" % ( role.name, len( in_users ), len( in_groups ) )
trans.sa_session.flush()
- trans.response.send_redirect( web.url_for( controller='admin', action='roles', message=util.sanitize_text( msg ), status='done' ) )
- trans.response.send_redirect( web.url_for( controller='admin', action='create_role', msg=util.sanitize_text( msg ), messagetype='error' ) )
+ trans.response.send_redirect( web.url_for( controller='admin', action='roles', message=util.sanitize_text( message ), status='done' ) )
+ trans.response.send_redirect( web.url_for( controller='admin', action='create_role', message=util.sanitize_text( message ), status='error' ) )
out_users = []
for user in trans.sa_session.query( trans.app.model.User ) \
.filter( trans.app.model.User.table.c.deleted==False ) \
@@ -362,39 +362,39 @@
out_users=out_users,
in_groups=[],
out_groups=out_groups,
- msg=msg,
- messagetype=messagetype )
+ message=message,
+ status=status )
@web.expose
@web.require_admin
def rename_role( self, trans, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
role = get_role( trans, params.id )
if params.get( 'rename_role_button', False ):
old_name = role.name
new_name = util.restore_text( params.name )
new_description = util.restore_text( params.description )
if not new_name:
- msg = 'Enter a valid name'
- return trans.fill_template( '/admin/dataset_security/role/role_rename.mako', role=role, msg=msg, messagetype='error' )
+ message = 'Enter a valid name'
+ return trans.fill_template( '/admin/dataset_security/role/role_rename.mako', role=role, message=message, status='error' )
elif trans.sa_session.query( trans.app.model.Role ).filter( trans.app.model.Role.table.c.name==new_name ).first():
- msg = 'A role with that name already exists'
- return trans.fill_template( '/admin/dataset_security/role/role_rename.mako', role=role, msg=msg, messagetype='error' )
+ message = 'A role with that name already exists'
+ return trans.fill_template( '/admin/dataset_security/role/role_rename.mako', role=role, message=message, status='error' )
else:
role.name = new_name
role.description = new_description
trans.sa_session.add( role )
trans.sa_session.flush()
- msg = "Role '%s' has been renamed to '%s'" % ( old_name, new_name )
- return trans.response.send_redirect( web.url_for( action='roles', message=util.sanitize_text( msg ), status='done' ) )
- return trans.fill_template( '/admin/dataset_security/role/role_rename.mako', role=role, msg=msg, messagetype=messagetype )
+ message = "Role '%s' has been renamed to '%s'" % ( old_name, new_name )
+ return trans.response.send_redirect( web.url_for( action='roles', message=util.sanitize_text( message ), status='done' ) )
+ return trans.fill_template( '/admin/dataset_security/role/role_rename.mako', role=role, message=message, status=status )
@web.expose
@web.require_admin
def manage_users_and_groups_for_role( self, trans, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
role = get_role( trans, params.id )
if params.get( 'role_members_edit_button', False ):
in_users = [ trans.sa_session.query( trans.app.model.User ).get( x ) for x in util.listify( params.in_users ) ]
@@ -414,8 +414,8 @@
in_groups = [ trans.sa_session.query( trans.app.model.Group ).get( x ) for x in util.listify( params.in_groups ) ]
trans.app.security_agent.set_entity_role_associations( roles=[ role ], users=in_users, groups=in_groups )
trans.sa_session.refresh( role )
- msg = "Role '%s' has been updated with %d associated users and %d associated groups" % ( role.name, len( in_users ), len( in_groups ) )
- trans.response.send_redirect( web.url_for( action='roles', message=util.sanitize_text( msg ), status=messagetype ) )
+ message = "Role '%s' has been updated with %d associated users and %d associated groups" % ( role.name, len( in_users ), len( in_groups ) )
+ trans.response.send_redirect( web.url_for( action='roles', message=util.sanitize_text( message ), status=status ) )
in_users = []
out_users = []
in_groups = []
@@ -467,8 +467,8 @@
in_groups=in_groups,
out_groups=out_groups,
library_dataset_actions=library_dataset_actions,
- msg=msg,
- messagetype=messagetype )
+ message=message,
+ status=status )
@web.expose
@web.require_admin
def mark_role_deleted( self, trans, **kwd ):
@@ -554,39 +554,39 @@
@web.require_admin
def rename_group( self, trans, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
group = get_group( trans, params.id )
if params.get( 'rename_group_button', False ):
old_name = group.name
new_name = util.restore_text( params.name )
if not new_name:
- msg = 'Enter a valid name'
- return trans.fill_template( '/admin/dataset_security/group/group_rename.mako', group=group, msg=msg, messagetype='error' )
+ message = 'Enter a valid name'
+ return trans.fill_template( '/admin/dataset_security/group/group_rename.mako', group=group, message=message, status='error' )
elif trans.sa_session.query( trans.app.model.Group ).filter( trans.app.model.Group.table.c.name==new_name ).first():
- msg = 'A group with that name already exists'
- return trans.fill_template( '/admin/dataset_security/group/group_rename.mako', group=group, msg=msg, messagetype='error' )
+ message = 'A group with that name already exists'
+ return trans.fill_template( '/admin/dataset_security/group/group_rename.mako', group=group, message=message, status='error' )
else:
group.name = new_name
trans.sa_session.add( group )
trans.sa_session.flush()
- msg = "Group '%s' has been renamed to '%s'" % ( old_name, new_name )
- return trans.response.send_redirect( web.url_for( action='groups', msg=util.sanitize_text( msg ), messagetype='done' ) )
- return trans.fill_template( '/admin/dataset_security/group/group_rename.mako', group=group, msg=msg, messagetype=messagetype )
+ message = "Group '%s' has been renamed to '%s'" % ( old_name, new_name )
+ return trans.response.send_redirect( web.url_for( action='groups', message=util.sanitize_text( message ), status='done' ) )
+ return trans.fill_template( '/admin/dataset_security/group/group_rename.mako', group=group, message=message, status=status )
@web.expose
@web.require_admin
def manage_users_and_roles_for_group( self, trans, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
group = get_group( trans, params.id )
if params.get( 'group_roles_users_edit_button', False ):
in_roles = [ trans.sa_session.query( trans.app.model.Role ).get( x ) for x in util.listify( params.in_roles ) ]
in_users = [ trans.sa_session.query( trans.app.model.User ).get( x ) for x in util.listify( params.in_users ) ]
trans.app.security_agent.set_entity_group_associations( groups=[ group ], roles=in_roles, users=in_users )
trans.sa_session.refresh( group )
- msg += "Group '%s' has been updated with %d associated roles and %d associated users" % ( group.name, len( in_roles ), len( in_users ) )
- trans.response.send_redirect( web.url_for( action='groups', message=util.sanitize_text( msg ), status=messagetype ) )
+ message += "Group '%s' has been updated with %d associated roles and %d associated users" % ( group.name, len( in_roles ), len( in_users ) )
+ trans.response.send_redirect( web.url_for( action='groups', message=util.sanitize_text( message ), status=status ) )
in_roles = []
out_roles = []
in_users = []
@@ -605,29 +605,29 @@
in_users.append( ( user.id, user.email ) )
else:
out_users.append( ( user.id, user.email ) )
- msg += 'Group %s is currently associated with %d roles and %d users' % ( group.name, len( in_roles ), len( in_users ) )
+ message += 'Group %s is currently associated with %d roles and %d users' % ( group.name, len( in_roles ), len( in_users ) )
return trans.fill_template( '/admin/dataset_security/group/group.mako',
group=group,
in_roles=in_roles,
out_roles=out_roles,
in_users=in_users,
out_users=out_users,
- msg=msg,
- messagetype=messagetype )
+ message=message,
+ status=status )
@web.expose
@web.require_admin
def create_group( self, trans, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
if params.get( 'create_group_button', False ):
name = util.restore_text( params.name )
in_users = util.listify( params.get( 'in_users', [] ) )
in_roles = util.listify( params.get( 'in_roles', [] ) )
if not name:
- msg = "Enter a valid name"
+ message = "Enter a valid name"
elif trans.sa_session.query( trans.app.model.Group ).filter( trans.app.model.Group.table.c.name==name ).first():
- msg = "A group with that name already exists"
+ message = "A group with that name already exists"
else:
# Create the group
group = trans.app.model.Group( name=name )
@@ -643,9 +643,9 @@
gra = trans.app.model.GroupRoleAssociation( group, role )
trans.sa_session.add( gra )
trans.sa_session.flush()
- msg = "Group '%s' has been created with %d associated users and %d associated roles" % ( name, len( in_users ), len( in_roles ) )
- trans.response.send_redirect( web.url_for( controller='admin', action='groups', message=util.sanitize_text( msg ), status='done' ) )
- trans.response.send_redirect( web.url_for( controller='admin', action='create_group', msg=util.sanitize_text( msg ), messagetype='error' ) )
+ message = "Group '%s' has been created with %d associated users and %d associated roles" % ( name, len( in_users ), len( in_roles ) )
+ trans.response.send_redirect( web.url_for( controller='admin', action='groups', message=util.sanitize_text( message ), status='done' ) )
+ trans.response.send_redirect( web.url_for( controller='admin', action='create_group', message=util.sanitize_text( message ), status='error' ) )
out_users = []
for user in trans.sa_session.query( trans.app.model.User ) \
.filter( trans.app.model.User.table.c.deleted==False ) \
@@ -661,8 +661,8 @@
out_users=out_users,
in_roles=[],
out_roles=out_roles,
- msg=msg,
- messagetype=messagetype )
+ message=message,
+ status=status )
@web.expose
@web.require_admin
def mark_group_deleted( self, trans, **kwd ):
@@ -671,8 +671,8 @@
group.deleted = True
trans.sa_session.add( group )
trans.sa_session.flush()
- msg = "Group '%s' has been marked as deleted." % group.name
- trans.response.send_redirect( web.url_for( action='groups', message=util.sanitize_text( msg ), status='done' ) )
+ message = "Group '%s' has been marked as deleted." % group.name
+ trans.response.send_redirect( web.url_for( action='groups', message=util.sanitize_text( message ), status='done' ) )
@web.expose
@web.require_admin
def undelete_group( self, trans, **kwd ):
@@ -681,8 +681,8 @@
group.deleted = False
trans.sa_session.add( group )
trans.sa_session.flush()
- msg = "Group '%s' has been marked as not deleted." % group.name
- trans.response.send_redirect( web.url_for( action='groups', message=util.sanitize_text( msg ), status='done' ) )
+ message = "Group '%s' has been marked as not deleted." % group.name
+ trans.response.send_redirect( web.url_for( action='groups', message=util.sanitize_text( message ), status='done' ) )
@web.expose
@web.require_admin
def purge_group( self, trans, **kwd ):
@@ -692,8 +692,8 @@
group = get_group( trans, params.id )
if not group.deleted:
# We should never reach here, but just in case there is a bug somewhere...
- msg = "Group '%s' has not been deleted, so it cannot be purged." % group.name
- trans.response.send_redirect( web.url_for( action='groups', message=util.sanitize_text( msg ), status='error' ) )
+ message = "Group '%s' has not been deleted, so it cannot be purged." % group.name
+ trans.response.send_redirect( web.url_for( action='groups', message=util.sanitize_text( message ), status='error' ) )
# Delete UserGroupAssociations
for uga in group.users:
trans.sa_session.delete( uga )
@@ -972,8 +972,8 @@
out_roles=out_roles,
in_groups=in_groups,
out_groups=out_groups,
- msg=message,
- messagetype=status )
+ message=message,
+ status=status )
@web.expose
@web.require_admin
def memdump( self, trans, ids = 'None', sorts = 'None', pages = 'None', new_id = None, new_sort = None, **kwd ):
@@ -1020,11 +1020,11 @@
def jobs( self, trans, stop = [], stop_msg = None, cutoff = 180, **kwd ):
deleted = []
msg = None
- messagetype = None
+ status = None
job_ids = util.listify( stop )
if job_ids and stop_msg in [ None, '' ]:
msg = 'Please enter an error message to display to the user describing why the job was terminated'
- messagetype = 'error'
+ status = 'error'
elif job_ids:
if stop_msg[-1] not in string.punctuation:
stop_msg += '.'
@@ -1037,7 +1037,7 @@
msg += 's'
msg += ' for deletion: '
msg += ', '.join( deleted )
- messagetype = 'done'
+ status = 'done'
cutoff_time = datetime.utcnow() - timedelta( seconds=int( cutoff ) )
jobs = trans.sa_session.query( trans.app.model.Job ) \
.filter( and_( trans.app.model.Job.table.c.update_time < cutoff_time,
@@ -1053,7 +1053,7 @@
last_updated[job.id] = '%s hours' % int( delta.seconds / 60 / 60 )
else:
last_updated[job.id] = '%s minutes' % int( delta.seconds / 60 )
- return trans.fill_template( '/admin/jobs.mako', jobs = jobs, last_updated = last_updated, cutoff = cutoff, msg = msg, messagetype = messagetype )
+ return trans.fill_template( '/admin/jobs.mako', jobs = jobs, last_updated = last_updated, cutoff = cutoff, msg = msg, status = status )
## ---- Utility methods -------------------------------------------------------
diff -r 43b7a7f4bff5 -r f2b6d4f3189c lib/galaxy/web/controllers/forms.py
--- a/lib/galaxy/web/controllers/forms.py Fri Apr 02 15:09:29 2010 -0400
+++ b/lib/galaxy/web/controllers/forms.py Fri Apr 02 16:06:43 2010 -0400
@@ -102,8 +102,8 @@
except:
return trans.response.send_redirect( web.url_for( controller='forms',
action='manage',
- msg='Invalid form',
- messagetype='error' ) )
+ message='Invalid form',
+ status='error' ) )
return trans.fill_template( '/admin/forms/show_form_read_only.mako',
form=fdc.latest_form )
def __form_types_widget(self, trans, selected='none'):
@@ -127,16 +127,16 @@
@web.require_admin
def new( self, trans, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
self.__imported_from_file = False
if params.get( 'create_form_button', False ):
- fd, msg = self.__save_form( trans, fdc_id=None, **kwd )
+ fd, message = self.__save_form( trans, fdc_id=None, **kwd )
if not fd:
return trans.response.send_redirect( web.url_for( controller='forms',
action='new',
- msg=msg,
- messagetype='error',
+ message=message,
+ status='error',
name=util.restore_text( params.get( 'name', '' ) ),
description=util.restore_text( params.get( 'description', '' ) ) ))
self.__get_saved_form( fd )
@@ -158,8 +158,8 @@
( 'Import from csv file (Optional)', FileField( 'file_data', 40, '' ) ) ]
return trans.fill_template( '/admin/forms/create_form.mako',
inputs=inputs,
- msg=msg,
- messagetype=messagetype )
+ message=message,
+ status=status )
def __delete( self, trans, **kwd ):
id_list = util.listify( kwd['id'] )
delete_failed = []
@@ -205,8 +205,8 @@
edit_template() method in the library_common controller.
'''
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
try:
fdc = trans.sa_session.query( trans.app.model.FormDefinitionCurrent ).get( trans.security.decode_id(kwd['id']) )
except:
@@ -219,22 +219,22 @@
# Save changes
#
if params.get( 'save_changes_button', False ):
- fd_new, msg = self.__save_form( trans, fdc_id=fd.form_definition_current.id, **kwd )
+ fd_new, message = self.__save_form( trans, fdc_id=fd.form_definition_current.id, **kwd )
# if validation error encountered while saving the form, show the
# unsaved form, with the error message
if not fd_new:
current_form = self.__get_form( trans, **kwd )
return self.__show( trans=trans, form=fd, current_form=current_form,
- msg=msg, messagetype='error', response_redirect=response_redirect, **kwd )
+ message=message, status='error', response_redirect=response_redirect, **kwd )
# everything went fine. form saved successfully. Show the saved form or redirect
# to response_redirect if appropriate.
if response_redirect:
return trans.response.send_redirect( response_redirect )
fd = fd_new
current_form = self.__get_saved_form( fd )
- msg = "The form '%s' has been updated with the changes." % fd.name
+ message = "The form '%s' has been updated with the changes." % fd.name
return self.__show( trans=trans, form=fd, current_form=current_form,
- msg=msg, messagetype=messagetype, response_redirect=response_redirect, **kwd )
+ message=message, status=status, response_redirect=response_redirect, **kwd )
#
# Add a layout grid
#
@@ -243,7 +243,7 @@
current_form['layout'].append('')
# show the form again
return self.__show( trans=trans, form=fd, current_form=current_form,
- msg=msg, messagetype=messagetype, response_redirect=response_redirect, **kwd )
+ message=message, status=status, response_redirect=response_redirect, **kwd )
#
# Delete a layout grid
#
@@ -252,7 +252,7 @@
index = int( kwd[ 'remove_layout_grid_button' ].split( ' ' )[2] ) - 1
del current_form['layout'][index]
return self.__show( trans=trans, form=fd, current_form=current_form,
- msg=msg, messagetype=messagetype, response_redirect=response_redirect, **kwd )
+ message=message, status=status, response_redirect=response_redirect, **kwd )
#
# Add a field
#
@@ -261,7 +261,7 @@
current_form['fields'].append( self.empty_field )
# show the form again with one empty field
return self.__show( trans=trans, form=fd, current_form=current_form,
- msg=msg, messagetype=messagetype, response_redirect=response_redirect, **kwd )
+ message=message, status=status, response_redirect=response_redirect, **kwd )
#
# Delete a field
#
@@ -271,33 +271,33 @@
index = int( kwd[ 'remove_button' ].split( ' ' )[2] ) - 1
del current_form['fields'][index]
return self.__show( trans=trans, form=fd, current_form=current_form,
- msg=msg, messagetype=messagetype, response_redirect=response_redirect, **kwd )
+ message=message, status=status, response_redirect=response_redirect, **kwd )
#
# Add SelectField option
#
elif 'Add' in kwd.values():
- return self.__add_selectbox_option(trans, fd, msg, messagetype, response_redirect=response_redirect, **kwd)
+ return self.__add_selectbox_option(trans, fd, message, status, response_redirect=response_redirect, **kwd)
#
# Remove SelectField option
#
elif 'Remove' in kwd.values():
- return self.__remove_selectbox_option(trans, fd, msg, messagetype, response_redirect=response_redirect, **kwd)
+ return self.__remove_selectbox_option(trans, fd, message, status, response_redirect=response_redirect, **kwd)
#
# Refresh page
#
elif params.get( 'refresh', False ):
current_form = self.__get_form( trans, **kwd )
return self.__show( trans=trans, form=fd, current_form=current_form,
- msg=msg, messagetype=messagetype, response_redirect=response_redirect, **kwd )
+ message=message, status=status, response_redirect=response_redirect, **kwd )
#
# Show the form for editing
#
else:
current_form = self.__get_saved_form( fd )
return self.__show( trans=trans, form=fd, current_form=current_form,
- msg=msg, messagetype=messagetype, response_redirect=response_redirect, **kwd )
+ message=message, status=status, response_redirect=response_redirect, **kwd )
- def __add_selectbox_option( self, trans, fd, msg, messagetype, response_redirect=None, **kwd ):
+ def __add_selectbox_option( self, trans, fd, message, status, response_redirect=None, **kwd ):
'''
This method adds a selectbox option. The kwd dict searched for
the field index which needs to be removed
@@ -313,13 +313,13 @@
if index == -1:
# something wrong happened
return self.__show( trans=trans, form=fd, current_form=current_form,
- msg='Error in adding selectfield option',
- messagetype='error', response_redirect=response_redirect, **kwd )
+ message='Error in adding selectfield option',
+ status='error', response_redirect=response_redirect, **kwd )
# add an empty option
current_form[ 'fields' ][ index ][ 'selectlist' ].append( '' )
return self.__show( trans=trans, form=fd, current_form=current_form,
- msg=msg, messagetype=messagetype, response_redirect=response_redirect, **kwd )
- def __remove_selectbox_option( self, trans, fd, msg, messagetype, response_redirect=None, **kwd ):
+ message=message, status=status, response_redirect=response_redirect, **kwd )
+ def __remove_selectbox_option( self, trans, fd, message, status, response_redirect=None, **kwd ):
'''
This method removes a selectbox option. The kwd dict searched for
the field index and option index which needs to be removed
@@ -336,12 +336,12 @@
if option == -1:
# something wrong happened
return self.__show( trans=trans, form=fd, current_form=current_form,
- msg='Error in removing selectfield option',
- messagetype='error', response_redirect=response_redirect, **kwd )
+ message='Error in removing selectfield option',
+ status='error', response_redirect=response_redirect, **kwd )
# remove the option
del current_form[ 'fields' ][ index ][ 'selectlist' ][ option ]
return self.__show( trans=trans, form=fd, current_form=current_form,
- msg=msg, messagetype=messagetype, response_redirect=response_redirect, **kwd )
+ message=message, status=status, response_redirect=response_redirect, **kwd )
def __get_field(self, index, **kwd):
@@ -497,9 +497,9 @@
This method saves the current form
'''
# check the form for invalid inputs
- flag, msg = self.__validate_form(**kwd)
+ flag, message = self.__validate_form(**kwd)
if not flag:
- return None, msg
+ return None, message
current_form = self.__get_form( trans, **kwd )
# validate fields
for field in current_form[ 'fields' ]:
@@ -523,8 +523,8 @@
fdc.latest_form = fd
trans.sa_session.add( fdc )
trans.sa_session.flush()
- msg = "The new form named '%s' has been created. " % (fd.name)
- return fd, msg
+ message = "The new form named '%s' has been created. " % (fd.name)
+ return fd, message
class FieldUI(object):
def __init__(self, trans, layout_grids, index, field=None, field_type=None, form_type=None):
@@ -631,7 +631,7 @@
def label(self):
return str(self.index)+'.'+self.label
- def __show( self, trans, form, current_form, msg='', messagetype='done', response_redirect=None, **kwd ):
+ def __show( self, trans, form, current_form, message='', status='done', response_redirect=None, **kwd ):
'''
This method displays the form and any of the changes made to it,
The empty_form param allows for this method to simulate clicking
@@ -662,8 +662,8 @@
field_details=field_details,
form=form,
field_types=BaseField.form_field_types(),
- msg=msg,
- messagetype=messagetype,
+ message=message,
+ status=status,
current_form_type=current_form[ 'type' ],
layout_grids=form_layout,
response_redirect=response_redirect )
diff -r 43b7a7f4bff5 -r f2b6d4f3189c lib/galaxy/web/controllers/history.py
--- a/lib/galaxy/web/controllers/history.py Fri Apr 02 15:09:29 2010 -0400
+++ b/lib/galaxy/web/controllers/history.py Fri Apr 02 16:06:43 2010 -0400
@@ -648,8 +648,11 @@
elif 'unshare_user' in kwargs:
user = trans.sa_session.query( trans.app.model.User ).get( trans.security.decode_id( kwargs[ 'unshare_user' ] ) )
if not user:
- msg = 'History (%s) does not seem to be shared with user (%s)' % ( history.name, user.email )
- return trans.fill_template( 'history/sharing.mako', histories=histories, msg=msg, messagetype='error' )
+ message = 'History (%s) does not seem to be shared with user (%s)' % ( history.name, user.email )
+ return trans.fill_template( 'history/sharing.mako',
+ histories=histories,
+ message=message,
+ status='error' )
husas = trans.sa_session.query( trans.app.model.HistoryUserShareAssociation ).filter_by( user=user, history=history ).all()
if husas:
for husa in husas:
diff -r 43b7a7f4bff5 -r f2b6d4f3189c lib/galaxy/web/controllers/library.py
--- a/lib/galaxy/web/controllers/library.py Fri Apr 02 15:09:29 2010 -0400
+++ b/lib/galaxy/web/controllers/library.py Fri Apr 02 16:06:43 2010 -0400
@@ -10,17 +10,17 @@
@web.expose
def index( self, trans, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
return trans.fill_template( "/library/index.mako",
default_action=params.get( 'default_action', None ),
- msg=msg,
- messagetype=messagetype )
+ message=message,
+ status=status )
@web.expose
def browse_libraries( self, trans, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
current_user_roles = trans.get_current_user_roles()
all_libraries = trans.sa_session.query( trans.app.model.Library ) \
.filter( trans.app.model.Library.table.c.deleted==False ) \
@@ -32,5 +32,5 @@
return trans.fill_template( '/library/browse_libraries.mako',
libraries=authorized_libraries,
default_action=params.get( 'default_action', None ),
- msg=msg,
- messagetype=messagetype )
+ message=message,
+ status=status )
diff -r 43b7a7f4bff5 -r f2b6d4f3189c lib/galaxy/web/controllers/library_admin.py
--- a/lib/galaxy/web/controllers/library_admin.py Fri Apr 02 15:09:29 2010 -0400
+++ b/lib/galaxy/web/controllers/library_admin.py Fri Apr 02 16:06:43 2010 -0400
@@ -92,8 +92,8 @@
@web.require_admin
def create_library( self, trans, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
if params.get( 'create_library_button', False ):
name = util.restore_text( params.get( 'name', 'No name' ) )
description = util.restore_text( params.get( 'description', '' ) )
@@ -105,14 +105,14 @@
library.root_folder = root_folder
trans.sa_session.add_all( ( library, root_folder ) )
trans.sa_session.flush()
- msg = "The new library named '%s' has been created" % library.name
+ message = "The new library named '%s' has been created" % library.name
return trans.response.send_redirect( web.url_for( controller='library_common',
action='browse_library',
cntrller='library_admin',
id=trans.security.encode_id( library.id ),
- msg=util.sanitize_text( msg ),
- messagetype='done' ) )
- return trans.fill_template( '/admin/library/new_library.mako', msg=msg, messagetype=messagetype )
+ message=util.sanitize_text( message ),
+ status='done' ) )
+ return trans.fill_template( '/admin/library/new_library.mako', message=message, status=status )
@web.expose
@web.require_admin
def purge_library( self, trans, **kwd ):
@@ -146,20 +146,20 @@
trans.sa_session.add( library_folder )
trans.sa_session.flush()
if not library.deleted:
- msg = "Library '%s' has not been marked deleted, so it cannot be purged" % ( library.name )
+ message = "Library '%s' has not been marked deleted, so it cannot be purged" % ( library.name )
return trans.response.send_redirect( web.url_for( controller='library_admin',
action='browse_libraries',
- message=util.sanitize_text( msg ),
+ message=util.sanitize_text( message ),
status='error' ) )
else:
purge_folder( library.root_folder )
library.purged = True
trans.sa_session.add( library )
trans.sa_session.flush()
- msg = "Library '%s' and all of its contents have been purged, datasets will be removed from disk via the cleanup_datasets script" % library.name
+ message = "Library '%s' and all of its contents have been purged, datasets will be removed from disk via the cleanup_datasets script" % library.name
return trans.response.send_redirect( web.url_for( controller='library_admin',
action='browse_libraries',
- message=util.sanitize_text( msg ),
+ message=util.sanitize_text( message ),
status='done' ) )
@web.expose
@web.require_admin
@@ -176,8 +176,8 @@
'folder': trans.app.model.LibraryFolder,
'library_dataset': trans.app.model.LibraryDataset }
if item_type not in item_types:
- msg = 'Bad item_type specified: %s' % str( item_type )
- messagetype = 'error'
+ message = 'Bad item_type specified: %s' % str( item_type )
+ status = 'error'
else:
if item_type == 'library_dataset':
item_desc = 'Dataset'
@@ -187,18 +187,18 @@
library_item.deleted = True
trans.sa_session.add( library_item )
trans.sa_session.flush()
- msg = util.sanitize_text( "%s '%s' has been marked deleted" % ( item_desc, library_item.name ) )
- messagetype = 'done'
+ message = util.sanitize_text( "%s '%s' has been marked deleted" % ( item_desc, library_item.name ) )
+ status = 'done'
if item_type == 'library':
- return self.browse_libraries( trans, message=msg, status=messagetype )
+ return self.browse_libraries( trans, message=message, status=status )
else:
return trans.response.send_redirect( web.url_for( controller='library_common',
action='browse_library',
cntrller='library_admin',
id=library_id,
show_deleted=show_deleted,
- msg=msg,
- messagetype=messagetype ) )
+ message=message,
+ status=status ) )
@web.expose
@web.require_admin
def undelete_library_item( self, trans, library_id, item_id, item_type, **kwd ):
@@ -208,7 +208,7 @@
'folder': trans.app.model.LibraryFolder,
'library_dataset': trans.app.model.LibraryDataset }
if item_type not in item_types:
- msg = 'Bad item_type specified: %s' % str( item_type )
+ message = 'Bad item_type specified: %s' % str( item_type )
status = ERROR
else:
if item_type == 'library_dataset':
@@ -217,21 +217,21 @@
item_desc = item_type.capitalize()
library_item = trans.sa_session.query( item_types[ item_type ] ).get( trans.security.decode_id( item_id ) )
if library_item.purged:
- msg = '%s %s has been purged, so it cannot be undeleted' % ( item_desc, library_item.name )
+ message = '%s %s has been purged, so it cannot be undeleted' % ( item_desc, library_item.name )
status = ERROR
else:
library_item.deleted = False
trans.sa_session.add( library_item )
trans.sa_session.flush()
- msg = util.sanitize_text( "%s '%s' has been marked undeleted" % ( item_desc, library_item.name ) )
+ message = util.sanitize_text( "%s '%s' has been marked undeleted" % ( item_desc, library_item.name ) )
status = SUCCESS
if item_type == 'library':
- return self.browse_libraries( trans, message=msg, status=status )
+ return self.browse_libraries( trans, message=message, status=status )
else:
return trans.response.send_redirect( web.url_for( controller='library_common',
action='browse_library',
cntrller='library_admin',
id=library_id,
show_deleted=show_deleted,
- msg=msg,
- messagetype=status ) )
+ message=message,
+ status=status ) )
diff -r 43b7a7f4bff5 -r f2b6d4f3189c lib/galaxy/web/controllers/library_common.py
--- a/lib/galaxy/web/controllers/library_common.py Fri Apr 02 15:09:29 2010 -0400
+++ b/lib/galaxy/web/controllers/library_common.py Fri Apr 02 16:06:43 2010 -0400
@@ -79,18 +79,18 @@
@web.expose
def browse_library( self, trans, cntrller, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
library_id = params.get( 'id', None )
if not library_id:
# To handle bots
- msg = "You must specify a library id."
- messagetype = 'error'
+ message = "You must specify a library id."
+ status = 'error'
library = trans.sa_session.query( trans.app.model.Library ).get( trans.security.decode_id( library_id ) )
if not library:
# To handle bots
- msg = "Invalid library id ( %s )." % str( library_id )
- messagetype = 'error'
+ message = "Invalid library id ( %s )." % str( library_id )
+ status = 'error'
else:
# If use_panels is True, the library is being accessed via an external link
# which did not originate from within the Galaxy instance, and the library will
@@ -100,12 +100,12 @@
created_ldda_ids = params.get( 'created_ldda_ids', '' )
hidden_folder_ids = util.listify( params.get( 'hidden_folder_ids', '' ) )
current_user_roles = trans.get_current_user_roles()
- if created_ldda_ids and not msg:
- msg = "%d datasets are uploading in the background to the library '%s' (each is selected). " % \
+ if created_ldda_ids and not message:
+ message = "%d datasets are uploading in the background to the library '%s' (each is selected). " % \
( len( created_ldda_ids.split( ',' ) ), library.name )
- msg += "Don't navigate away from Galaxy or use the browser's \"stop\" or \"reload\" buttons (on this tab) until the "
- msg += "message \"This job is running\" is cleared from the \"Information\" column below for each selected dataset."
- messagetype = "info"
+ message += "Don't navigate away from Galaxy or use the browser's \"stop\" or \"reload\" buttons (on this tab) until the "
+ message += "message \"This job is running\" is cleared from the \"Information\" column below for each selected dataset."
+ status = "info"
return trans.fill_template( '/library/common/browse_library.mako',
cntrller=cntrller,
use_panels=use_panels,
@@ -115,19 +115,19 @@
show_deleted=show_deleted,
comptypes=comptypes,
current_user_roles=current_user_roles,
- msg=msg,
- messagetype=messagetype )
+ message=message,
+ status=status )
return trans.response.send_redirect( web.url_for( use_panels=use_panels,
controller=cntrller,
action='browse_libraries',
default_action=params.get( 'default_action', None ),
- msg=util.sanitize_text( msg ),
- messagetype=messagetype ) )
+ message=util.sanitize_text( message ),
+ status=status ) )
@web.expose
def library_info( self, trans, cntrller, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
use_panels = util.string_as_bool( params.get( 'use_panels', False ) )
library_id = params.get( 'id', None )
library = trans.sa_session.query( trans.app.model.Library ).get( trans.security.decode_id( library_id ) )
@@ -140,8 +140,8 @@
old_name = library.name
new_name = util.restore_text( params.get( 'name', 'No name' ) )
if not new_name:
- msg = 'Enter a valid name'
- messagetype='error'
+ message = 'Enter a valid name'
+ status='error'
else:
new_description = util.restore_text( params.get( 'description', '' ) )
new_synopsis = util.restore_text( params.get( 'synopsis', '' ) )
@@ -155,15 +155,15 @@
library.root_folder.description = new_description
trans.sa_session.add_all( ( library, library.root_folder ) )
trans.sa_session.flush()
- msg = "The information has been updated."
+ message = "The information has been updated."
return trans.response.send_redirect( web.url_for( controller='library_common',
action='library_info',
cntrller=cntrller,
use_panels=use_panels,
id=trans.security.encode_id( library.id ),
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='done' ) )
+ message=util.sanitize_text( message ),
+ status='done' ) )
return trans.fill_template( '/library/common/library_info.mako',
cntrller=cntrller,
use_panels=use_panels,
@@ -173,13 +173,13 @@
show_deleted=show_deleted,
info_association=info_association,
inherited=inherited,
- msg=msg,
- messagetype=messagetype )
+ message=message,
+ status=status )
@web.expose
def library_permissions( self, trans, cntrller, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
use_panels = util.string_as_bool( params.get( 'use_panels', False ) )
library_id = params.get( 'id', None )
library = trans.sa_session.query( trans.app.model.Library ).get( trans.security.decode_id( library_id ) )
@@ -195,15 +195,15 @@
trans.sa_session.refresh( library )
# Copy the permissions to the root folder
trans.app.security_agent.copy_library_permissions( library, library.root_folder )
- msg = "Permissions updated for library '%s'" % library.name
+ message = "Permissions updated for library '%s'" % library.name
return trans.response.send_redirect( web.url_for( controller='library_common',
action='library_permissions',
cntrller=cntrller,
use_panels=use_panels,
id=trans.security.encode_id( library.id ),
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='done' ) )
+ message=util.sanitize_text( message ),
+ status='done' ) )
roles = trans.app.security_agent.get_legitimate_roles( trans, library, cntrller )
return trans.fill_template( '/library/common/library_permissions.mako',
cntrller=cntrller,
@@ -212,26 +212,26 @@
current_user_roles=current_user_roles,
roles=roles,
show_deleted=show_deleted,
- msg=msg,
- messagetype=messagetype )
+ message=message,
+ status=status )
@web.expose
def create_folder( self, trans, cntrller, parent_id, library_id, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
show_deleted = util.string_as_bool( params.get( 'show_deleted', False ) )
use_panels = util.string_as_bool( params.get( 'use_panels', False ) )
parent_folder = trans.sa_session.query( trans.app.model.LibraryFolder ).get( trans.security.decode_id( parent_id ) )
if not parent_folder:
- msg = "Invalid parent folder id (%s) specified" % str( parent_id )
+ message = "Invalid parent folder id (%s) specified" % str( parent_id )
return trans.response.send_redirect( web.url_for( controller='library_common',
action='browse_library',
cntrller=cntrller,
use_panels=use_panels,
id=library_id,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='error' ) )
+ message=util.sanitize_text( message ),
+ status='error' ) )
if params.get( 'new_folder_button', False ):
new_folder = trans.app.model.LibraryFolder( name=util.restore_text( params.name ),
description=util.restore_text( params.description ) )
@@ -252,8 +252,8 @@
widgets = new_folder.get_template_widgets( trans )
if info_association:
current_user_roles = trans.get_current_user_roles()
- msg = "The new folder named '%s' has been added to the data library. " % new_folder.name
- msg += "Additional information about this folder may be added using the inherited template."
+ message = "The new folder named '%s' has been added to the data library. " % new_folder.name
+ message += "Additional information about this folder may be added using the inherited template."
return trans.fill_template( '/library/common/folder_info.mako',
cntrller=cntrller,
use_panels=use_panels,
@@ -264,18 +264,18 @@
show_deleted=show_deleted,
info_association=info_association,
inherited=inherited,
- msg=msg,
- messagetype='done' )
+ message=message,
+ status='done' )
# If not inheritable info_association, redirect to the library.
- msg = "The new folder named '%s' has been added to the data library." % new_folder.name
+ message = "The new folder named '%s' has been added to the data library." % new_folder.name
return trans.response.send_redirect( web.url_for( controller='library_common',
action='browse_library',
cntrller=cntrller,
use_panels=use_panels,
id=library_id,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='done' ) )
+ message=util.sanitize_text( message ),
+ status='done' ) )
# We do not render any template widgets on creation pages since saving the info_association
# cannot occur before the associated item is saved.
return trans.fill_template( '/library/common/new_folder.mako',
@@ -284,13 +284,13 @@
library_id=library_id,
folder=parent_folder,
show_deleted=show_deleted,
- msg=msg,
- messagetype=messagetype )
+ message=message,
+ status=status )
@web.expose
def folder_info( self, trans, cntrller, id, library_id, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
show_deleted = util.string_as_bool( params.get( 'show_deleted', False ) )
use_panels = util.string_as_bool( params.get( 'use_panels', False ) )
folder = trans.sa_session.query( trans.app.model.LibraryFolder ).get( trans.security.decode_id( id ) )
@@ -306,18 +306,18 @@
new_name = util.restore_text( params.name )
new_description = util.restore_text( params.description )
if not new_name:
- msg = 'Enter a valid name'
- messagetype='error'
+ message = 'Enter a valid name'
+ status='error'
else:
folder.name = new_name
folder.description = new_description
trans.sa_session.add( folder )
trans.sa_session.flush()
- msg = "The information has been updated."
- messagetype='done'
+ message = "The information has been updated."
+ status='done'
else:
- msg = "You are not authorized to edit this folder"
- messagetype='error'
+ message = "You are not authorized to edit this folder"
+ status='error'
return trans.fill_template( '/library/common/folder_info.mako',
cntrller=cntrller,
use_panels=use_panels,
@@ -328,26 +328,26 @@
show_deleted=show_deleted,
info_association=info_association,
inherited=inherited,
- msg=msg,
- messagetype=messagetype )
+ message=message,
+ status=status )
@web.expose
def folder_permissions( self, trans, cntrller, id, library_id, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
show_deleted = util.string_as_bool( params.get( 'show_deleted', False ) )
use_panels = util.string_as_bool( params.get( 'use_panels', False ) )
folder = trans.sa_session.query( trans.app.model.LibraryFolder ).get( trans.security.decode_id( id ) )
if not folder:
- msg = "Invalid folder specified, id: %s" % str( id )
+ message = "Invalid folder specified, id: %s" % str( id )
return trans.response.send_redirect( web.url_for( controller='library_common',
action='browse_library',
cntrller=cntrller,
use_panels=use_panels,
id=library_id,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='error' ) )
+ message=util.sanitize_text( message ),
+ status='error' ) )
current_user_roles = trans.get_current_user_roles()
if params.get( 'update_roles_button', False ):
# The user clicked the Save button on the 'Associate With Roles' form
@@ -361,11 +361,11 @@
permissions[ trans.app.security_agent.get_action( v.action ) ] = in_roles
trans.app.security_agent.set_all_library_permissions( folder, permissions )
trans.sa_session.refresh( folder )
- msg = 'Permissions updated for folder %s' % folder.name
- messagetype='done'
+ message = 'Permissions updated for folder %s' % folder.name
+ status='done'
else:
- msg = "You are not authorized to manage permissions on this folder"
- messagetype = "error"
+ message = "You are not authorized to manage permissions on this folder"
+ status = "error"
return trans.response.send_redirect( web.url_for( controller='library_common',
action='folder_permissions',
cntrller=cntrller,
@@ -373,8 +373,8 @@
id=trans.security.encode_id( folder.id ),
library_id=library_id,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype=messagetype ) )
+ message=util.sanitize_text( message ),
+ status=status ) )
# If the library is public all roles are legitimate, but if the library is restricted, only those
# roles associated with the LIBRARY_ACCESS permission are legitimate.
library = trans.sa_session.query( trans.app.model.Library ).get( trans.security.decode_id( library_id ) )
@@ -387,26 +387,26 @@
current_user_roles=current_user_roles,
roles=roles,
show_deleted=show_deleted,
- msg=msg,
- messagetype=messagetype )
+ message=message,
+ status=status )
@web.expose
def ldda_edit_info( self, trans, cntrller, library_id, folder_id, id, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
show_deleted = util.string_as_bool( params.get( 'show_deleted', False ) )
use_panels = util.string_as_bool( params.get( 'use_panels', False ) )
ldda = trans.sa_session.query( trans.app.model.LibraryDatasetDatasetAssociation ).get( trans.security.decode_id( id ) )
if not ldda:
- msg = "Invalid LibraryDatasetDatasetAssociation specified, id: %s" % str( id )
+ message = "Invalid LibraryDatasetDatasetAssociation specified, id: %s" % str( id )
return trans.response.send_redirect( web.url_for( controller='library_common',
action='browse_library',
cntrller=cntrller,
use_panels=use_panels,
id=library_id,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='error' ) )
+ message=util.sanitize_text( message ),
+ status='error' ) )
dbkey = params.get( 'dbkey', '?' )
if isinstance( dbkey, list ):
dbkey = dbkey[0]
@@ -424,14 +424,14 @@
if ldda.datatype.allow_datatype_change and trans.app.datatypes_registry.get_datatype_by_extension( params.datatype ).allow_datatype_change:
trans.app.datatypes_registry.change_datatype( ldda, params.datatype )
trans.sa_session.flush()
- msg = "Data type changed for library dataset '%s'" % ldda.name
- messagetype = 'done'
+ message = "Data type changed for library dataset '%s'" % ldda.name
+ status = 'done'
else:
- msg = "You are unable to change datatypes in this manner. Changing %s to %s is not allowed." % ( ldda.extension, params.datatype )
- messagetype = 'error'
+ message = "You are unable to change datatypes in this manner. Changing %s to %s is not allowed." % ( ldda.extension, params.datatype )
+ status = 'error'
else:
- msg = "You are not authorized to change the data type of dataset '%s'" % ldda.name
- messagetype = 'error'
+ message = "You are not authorized to change the data type of dataset '%s'" % ldda.name
+ status = 'error'
elif params.get( 'save', False ):
# The user clicked the Save button on the 'Edit Attributes' form
if cntrller=='library_admin' or trans.app.security_agent.can_modify_library_item( current_user_roles, ldda ):
@@ -440,8 +440,8 @@
new_info = util.restore_text( params.get( 'info', '' ) )
new_message = util.restore_text( params.get( 'message', '' ) )
if not new_name:
- msg = 'Enter a valid name'
- messagetype = 'error'
+ message = 'Enter a valid name'
+ status = 'error'
else:
ldda.name = new_name
ldda.info = new_info
@@ -459,11 +459,11 @@
ldda.metadata.dbkey = dbkey
ldda.datatype.after_setting_metadata( ldda )
trans.sa_session.flush()
- msg = 'Attributes updated for library dataset %s' % ldda.name
- messagetype = 'done'
+ message = 'Attributes updated for library dataset %s' % ldda.name
+ status = 'done'
else:
- msg = "You are not authorized to edit the attributes of dataset '%s'" % ldda.name
- messagetype = 'error'
+ message = "You are not authorized to edit the attributes of dataset '%s'" % ldda.name
+ status = 'error'
elif params.get( 'detect', False ):
# The user clicked the Auto-detect button on the 'Edit Attributes' form
if cntrller=='library_admin' or trans.app.security_agent.can_modify_library_item( current_user_roles, ldda ):
@@ -475,11 +475,11 @@
ldda.datatype.set_meta( ldda )
ldda.datatype.after_setting_metadata( ldda )
trans.sa_session.flush()
- msg = 'Attributes updated for library dataset %s' % ldda.name
- messagetype = 'done'
+ message = 'Attributes updated for library dataset %s' % ldda.name
+ status = 'done'
else:
- msg = "You are not authorized to edit the attributes of dataset '%s'" % ldda.name
- messagetype = 'error'
+ message = "You are not authorized to edit the attributes of dataset '%s'" % ldda.name
+ status = 'error'
if cntrller=='library_admin' or trans.app.security_agent.can_modify_library_item( current_user_roles, ldda ):
if "dbkey" in ldda.datatype.metadata_spec and not ldda.metadata.dbkey:
# Copy dbkey into metadata, for backwards compatability
@@ -499,26 +499,26 @@
show_deleted=show_deleted,
info_association=info_association,
inherited=inherited,
- msg=msg,
- messagetype=messagetype )
+ message=message,
+ status=status )
@web.expose
def ldda_info( self, trans, cntrller, library_id, folder_id, id, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
show_deleted = util.string_as_bool( params.get( 'show_deleted', False ) )
use_panels = util.string_as_bool( params.get( 'use_panels', False ) )
ldda = trans.sa_session.query( trans.app.model.LibraryDatasetDatasetAssociation ).get( trans.security.decode_id( id ) )
if not ldda:
- msg = "Invalid LibraryDatasetDatasetAssociation specified, id: %s" % str( id )
+ message = "Invalid LibraryDatasetDatasetAssociation specified, id: %s" % str( id )
return trans.response.send_redirect( web.url_for( controller='library_common',
action='browse_library',
cntrller=cntrller,
use_panels=use_panels,
id=library_id,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='error' ) )
+ message=util.sanitize_text( message ),
+ status='error' ) )
library = trans.sa_session.query( trans.app.model.Library ).get( trans.security.decode_id( library_id ) )
# See if we have any associated templates
widgets = []
@@ -536,13 +536,13 @@
current_user_roles=current_user_roles,
info_association=info_association,
inherited=inherited,
- msg=msg,
- messagetype=messagetype )
+ message=message,
+ status=status )
@web.expose
def ldda_permissions( self, trans, cntrller, library_id, folder_id, id, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
show_deleted = util.string_as_bool( params.get( 'show_deleted', False ) )
use_panels = util.string_as_bool( params.get( 'use_panels', False ) )
ids = util.listify( id )
@@ -550,15 +550,15 @@
for id in [ trans.security.decode_id( id ) for id in ids ]:
ldda = trans.sa_session.query( trans.app.model.LibraryDatasetDatasetAssociation ).get( id )
if ldda is None:
- msg = 'You specified an invalid LibraryDatasetDatasetAssociation id: %s' %str( id )
+ message = 'You specified an invalid LibraryDatasetDatasetAssociation id: %s' %str( id )
trans.response.send_redirect( web.url_for( controller='library_common',
action='browse_library',
cntrller=cntrller,
use_panels=use_panels,
id=library_id,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='error' ) )
+ message=util.sanitize_text( message ),
+ status='error' ) )
lddas.append( ldda )
library = trans.sa_session.query( trans.app.model.Library ).get( trans.security.decode_id( library_id ) )
# If access to the dataset is restricted, then use the roles associated with the DATASET_ACCESS permission to
@@ -577,7 +577,7 @@
if cntrller=='library_admin' or ( trans.app.security_agent.can_manage_library_item( current_user_roles, ldda ) and \
trans.app.security_agent.can_manage_dataset( current_user_roles, ldda.dataset ) ):
a = trans.app.security_agent.get_action( trans.app.security_agent.permitted_actions.DATASET_ACCESS.action )
- permissions, in_roles, error, msg = \
+ permissions, in_roles, error, message = \
trans.app.security_agent.derive_roles_from_access( trans, trans.app.security.decode_id( library_id ), cntrller, library=True, **kwd )
for ldda in lddas:
# Set the DATASET permissions on the Dataset.
@@ -601,13 +601,13 @@
trans.app.security_agent.set_all_library_permissions( ldda, permissions )
trans.sa_session.refresh( ldda )
if error:
- messagetype = 'error'
+ status = 'error'
else:
- msg = 'Permissions have been updated on %d datasets.' % len( lddas )
- messagetype= 'done'
+ message = 'Permissions have been updated on %d datasets.' % len( lddas )
+ status= 'done'
else:
- msg = "You are not authorized to change the permissions of dataset '%s'" % ldda.name
- messagetype = 'error'
+ message = "You are not authorized to change the permissions of dataset '%s'" % ldda.name
+ status = 'error'
return trans.fill_template( "/library/common/ldda_permissions.mako",
cntrller=cntrller,
use_panels=use_panels,
@@ -615,8 +615,8 @@
library_id=library_id,
roles=roles,
show_deleted=show_deleted,
- msg=msg,
- messagetype=messagetype )
+ message=message,
+ status=status )
if len( ids ) > 1:
# Ensure that the permissions across all library items are identical, otherwise we can't update them together.
check_list = []
@@ -634,15 +634,15 @@
if not check_list:
check_list = permissions
if permissions != check_list:
- msg = 'The datasets you selected do not have identical permissions, so they can not be updated together'
+ message = 'The datasets you selected do not have identical permissions, so they can not be updated together'
trans.response.send_redirect( web.url_for( controller='library_common',
action='browse_library',
cntrller=cntrller,
use_panels=use_panels,
id=library_id,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='error' ) )
+ message=util.sanitize_text( message ),
+ status='error' ) )
# Display permission form, permissions will be updated for all lddas simultaneously.
return trans.fill_template( "/library/common/ldda_permissions.mako",
cntrller=cntrller,
@@ -651,13 +651,13 @@
library_id=library_id,
roles=roles,
show_deleted=show_deleted,
- msg=msg,
- messagetype=messagetype )
+ message=message,
+ status=status )
@web.expose
def upload_library_dataset( self, trans, cntrller, library_id, folder_id, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
deleted = util.string_as_bool( params.get( 'deleted', False ) )
show_deleted = util.string_as_bool( params.get( 'show_deleted', False ) )
dbkey = params.get( 'dbkey', '?' )
@@ -694,10 +694,10 @@
error = None
if roles:
vars = dict( DATASET_ACCESS_in=roles )
- permissions, in_roles, error, msg = \
+ permissions, in_roles, error, message = \
trans.app.security_agent.derive_roles_from_access( trans, trans.app.security.decode_id( library_id ), cntrller, library=True, **vars )
if error:
- messagetype = 'error'
+ status = 'error'
trans.response.send_redirect( web.url_for( controller='library_common',
action='upload_library_dataset',
cntrller=cntrller,
@@ -706,8 +706,8 @@
replace_id=replace_id,
upload_option=upload_option,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='error' ) )
+ message=util.sanitize_text( message ),
+ status='error' ) )
else:
# See if we have any inherited templates, but do not inherit contents.
@@ -731,16 +731,16 @@
ldda_id_list = [ str( v.id ) for k, v in created_outputs_dict.items() ]
created_ldda_ids=",".join( ldda_id_list )
if replace_dataset:
- msg = "Added %d dataset versions to the library dataset '%s' in the folder '%s'." % ( total_added, replace_dataset_name, folder.name )
+ message = "Added %d dataset versions to the library dataset '%s' in the folder '%s'." % ( total_added, replace_dataset_name, folder.name )
else:
if not folder.parent:
# Libraries have the same name as their root_folder
- msg = "Added %d datasets to the library '%s' (each is selected). " % ( total_added, folder.name )
+ message = "Added %d datasets to the library '%s' (each is selected). " % ( total_added, folder.name )
else:
- msg = "Added %d datasets to the folder '%s' (each is selected). " % ( total_added, folder.name )
+ message = "Added %d datasets to the folder '%s' (each is selected). " % ( total_added, folder.name )
if cntrller == 'library_admin':
- msg += "Click the Go button at the bottom of this page to edit the permissions on these datasets if necessary."
- messagetype='done'
+ message += "Click the Go button at the bottom of this page to edit the permissions on these datasets if necessary."
+ status='done'
else:
# Since permissions on all LibraryDatasetDatasetAssociations must be the same at this point, we only need
# to check one of them to see if the current user can manage permissions on them.
@@ -749,7 +749,7 @@
if replace_dataset:
default_action = ''
else:
- msg += "Click the Go button at the bottom of this page to edit the permissions on these datasets if necessary."
+ message += "Click the Go button at the bottom of this page to edit the permissions on these datasets if necessary."
default_action = 'manage_permissions'
else:
default_action = 'add'
@@ -760,21 +760,21 @@
default_action=default_action,
created_ldda_ids=created_ldda_ids,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='done' ) )
+ message=util.sanitize_text( message ),
+ status='done' ) )
else:
created_ldda_ids = ''
- msg = "Upload failed"
- messagetype='error'
+ message = "Upload failed"
+ status='error'
trans.response.send_redirect( web.url_for( controller='library_common',
action='browse_library',
cntrller=cntrller,
id=library_id,
created_ldda_ids=created_ldda_ids,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype=messagetype ) )
+ message=util.sanitize_text( message ),
+ status=status ) )
# See if we have any inherited templates, but do not inherit contents.
info_association, inherited = folder.get_info_association( inherited=True )
if info_association and info_association.inheritable:
@@ -819,8 +819,8 @@
history=history,
widgets=widgets,
show_deleted=show_deleted,
- msg=msg,
- messagetype=messagetype )
+ message=message,
+ status=status )
def upload_dataset( self, trans, cntrller, library_id, folder_id, replace_dataset=None, **kwd ):
# Set up the traditional tool state/params
tool_id = 'upload1'
@@ -836,8 +836,8 @@
params = util.Params( kwd ) # is this filetoolparam safe?
show_deleted = util.string_as_bool( params.get( 'show_deleted', False ) )
library_bunch = upload_common.handle_library_params( trans, params, folder_id, replace_dataset )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
server_dir = util.restore_text( params.get( 'server_dir', '' ) )
if replace_dataset not in [ None, 'None' ]:
replace_id = trans.security.encode_id( replace_dataset.id )
@@ -860,21 +860,21 @@
else:
full_dir = os.path.join( import_dir, trans.user.email, server_dir )
if import_dir:
- msg = 'Select a directory'
+ message = 'Select a directory'
else:
- msg = '"%s" is not defined in the Galaxy configuration file' % import_dir_desc
+ message = '"%s" is not defined in the Galaxy configuration file' % import_dir_desc
# Proceed with (mostly) regular upload processing
precreated_datasets = upload_common.get_precreated_datasets( trans, tool_params, trans.app.model.LibraryDatasetDatasetAssociation, controller=cntrller )
if upload_option == 'upload_file':
tool_params = upload_common.persist_uploads( tool_params )
uploaded_datasets = upload_common.get_uploaded_datasets( trans, cntrller, tool_params, precreated_datasets, dataset_upload_inputs, library_bunch=library_bunch )
elif upload_option == 'upload_directory':
- uploaded_datasets, err_redirect, msg = self.get_server_dir_uploaded_datasets( trans, cntrller, params, full_dir, import_dir_desc, library_bunch, err_redirect, msg )
+ uploaded_datasets, err_redirect, message = self.get_server_dir_uploaded_datasets( trans, cntrller, params, full_dir, import_dir_desc, library_bunch, err_redirect, message )
elif upload_option == 'upload_paths':
- uploaded_datasets, err_redirect, msg = self.get_path_paste_uploaded_datasets( trans, cntrller, params, library_bunch, err_redirect, msg )
+ uploaded_datasets, err_redirect, message = self.get_path_paste_uploaded_datasets( trans, cntrller, params, library_bunch, err_redirect, message )
upload_common.cleanup_unused_precreated_datasets( precreated_datasets )
if upload_option == 'upload_file' and not uploaded_datasets:
- msg = 'Select a file, enter a URL or enter text'
+ message = 'Select a file, enter a URL or enter text'
err_redirect = True
if err_redirect:
trans.response.send_redirect( web.url_for( controller='library_common',
@@ -885,8 +885,8 @@
replace_id=replace_id,
upload_option=upload_option,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='error' ) )
+ message=util.sanitize_text( message ),
+ status='error' ) )
json_file_path = upload_common.create_paramfile( trans, uploaded_datasets )
data_list = [ ud.data for ud in uploaded_datasets ]
return upload_common.create_job( trans, tool_params, tool, json_file_path, data_list, folder=library_bunch.folder )
@@ -909,7 +909,7 @@
trans.sa_session.add( uploaded_dataset.data )
trans.sa_session.flush()
return uploaded_dataset
- def get_server_dir_uploaded_datasets( self, trans, cntrller, params, full_dir, import_dir_desc, library_bunch, err_redirect, msg ):
+ def get_server_dir_uploaded_datasets( self, trans, cntrller, params, full_dir, import_dir_desc, library_bunch, err_redirect, message ):
files = []
try:
for entry in os.listdir( full_dir ):
@@ -925,23 +925,23 @@
if os.path.isfile( path ):
files.append( path )
except Exception, e:
- msg = "Unable to get file list for configured %s, error: %s" % ( import_dir_desc, str( e ) )
+ message = "Unable to get file list for configured %s, error: %s" % ( import_dir_desc, str( e ) )
err_redirect = True
- return None, err_redirect, msg
+ return None, err_redirect, message
if not files:
- msg = "The directory '%s' contains no valid files" % full_dir
+ message = "The directory '%s' contains no valid files" % full_dir
err_redirect = True
- return None, err_redirect, msg
+ return None, err_redirect, message
uploaded_datasets = []
for file in files:
name = os.path.basename( file )
uploaded_datasets.append( self.make_library_uploaded_dataset( trans, cntrller, params, name, file, 'server_dir', library_bunch ) )
return uploaded_datasets, None, None
- def get_path_paste_uploaded_datasets( self, trans, cntrller, params, library_bunch, err_redirect, msg ):
+ def get_path_paste_uploaded_datasets( self, trans, cntrller, params, library_bunch, err_redirect, message ):
if params.get( 'filesystem_paths', '' ) == '':
- msg = "No paths entered in the upload form"
+ message = "No paths entered in the upload form"
err_redirect = True
- return None, err_redirect, msg
+ return None, err_redirect, message
preserve_dirs = True
if params.get( 'dont_preserve_dirs', False ):
preserve_dirs = False
@@ -974,16 +974,16 @@
library_bunch,
in_folder ) )
if bad_paths:
- msg = "Invalid paths:<br><ul><li>%s</li></ul>" % "</li><li>".join( bad_paths )
+ message = "Invalid paths:<br><ul><li>%s</li></ul>" % "</li><li>".join( bad_paths )
err_redirect = True
- return None, err_redirect, msg
+ return None, err_redirect, message
return uploaded_datasets, None, None
@web.expose
def add_history_datasets_to_library( self, trans, cntrller, library_id, folder_id, hda_ids='', **kwd ):
params = util.Params( kwd )
show_deleted = util.string_as_bool( params.get( 'show_deleted', False ) )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
folder = trans.sa_session.query( trans.app.model.LibraryFolder ).get( trans.security.decode_id( folder_id ) )
replace_id = params.get( 'replace_id', None )
if replace_id:
@@ -994,14 +994,14 @@
history = trans.get_history()
trans.sa_session.refresh( history )
if not history.active_datasets:
- msg = 'Your current history is empty'
+ message = 'Your current history is empty'
return trans.response.send_redirect( web.url_for( controller='library_common',
action='browse_library',
cntrller=cntrller,
id=library_id,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='error' ) )
+ message=util.sanitize_text( message ),
+ status='error' ) )
if params.get( 'add_history_datasets_to_library_button', False ):
hda_ids = util.listify( hda_ids )
if hda_ids:
@@ -1021,28 +1021,28 @@
# Permissions must be the same on the LibraryDatasetDatasetAssociation and the associated LibraryDataset
trans.app.security_agent.copy_library_permissions( ldda.library_dataset, ldda )
else:
- msg = "The requested HistoryDatasetAssociation id %s is invalid" % str( hda_id )
+ message = "The requested HistoryDatasetAssociation id %s is invalid" % str( hda_id )
return trans.response.send_redirect( web.url_for( controller='library_common',
action='browse_library',
cntrller=cntrller,
id=library_id,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='error' ) )
+ message=util.sanitize_text( message ),
+ status='error' ) )
if created_ldda_ids:
created_ldda_ids = created_ldda_ids.lstrip( ',' )
ldda_id_list = created_ldda_ids.split( ',' )
total_added = len( ldda_id_list )
if replace_dataset:
- msg = "Added %d dataset versions to the library dataset '%s' in the folder '%s'." % ( total_added, replace_dataset.name, folder.name )
+ message = "Added %d dataset versions to the library dataset '%s' in the folder '%s'." % ( total_added, replace_dataset.name, folder.name )
else:
if not folder.parent:
# Libraries have the same name as their root_folder
- msg = "Added %d datasets to the library '%s' (each is selected). " % ( total_added, folder.name )
+ message = "Added %d datasets to the library '%s' (each is selected). " % ( total_added, folder.name )
else:
- msg = "Added %d datasets to the folder '%s' (each is selected). " % ( total_added, folder.name )
+ message = "Added %d datasets to the folder '%s' (each is selected). " % ( total_added, folder.name )
if cntrller == 'library_admin':
- msg += "Click the Go button at the bottom of this page to edit the permissions on these datasets if necessary."
+ message += "Click the Go button at the bottom of this page to edit the permissions on these datasets if necessary."
else:
# Since permissions on all LibraryDatasetDatasetAssociations must be the same at this point, we only need
# to check one of them to see if the current user can manage permissions on them.
@@ -1052,7 +1052,7 @@
if replace_dataset:
default_action = ''
else:
- msg += "Click the Go button at the bottom of this page to edit the permissions on these datasets if necessary."
+ message += "Click the Go button at the bottom of this page to edit the permissions on these datasets if necessary."
default_action = 'manage_permissions'
else:
default_action = 'add'
@@ -1062,11 +1062,11 @@
id=library_id,
created_ldda_ids=created_ldda_ids,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='done' ) )
+ message=util.sanitize_text( message ),
+ status='done' ) )
else:
- msg = 'Select at least one dataset from the list of active datasets in your current history'
- messagetype = 'error'
+ message = 'Select at least one dataset from the list of active datasets in your current history'
+ status = 'error'
last_used_build = folder.genome_build
upload_option = params.get( 'upload_option', 'import_from_history' )
# Send list of data formats to the form so the "extension" select list can be populated dynamically
@@ -1091,8 +1091,8 @@
history=history,
widgets=[],
show_deleted=show_deleted,
- msg=msg,
- messagetype=messagetype )
+ message=message,
+ status=status )
@web.expose
def download_dataset_from_folder( self, trans, cntrller, id, library_id=None, **kwd ):
"""Catches the dataset id and displays file contents as directed"""
@@ -1101,8 +1101,8 @@
use_panels = util.string_as_bool( params.get( 'use_panels', False ) )
ldda = trans.sa_session.query( trans.app.model.LibraryDatasetDatasetAssociation ).get( trans.security.decode_id( id ) )
if not ldda.dataset:
- msg = 'Invalid LibraryDatasetDatasetAssociation id %s received for file download' % str( id )
- messagetype = 'error'
+ message = 'Invalid LibraryDatasetDatasetAssociation id %s received for file download' % str( id )
+ status = 'error'
else:
composite_extensions = trans.app.datatypes_registry.get_composite_extensions( )
ext = ldda.extension
@@ -1123,33 +1123,33 @@
try:
return open( ldda.file_name )
except:
- msg = 'This dataset contains no content'
+ message = 'This dataset contains no content'
return trans.response.send_redirect( web.url_for( controller='library_common',
action='browse_library',
cntrller=cntrller,
use_panels=use_panels,
id=library_id,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='error' ) )
+ message=util.sanitize_text( message ),
+ status='error' ) )
@web.expose
def library_dataset_info( self, trans, cntrller, id, library_id, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
show_deleted = util.string_as_bool( params.get( 'show_deleted', False ) )
use_panels = util.string_as_bool( params.get( 'use_panels', False ) )
library_dataset = trans.sa_session.query( trans.app.model.LibraryDataset ).get( trans.security.decode_id( id ) )
if not library_dataset:
- msg = "Invalid library dataset specified, id: %s" %str( id )
+ message = "Invalid library dataset specified, id: %s" %str( id )
return trans.response.send_redirect( web.url_for( controller='library_common',
action='browse_library',
cntrller=cntrller,
use_panels=use_panels,
id=library_id,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='error' ) )
+ message=util.sanitize_text( message ),
+ status='error' ) )
current_user_roles = trans.get_current_user_roles()
# See if we have any associated templates
widgets = []
@@ -1163,18 +1163,18 @@
new_name = util.restore_text( params.get( 'name', '' ) )
new_info = util.restore_text( params.get( 'info', '' ) )
if not new_name:
- msg = 'Enter a valid name'
- messagetype = 'error'
+ message = 'Enter a valid name'
+ status = 'error'
else:
library_dataset.name = new_name
library_dataset.info = new_info
trans.sa_session.add( library_dataset )
trans.sa_session.flush()
- msg = "The information has been updated."
- messagetype = 'done'
+ message = "The information has been updated."
+ status = 'done'
else:
- msg = "You are not authorized to change the attributes of this dataset"
- messagetype = "error"
+ message = "You are not authorized to change the attributes of this dataset"
+ status = "error"
return trans.fill_template( '/library/common/library_dataset_info.mako',
cntrller=cntrller,
use_panels=use_panels,
@@ -1185,26 +1185,26 @@
inherited=inherited,
widgets=widgets,
show_deleted=show_deleted,
- msg=msg,
- messagetype=messagetype )
+ message=message,
+ status=status )
@web.expose
def library_dataset_permissions( self, trans, cntrller, id, library_id, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
show_deleted = util.string_as_bool( params.get( 'show_deleted', False ) )
use_panels = util.string_as_bool( params.get( 'use_panels', False ) )
library_dataset = trans.sa_session.query( trans.app.model.LibraryDataset ).get( id )
if not library_dataset:
- msg = "Invalid library dataset specified, id: %s" %str( id )
+ message = "Invalid library dataset specified, id: %s" %str( id )
return trans.response.send_redirect( web.url_for( controller='library_common',
action='browse_library',
cntrller=cntrller,
use_panels=use_panels,
id=library_id,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='error' ) )
+ message=util.sanitize_text( message ),
+ status='error' ) )
current_user_roles = trans.get_current_user_roles()
if params.get( 'update_roles_button', False ):
if cntrller == 'library_admin' or trans.app.security_agent.can_manage_library_item( current_user_roles, library_dataset ):
@@ -1223,11 +1223,11 @@
# Set the LIBRARY permissions on the LibraryDatasetDatasetAssociation
trans.app.security_agent.set_all_library_permissions( library_dataset.library_dataset_dataset_association, permissions )
trans.sa_session.refresh( library_dataset.library_dataset_dataset_association )
- msg = 'Permissions and roles have been updated for library dataset %s' % library_dataset.name
- messagetype = 'done'
+ message = 'Permissions and roles have been updated for library dataset %s' % library_dataset.name
+ status = 'done'
else:
- msg = "You are not authorized to managed the permissions of this dataset"
- messagetype = "error"
+ message = "You are not authorized to managed the permissions of this dataset"
+ status = "error"
library = trans.sa_session.query( trans.app.model.Library ).get( trans.security.decode_id( library_id ) )
roles = trans.app.security_agent.get_legitimate_roles( trans, library, cntrller )
return trans.fill_template( '/library/common/library_dataset_permissions.mako',
@@ -1238,53 +1238,53 @@
roles=roles,
current_user_roles=current_user_roles,
show_deleted=show_deleted,
- msg=msg,
- messagetype=messagetype )
+ message=message,
+ status=status )
@web.expose
def act_on_multiple_datasets( self, trans, cntrller, library_id, ldda_ids='', **kwd ):
# Perform an action on a list of library datasets.
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
show_deleted = util.string_as_bool( params.get( 'show_deleted', False ) )
use_panels = util.string_as_bool( params.get( 'use_panels', False ) )
action = params.get( 'do_action', None )
if not ldda_ids:
- msg = "You must select at least one dataset"
- messagetype = 'error'
+ message = "You must select at least one dataset"
+ status = 'error'
elif not action:
- msg = "You must select an action to perform on selected datasets"
- messagetype = 'error'
+ message = "You must select an action to perform on selected datasets"
+ status = 'error'
else:
ldda_ids = util.listify( ldda_ids )
if action == 'import_to_history' or action == 'add':
history = trans.get_history()
if history is None:
# Must be a bot sending a request without having a history.
- msg = "You do not have a current history"
+ message = "You do not have a current history"
return trans.response.send_redirect( web.url_for( controller='library_common',
action='browse_library',
cntrller=cntrller,
use_panels=use_panels,
id=library_id,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='error' ) )
+ message=util.sanitize_text( message ),
+ status='error' ) )
total_imported_lddas = 0
- msg = ''
- messagetype = 'done'
+ message = ''
+ status = 'done'
for ldda_id in ldda_ids:
ldda = trans.sa_session.query( trans.app.model.LibraryDatasetDatasetAssociation ).get( trans.security.decode_id( ldda_id ) )
if ldda.dataset.state in [ 'new', 'upload', 'queued', 'running', 'empty', 'discarded' ]:
- msg += "Cannot import dataset (%s) since it's state is (%s). " % ( ldda.name, ldda.dataset.state )
- messagetype = 'error'
+ message += "Cannot import dataset (%s) since it's state is (%s). " % ( ldda.name, ldda.dataset.state )
+ status = 'error'
elif ldda.dataset.state in [ 'ok', 'error' ]:
hda = ldda.to_history_dataset_association( target_history=history, add_to_history=True )
total_imported_lddas += 1
if total_imported_lddas:
trans.sa_session.add( history )
trans.sa_session.flush()
- msg += "%i dataset(s) have been imported into your history. " % total_imported_lddas
+ message += "%i dataset(s) have been imported into your history. " % total_imported_lddas
elif action == 'manage_permissions':
# We need the folder containing the LibraryDatasetDatasetAssociation(s)
ldda = trans.sa_session.query( trans.app.model.LibraryDatasetDatasetAssociation ).get( trans.security.decode_id( ldda_ids[0] ) )
@@ -1296,8 +1296,8 @@
folder_id=trans.security.encode_id( ldda.library_dataset.folder.id ),
id=",".join( ldda_ids ),
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype=messagetype ) )
+ message=util.sanitize_text( message ),
+ status=status ) )
elif action == 'delete':
for ldda_id in ldda_ids:
ldda = trans.sa_session.query( trans.app.model.LibraryDatasetDatasetAssociation ).get( trans.security.decode_id( ldda_id ) )
@@ -1307,7 +1307,7 @@
ld.deleted = True
trans.sa_session.add( ld )
trans.sa_session.flush()
- msg = "The selected datasets have been removed from this data library"
+ message = "The selected datasets have been removed from this data library"
elif action in ['zip','tgz','tbz']:
error = False
killme = string.punctuation + string.whitespace
@@ -1332,13 +1332,13 @@
except (OSError, zipfile.BadZipFile):
error = True
log.exception( "Unable to create archive for download" )
- msg = "Unable to create archive for download, please report this error"
- messagetype = 'error'
+ message = "Unable to create archive for download, please report this error"
+ status = 'error'
except:
error = True
log.exception( "Unexpected error %s in create archive for download" % sys.exc_info()[0])
- msg = "Unable to create archive for download, please report - %s" % sys.exc_info()[0]
- messagetype = 'error'
+ message = "Unable to create archive for download, please report - %s" % sys.exc_info()[0]
+ status = 'error'
if not error:
composite_extensions = trans.app.datatypes_registry.get_composite_extensions( )
seen = []
@@ -1374,8 +1374,8 @@
except IOError:
error = True
log.exception( "Unable to add composite parent %s to temporary library download archive" % ldda.dataset.file_name)
- msg = "Unable to create archive for download, please report this error"
- messagetype = 'error'
+ message = "Unable to create archive for download, please report this error"
+ status = 'error'
continue
flist = glob.glob(os.path.join(ldda.dataset.extra_files_path,'*.*')) # glob returns full paths
for fpath in flist:
@@ -1387,8 +1387,8 @@
except IOError:
error = True
log.exception( "Unable to add %s to temporary library download archive %s" % (fname,outfname))
- msg = "Unable to create archive for download, please report this error"
- messagetype = 'error'
+ message = "Unable to create archive for download, please report this error"
+ status = 'error'
continue
else: # simple case
try:
@@ -1396,8 +1396,8 @@
except IOError:
error = True
log.exception( "Unable to write %s to temporary library download archive" % ldda.dataset.file_name)
- msg = "Unable to create archive for download, please report this error"
- messagetype = 'error'
+ message = "Unable to create archive for download, please report this error"
+ status = 'error'
if not error:
if action == 'zip':
archive.close()
@@ -1409,8 +1409,8 @@
except OSError:
error = True
log.exception( "Unable to remove temporary library download archive and directory" )
- msg = "Unable to create archive for download, please report this error"
- messagetype = 'error'
+ message = "Unable to create archive for download, please report this error"
+ status = 'error'
if not error:
trans.response.set_content_type( "application/x-zip-compressed" )
trans.response.headers[ "Content-Disposition" ] = "attachment; filename=%s.%s" % (outfname,outext)
@@ -1422,7 +1422,7 @@
archive.wsgi_headeritems = trans.response.wsgi_headeritems()
return archive.stream
else: # unknown action
- msg = '### unknown action = %s in act_on_multiple_datasets' % action
+ message = '### unknown action = %s in act_on_multiple_datasets' % action
return trans.response.send_redirect( web.url_for( controller='library_common',
action='browse_library',
@@ -1430,8 +1430,8 @@
use_panels=use_panels,
id=library_id,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype=messagetype ) )
+ message=util.sanitize_text( message ),
+ status=status ) )
def get_item_and_stuff( self, trans, item_type, library_id, folder_id, ldda_id ):
# Return an item, description, action and an id based on the item_type.
if item_type == 'library':
@@ -1450,14 +1450,14 @@
action = 'ldda_edit_info'
id = ldda_id
else:
- msg = "Invalid library item type ( %s )" % str( item_type )
+ message = "Invalid library item type ( %s )" % str( item_type )
return trans.response.send_redirect( web.url_for( controller='library_common',
action='browse_library',
cntrller=cntrller,
id=library_id,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='error' ) )
+ message=util.sanitize_text( message ),
+ status='error' ) )
return item, item_desc, action, id
@web.expose
def add_template( self, trans, cntrller, item_type, library_id, folder_id=None, ldda_id=None, **kwd ):
@@ -1466,19 +1466,19 @@
filter=dict( deleted=False ),
form_type=trans.app.model.FormDefinition.types.LIBRARY_INFO_TEMPLATE )
if not forms:
- msg = "There are no forms on which to base the template, so create a form and then add the template."
+ message = "There are no forms on which to base the template, so create a form and then add the template."
trans.response.send_redirect( web.url_for( controller='forms',
action='new',
- msg=msg,
- messagetype='done',
+ message=message,
+ status='done',
form_type=trans.app.model.FormDefinition.types.LIBRARY_INFO_TEMPLATE ) )
else:
params = util.Params( kwd )
show_deleted = util.string_as_bool( params.get( 'show_deleted', False ) )
use_panels = util.string_as_bool( params.get( 'use_panels', False ) )
- msg = util.restore_text( params.get( 'msg', '' ) )
+ message = util.restore_text( params.get( 'message', '' ) )
action = ''
- messagetype = params.get( 'messagetype', 'done' )
+ status = params.get( 'status', 'done' )
item, item_desc, action, id = self.get_item_and_stuff( trans, item_type, library_id, folder_id, ldda_id )
# If the inheritable checkbox is checked, the param will be in the request
inheritable = CheckboxField.is_checked( params.get( 'inheritable', '' ) )
@@ -1497,7 +1497,7 @@
assoc = trans.app.model.LibraryDatasetDatasetInfoAssociation( item, form, form_values )
trans.sa_session.add( assoc )
trans.sa_session.flush()
- msg = 'A template based on the form "%s" has been added to this %s.' % ( form.name, item_desc )
+ message = 'A template based on the form "%s" has been added to this %s.' % ( form.name, item_desc )
trans.response.send_redirect( web.url_for( controller='library_common',
action=action,
cntrller=cntrller,
@@ -1506,11 +1506,11 @@
folder_id=folder_id,
id=id,
show_deleted=show_deleted,
- msg=msg,
- messagetype='done' ) )
+ message=message,
+ status='done' ) )
else:
- msg = "Select a form on which to base the template."
- messagetype = "error"
+ message = "Select a form on which to base the template."
+ status = "error"
def generate_template_stuff( trans, forms, form_id ):
# Returns the following:
# - a list of template ids
@@ -1555,22 +1555,22 @@
template_select_list=template_select_list,
inheritable_checked=inheritable,
show_deleted=show_deleted,
- msg=msg,
- messagetype=messagetype )
+ message=message,
+ status=status )
@web.expose
def manage_template_inheritance( self, trans, cntrller, item_type, library_id, folder_id=None, ldda_id=None, **kwd ):
params = util.Params( kwd )
show_deleted = util.string_as_bool( params.get( 'show_deleted', False ) )
use_panels = util.string_as_bool( params.get( 'use_panels', False ) )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
item, item_desc, action, id = self.get_item_and_stuff( trans, item_type, library_id, folder_id, ldda_id )
info_association, inherited = item.get_info_association( restrict=True )
if info_association:
if info_association.inheritable:
- msg = "The template for this %s will no longer be inherited to contained folders and datasets." % item_desc
+ message = "The template for this %s will no longer be inherited to contained folders and datasets." % item_desc
else:
- msg = "The template for this %s will now be inherited to contained folders and datasets." % item_desc
+ message = "The template for this %s will now be inherited to contained folders and datasets." % item_desc
info_association.inheritable = not( info_association.inheritable )
trans.sa_session.add( info_association )
trans.sa_session.flush()
@@ -1582,16 +1582,16 @@
folder_id=folder_id,
id=id,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='done' ) )
+ message=util.sanitize_text( message ),
+ status='done' ) )
@web.expose
def edit_template( self, trans, cntrller, item_type, library_id, folder_id=None, ldda_id=None, edited=False, **kwd ):
# Edit the template itself, keeping existing field contents, if any.
params = util.Params( kwd )
show_deleted = util.string_as_bool( params.get( 'show_deleted', False ) )
use_panels = util.string_as_bool( params.get( 'use_panels', False ) )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
item, item_desc, action, id = self.get_item_and_stuff( trans, item_type, library_id, folder_id, ldda_id )
# An info_association must exist at this point
info_association, inherited = item.get_info_association( restrict=True )
@@ -1605,7 +1605,7 @@
info_association.template = fdc.latest_form
trans.sa_session.add( info_association )
trans.sa_session.flush()
- msg = "The template for this %s has been updated with your changes." % item_desc
+ message = "The template for this %s has been updated with your changes." % item_desc
return trans.response.send_redirect( web.url_for( controller='library_common',
action=action,
cntrller=cntrller,
@@ -1614,8 +1614,8 @@
folder_id=folder_id,
id=id,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='done' ) )
+ message=util.sanitize_text( message ),
+ status='done' ) )
# "template" is a FormDefinition, so since we're changing it, we need to use the latest version of it.
vars = dict( id=trans.security.encode_id( template.form_definition_current_id ),
response_redirect=web.url_for( controller='library_common',
@@ -1634,8 +1634,8 @@
params = util.Params( kwd )
show_deleted = util.string_as_bool( params.get( 'show_deleted', False ) )
use_panels = util.string_as_bool( params.get( 'use_panels', False ) )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
item, item_desc, action, id = self.get_item_and_stuff( trans, item_type, library_id, folder_id, ldda_id )
# Save updated template field contents
field_contents = []
@@ -1681,7 +1681,7 @@
info_association = trans.app.model.LibraryDatasetDatasetInfoAssociation( item, template, form_values )
trans.sa_session.add( info_association )
trans.sa_session.flush()
- msg = 'The information has been updated.'
+ message = 'The information has been updated.'
return trans.response.send_redirect( web.url_for( controller='library_common',
action=action,
cntrller=cntrller,
@@ -1690,8 +1690,8 @@
folder_id=folder_id,
id=id,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype='done' ) )
+ message=util.sanitize_text( message ),
+ status='done' ) )
@web.expose
def delete_template( self, trans, cntrller, item_type, library_id, id=None, folder_id=None, ldda_id=None, **kwd ):
# Only adding a new template to a library or folder is currently allowed. Editing an existing template is
@@ -1699,19 +1699,19 @@
params = util.Params( kwd )
show_deleted = util.string_as_bool( params.get( 'show_deleted', False ) )
use_panels = util.string_as_bool( params.get( 'use_panels', False ) )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
item, item_desc, action, id = self.get_item_and_stuff( trans, item_type, library_id, folder_id, ldda_id )
info_association, inherited = item.get_info_association()
if not info_association:
- msg = "There is no template for this %s" % item_type
- messagetype = 'error'
+ message = "There is no template for this %s" % item_type
+ status = 'error'
else:
info_association.deleted = True
trans.sa_session.add( info_association )
trans.sa_session.flush()
- msg = 'The template for this %s has been deleted.' % item_type
- messagetype = 'done'
+ message = 'The template for this %s has been deleted.' % item_type
+ status = 'done'
return trans.response.send_redirect( web.url_for( controller='library_common',
action=action,
cntrller=cntrller,
@@ -1720,8 +1720,8 @@
folder_id=folder_id,
id=id,
show_deleted=show_deleted,
- msg=util.sanitize_text( msg ),
- messagetype=messagetype ) )
+ message=util.sanitize_text( message ),
+ status=status ) )
# ---- Utility methods -------------------------------------------------------
diff -r 43b7a7f4bff5 -r f2b6d4f3189c lib/galaxy/web/controllers/requests.py
--- a/lib/galaxy/web/controllers/requests.py Fri Apr 02 15:09:29 2010 -0400
+++ b/lib/galaxy/web/controllers/requests.py Fri Apr 02 16:06:43 2010 -0400
@@ -164,7 +164,7 @@
elif operation == "events":
return self.__request_events( trans, **kwd )
# if there are one or more requests that has been rejected by the admin
- # recently, then show a msg as a reminder to the user
+ # recently, then show a message as a reminder to the user
rlist = trans.sa_session.query( trans.app.model.Request ) \
.filter( trans.app.model.Request.table.c.deleted==False ) \
.filter( trans.app.model.Request.table.c.user_id==trans.user.id )
@@ -182,12 +182,12 @@
try:
request = trans.sa_session.query( trans.app.model.Request ).get( trans.security.decode_id(kwd['id']) )
except:
- msg = "Invalid request ID"
- log.warn( msg )
+ message = "Invalid request ID"
+ log.warn( message )
return trans.response.send_redirect( web.url_for( controller='requests',
action='list',
status='error',
- message=msg,
+ message=message,
**kwd) )
events_list = []
all_events = request.events
@@ -238,8 +238,8 @@
return request_details
def __show_request(self, trans, **kwd):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
add_sample = params.get('add_sample', False)
try:
request = trans.sa_session.query( trans.app.model.Request ).get( trans.security.decode_id(kwd['id']) )
@@ -279,7 +279,7 @@
current_samples=current_samples,
sample_copy=self.__copy_sample(current_samples),
details='hide', edit_mode=util.restore_text( params.get( 'edit_mode', 'False' ) ),
- msg=msg, messagetype=messagetype )
+ message=message, status=status )
def __library_widgets(self, trans, user, sample_index, libraries, sample=None, **kwd):
'''
This method creates the data library & folder selectbox for creating &
@@ -424,8 +424,8 @@
@web.require_login( "create/submit sequencing requests" )
def show_request(self, trans, **kwd):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
try:
request = trans.sa_session.query( trans.app.model.Request ).get( int( params.get( 'request_id', None ) ) )
except:
@@ -503,28 +503,28 @@
edit_mode=edit_mode)
elif params.get('save_samples_button', False) == 'Save':
# check for duplicate sample names
- msg = ''
+ message = ''
for index in range(len(current_samples)-len(request.samples)):
sample_index = index + len(request.samples)
sample_name = current_samples[sample_index]['name']
if not sample_name.strip():
- msg = 'Please enter the name of sample number %i' % sample_index
+ message = 'Please enter the name of sample number %i' % sample_index
break
count = 0
for i in range(len(current_samples)):
if sample_name == current_samples[i]['name']:
count = count + 1
if count > 1:
- msg = "This request has <b>%i</b> samples with the name <b>%s</b>.\nSamples belonging to a request must have unique names." % (count, sample_name)
+ message = "This request has <b>%i</b> samples with the name <b>%s</b>.\nSamples belonging to a request must have unique names." % (count, sample_name)
break
- if msg:
+ if message:
return trans.fill_template( '/requests/show_request.mako',
request=request,
request_details=self.request_details(trans, request.id),
current_samples = current_samples,
sample_copy=self.__copy_sample(current_samples),
details=details, edit_mode=edit_mode,
- messagetype='error', msg=msg)
+ status='error', message=message)
# save all the new/unsaved samples entered by the user
if edit_mode == 'False':
for index in range(len(current_samples)-len(request.samples)):
@@ -542,18 +542,18 @@
trans.sa_session.add( s )
trans.sa_session.flush()
else:
- messagetype = 'done'
- msg = 'Changes made to the sample(s) are saved. '
+ status = 'done'
+ message = 'Changes made to the sample(s) are saved. '
for sample_index in range(len(current_samples)):
sample = request.samples[sample_index]
sample.name = current_samples[sample_index]['name']
sample.library = current_samples[sample_index]['library']
sample.folder = current_samples[sample_index]['folder']
if request.submitted():
- bc_msg = self.__validate_barcode(trans, sample, current_samples[sample_index]['barcode'])
- if bc_msg:
- messagetype = 'error'
- msg += bc_msg
+ bc_message = self.__validate_barcode(trans, sample, current_samples[sample_index]['barcode'])
+ if bc_message:
+ status = 'error'
+ message += bc_message
else:
sample.bar_code = current_samples[sample_index]['barcode']
trans.sa_session.add( sample )
@@ -566,8 +566,8 @@
action='list',
operation='show_request',
id=trans.security.encode_id(request.id),
- messagetype=messagetype,
- msg=msg ))
+ status=status,
+ message=message ))
elif params.get('edit_samples_button', False) == 'Edit samples':
edit_mode = 'True'
return trans.fill_template( '/requests/show_request.mako',
@@ -589,15 +589,15 @@
current_samples=current_samples,
sample_copy=self.__copy_sample(current_samples),
details=details, libraries=libraries,
- edit_mode=edit_mode, messagetype=messagetype, msg=msg)
+ edit_mode=edit_mode, status=status, message=message)
@web.expose
@web.require_login( "create/submit sequencing requests" )
def delete_sample(self, trans, **kwd):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
request = trans.sa_session.query( trans.app.model.Request ).get( int( params.get( 'request_id', 0 ) ) )
current_samples, details, edit_mode = self.__update_samples( request, **kwd )
sample_index = int(params.get('sample_id', 0))
@@ -639,34 +639,34 @@
@web.require_login( "create/submit sequencing requests" )
def new(self, trans, **kwd):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
if params.get('select_request_type', False) == 'True':
return trans.fill_template( '/requests/new_request.mako',
select_request_type=self.__select_request_type(trans, 'none'),
widgets=[],
- msg=msg,
- messagetype=messagetype)
+ message=message,
+ status=status)
elif params.get('create', False) == 'True':
if params.get('create_request_button', False) == 'Save' \
or params.get('create_request_samples_button', False) == 'Add samples':
request_type = trans.sa_session.query( trans.app.model.RequestType ).get( int( params.select_request_type ) )
if not util.restore_text(params.get('name', '')):
- msg = 'Please enter the <b>Name</b> of the request'
+ message = 'Please enter the <b>Name</b> of the request'
kwd['create'] = 'True'
- kwd['messagetype'] = 'error'
- kwd['msg'] = msg
+ kwd['status'] = 'error'
+ kwd['message'] = message
kwd['create_request_button'] = None
kwd['create_request_samples_button'] = None
return trans.response.send_redirect( web.url_for( controller='requests',
action='new',
**kwd) )
request = self.__save_request(trans, None, **kwd)
- msg = 'The new request named <b>%s</b> has been created' % request.name
+ message = 'The new request named <b>%s</b> has been created' % request.name
if params.get('create_request_button', False) == 'Save':
return trans.response.send_redirect( web.url_for( controller='requests',
action='list',
- message=msg ,
+ message=message ,
status='done') )
elif params.get('create_request_samples_button', False) == 'Add samples':
new_kwd = {}
@@ -675,8 +675,8 @@
new_kwd['add_sample'] = True
return trans.response.send_redirect( web.url_for( controller='requests',
action='list',
- msg=msg ,
- messagetype='done',
+ message=message ,
+ status='done',
**new_kwd) )
else:
return self.__show_request_form(trans, **kwd)
@@ -684,16 +684,16 @@
return self.__show_request_form(trans, **kwd)
def __show_request_form(self, trans, **kwd):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
try:
request_type = trans.sa_session.query( trans.app.model.RequestType ).get( int( params.select_request_type ) )
except:
return trans.fill_template( '/requests/new_request.mako',
select_request_type=self.__select_request_type(trans, 'none'),
widgets=[],
- msg=msg,
- messagetype=messagetype)
+ message=message,
+ status=status)
form_values = None
select_request_type = self.__select_request_type(trans, request_type.id)
# list of widgets to be rendered on the request form
@@ -711,8 +711,8 @@
select_request_type=select_request_type,
request_type=request_type,
widgets=widgets,
- msg=msg,
- messagetype=messagetype)
+ message=message,
+ status=status)
def __validate(self, trans, request):
'''
Validates the request entered by the user
@@ -723,14 +723,14 @@
if field['required'] == 'required' and request.values.content[index] in ['', None]:
empty_fields.append(field['label'])
if empty_fields:
- msg = 'Fill the following fields of the request <b>%s</b> before submitting<br/>' % request.name
+ message = 'Fill the following fields of the request <b>%s</b> before submitting<br/>' % request.name
for ef in empty_fields:
- msg = msg + '<b>' +ef + '</b><br/>'
+ message = message + '<b>' +ef + '</b><br/>'
return trans.response.send_redirect( web.url_for( controller='requests',
action='list',
operation='edit',
- messagetype = 'error',
- msg=msg,
+ status = 'error',
+ message=message,
id=trans.security.encode_id(request.id) ))
# now check the required fields of all the samples of this request
for s in request.samples:
@@ -738,14 +738,14 @@
if field['required'] == 'required' and s.values.content[index] in ['', None]:
empty_fields.append((s.name, field['label']))
if empty_fields:
- msg = 'Fill the following fields of the request <b>%s</b> before submitting<br/>' % request.name
+ message = 'Fill the following fields of the request <b>%s</b> before submitting<br/>' % request.name
for sname, ef in empty_fields:
- msg = msg + '<b>%s</b> field of sample <b>%s</b><br/>' % (ef, sname)
+ message = message + '<b>%s</b> field of sample <b>%s</b><br/>' % (ef, sname)
return trans.response.send_redirect( web.url_for( controller='requests',
action='list',
operation='show_request',
- messagetype = 'error',
- msg=msg,
+ status = 'error',
+ message=message,
id=trans.security.encode_id(request.id) ))
def __save_request(self, trans, request=None, **kwd):
'''
@@ -823,8 +823,8 @@
@web.require_login( "create/submit sequencing requests" )
def edit(self, trans, **kwd):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
try:
request = trans.sa_session.query( trans.app.model.Request ).get( int( params.get( 'request_id', None ) ) )
except:
@@ -839,19 +839,19 @@
or params.get('edit_samples_button', False) == 'Edit samples':
request_type = trans.sa_session.query( trans.app.model.RequestType ).get( int( params.select_request_type ) )
if not util.restore_text(params.get('name', '')):
- msg = 'Please enter the <b>Name</b> of the request'
- kwd['messagetype'] = 'error'
- kwd['msg'] = msg
+ message = 'Please enter the <b>Name</b> of the request'
+ kwd['status'] = 'error'
+ kwd['message'] = message
kwd['show'] = 'True'
return trans.response.send_redirect( web.url_for( controller='requests',
action='edit',
**kwd) )
request = self.__save_request(trans, request, **kwd)
- msg = 'The changes made to the request named %s has been saved' % request.name
+ message = 'The changes made to the request named %s has been saved' % request.name
if params.get('save_changes_request_button', False) == 'Save changes':
return trans.response.send_redirect( web.url_for( controller='requests',
action='list',
- message=msg ,
+ message=message ,
status='done') )
elif params.get('edit_samples_button', False) == 'Edit samples':
new_kwd = {}
@@ -859,8 +859,8 @@
new_kwd['edit_samples_button'] = 'Edit samples'
return trans.response.send_redirect( web.url_for( controller='requests',
action='show_request',
- msg=msg ,
- messagetype='done',
+ message=message ,
+ status='done',
**new_kwd) )
elif params.get('refresh', False) == 'true':
return self.__edit_request(trans, id=trans.security.encode_id(request.id), **kwd)
@@ -869,15 +869,15 @@
try:
request = trans.sa_session.query( trans.app.model.Request ).get( trans.security.decode_id(kwd['id']) )
except:
- msg = "Invalid request ID"
- log.warn( msg )
+ message = "Invalid request ID"
+ log.warn( message )
return trans.response.send_redirect( web.url_for( controller='requests',
action='list',
status='error',
- message=msg) )
+ message=message) )
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
select_request_type = self.__select_request_type(trans, request.type.id)
# list of widgets to be rendered on the request form
widgets = []
@@ -901,8 +901,8 @@
request_type=request.type,
request=request,
widgets=widgets,
- msg=msg,
- messagetype=messagetype)
+ message=message,
+ status=status)
return self.__show_request_form(trans)
def __delete_request(self, trans, **kwd):
id_list = util.listify( kwd['id'] )
@@ -911,12 +911,12 @@
try:
request = trans.sa_session.query( trans.app.model.Request ).get( trans.security.decode_id(id) )
except:
- msg = "Invalid request ID"
- log.warn( msg )
+ message = "Invalid request ID"
+ log.warn( message )
return trans.response.send_redirect( web.url_for( controller='requests',
action='list',
status='error',
- message=msg,
+ message=message,
**kwd) )
# a request cannot be deleted once its submitted
if not request.new():
@@ -926,28 +926,28 @@
trans.sa_session.add( request )
trans.sa_session.flush()
if not len(delete_failed):
- msg = '%i request(s) has been deleted.' % len(id_list)
+ message = '%i request(s) has been deleted.' % len(id_list)
status = 'done'
else:
- msg = '%i request(s) has been deleted. %i request %s could not be deleted as they have been submitted.' % (len(id_list)-len(delete_failed),
+ message = '%i request(s) has been deleted. %i request %s could not be deleted as they have been submitted.' % (len(id_list)-len(delete_failed),
len(delete_failed), str(delete_failed))
status = 'warning'
return trans.response.send_redirect( web.url_for( controller='requests',
action='list',
status=status,
- message=msg) )
+ message=message) )
def __undelete_request(self, trans, **kwd):
id_list = util.listify( kwd['id'] )
for id in id_list:
try:
request = trans.sa_session.query( trans.app.model.Request ).get( trans.security.decode_id(id) )
except:
- msg = "Invalid request ID"
- log.warn( msg )
+ message = "Invalid request ID"
+ log.warn( message )
return trans.response.send_redirect( web.url_for( controller='requests',
action='list',
status='error',
- message=msg,
+ message=message,
**kwd) )
request.deleted = False
trans.sa_session.add( request )
@@ -960,12 +960,12 @@
try:
request = trans.sa_session.query( trans.app.model.Request ).get( trans.security.decode_id(kwd['id']) )
except:
- msg = "Invalid request ID"
- log.warn( msg )
+ message = "Invalid request ID"
+ log.warn( message )
return trans.response.send_redirect( web.url_for( controller='requests',
action='list',
status='error',
- message=msg,
+ message=message,
**kwd) )
# check if all the required request and its sample fields have been filled
self.__validate(trans, request)
@@ -994,11 +994,11 @@
sample_id = int(params.get('sample_id', False))
sample = trans.sa_session.query( trans.app.model.Sample ).get( sample_id )
except:
- msg = "Invalid sample ID"
+ message = "Invalid sample ID"
return trans.response.send_redirect( web.url_for( controller='requests',
action='list',
status='error',
- message=msg,
+ message=message,
**kwd) )
events_list = []
all_events = sample.events
@@ -1015,8 +1015,8 @@
@web.require_login( "create/submit sequencing requests" )
def show_datatx_page( self, trans, **kwd ):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
try:
sample = trans.sa_session.query( trans.app.model.Sample ).get( trans.security.decode_id( kwd['sample_id'] ) )
except:
diff -r 43b7a7f4bff5 -r f2b6d4f3189c lib/galaxy/web/controllers/requests_admin.py
--- a/lib/galaxy/web/controllers/requests_admin.py Fri Apr 02 15:09:29 2010 -0400
+++ b/lib/galaxy/web/controllers/requests_admin.py Fri Apr 02 16:06:43 2010 -0400
@@ -289,8 +289,8 @@
@web.require_admin
def edit(self, trans, **kwd):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
try:
request = trans.sa_session.query( trans.app.model.Request ).get( int( params.get( 'request_id', None ) ) )
except:
@@ -305,19 +305,19 @@
or params.get('edit_samples_button', False) == 'Edit samples':
request_type = trans.sa_session.query( trans.app.model.RequestType ).get( int( params.select_request_type ) )
if not util.restore_text(params.get('name', '')):
- msg = 'Please enter the <b>Name</b> of the request'
- kwd['messagetype'] = 'error'
- kwd['msg'] = msg
+ message = 'Please enter the <b>Name</b> of the request'
+ kwd['status'] = 'error'
+ kwd['message'] = message
kwd['show'] = 'True'
return trans.response.send_redirect( web.url_for( controller='requests_admin',
action='edit',
**kwd) )
request = self.__save_request(trans, request, **kwd)
- msg = 'The changes made to the request named %s has been saved' % request.name
+ message = 'The changes made to the request named %s has been saved' % request.name
if params.get('save_changes_request_button', False) == 'Save changes':
return trans.response.send_redirect( web.url_for( controller='requests_admin',
action='list',
- message=msg ,
+ message=message ,
status='done') )
elif params.get('edit_samples_button', False) == 'Edit samples':
new_kwd = {}
@@ -325,8 +325,8 @@
new_kwd['edit_samples_button'] = 'Edit samples'
return trans.response.send_redirect( web.url_for( controller='requests_admin',
action='show_request',
- msg=msg ,
- messagetype='done',
+ message=message ,
+ status='done',
**new_kwd) )
elif params.get('refresh', False) == 'true':
return self.__edit_request(trans, id=trans.security.encode_id(request.id), **kwd)
@@ -335,15 +335,15 @@
try:
request = trans.sa_session.query( trans.app.model.Request ).get( trans.security.decode_id(kwd['id']) )
except:
- msg = "Invalid request ID"
- log.warn( msg )
+ message = "Invalid request ID"
+ log.warn( message )
return trans.response.send_redirect( web.url_for( controller='requests_admin',
action='list',
status='error',
- message=msg) )
+ message=message) )
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
select_request_type = self.__select_request_type(trans, request.type.id)
# list of widgets to be rendered on the request form
widgets = []
@@ -367,8 +367,8 @@
request_type=request.type,
request=request,
widgets=widgets,
- msg=msg,
- messagetype=messagetype)
+ message=message,
+ status=status)
return self.__show_request_form(trans)
def __delete_request(self, trans, **kwd):
id_list = util.listify( kwd['id'] )
@@ -376,34 +376,34 @@
try:
request = trans.sa_session.query( trans.app.model.Request ).get( trans.security.decode_id(id) )
except:
- msg = "Invalid request ID"
- log.warn( msg )
+ message = "Invalid request ID"
+ log.warn( message )
return trans.response.send_redirect( web.url_for( controller='requests_admin',
action='list',
status='error',
- message=msg,
+ message=message,
**kwd) )
request.deleted = True
trans.sa_session.add( request )
trans.sa_session.flush()
- msg = '%i request(s) has been deleted.' % len(id_list)
+ message = '%i request(s) has been deleted.' % len(id_list)
status = 'done'
return trans.response.send_redirect( web.url_for( controller='requests_admin',
action='list',
status=status,
- message=msg) )
+ message=message) )
def __undelete_request(self, trans, **kwd):
id_list = util.listify( kwd['id'] )
for id in id_list:
try:
request = trans.sa_session.query( trans.app.model.Request ).get( trans.security.decode_id(id) )
except:
- msg = "Invalid request ID"
- log.warn( msg )
+ message = "Invalid request ID"
+ log.warn( message )
return trans.response.send_redirect( web.url_for( controller='requests_admin',
action='list',
status='error',
- message=msg,
+ message=message,
**kwd) )
request.deleted = False
trans.sa_session.add( request )
@@ -416,20 +416,20 @@
try:
request = trans.sa_session.query( trans.app.model.Request ).get( trans.security.decode_id(kwd['id']) )
except:
- msg = "Invalid request ID"
- log.warn( msg )
+ message = "Invalid request ID"
+ log.warn( message )
return trans.response.send_redirect( web.url_for( controller='requests_admin',
action='list',
status='error',
- message=msg,
+ message=message,
**kwd) )
- msg = self.__validate(trans, request)
- if msg:
+ message = self.__validate(trans, request)
+ if message:
return trans.response.send_redirect( web.url_for( controller='requests_admin',
action='list',
operation='edit',
- messagetype = 'error',
- msg=msg,
+ status = 'error',
+ message=message,
id=trans.security.encode_id(request.id) ) )
# change the request state to 'Submitted'
if request.user.email is not trans.user:
@@ -456,12 +456,12 @@
try:
request = trans.sa_session.query( trans.app.model.Request ).get( trans.security.decode_id(kwd['id']) )
except:
- msg = "Invalid request ID"
- log.warn( msg )
+ message = "Invalid request ID"
+ log.warn( message )
return trans.response.send_redirect( web.url_for( controller='requests_admin',
action='list',
status='error',
- message=msg,
+ message=message,
**kwd) )
return trans.fill_template( '/admin/requests/reject.mako',
request=request)
@@ -477,18 +477,18 @@
try:
request = trans.sa_session.query( trans.app.model.Request ).get( trans.security.decode_id(kwd['id']) )
except:
- msg = "Invalid request ID"
- log.warn( msg )
+ message = "Invalid request ID"
+ log.warn( message )
return trans.response.send_redirect( web.url_for( controller='requests_admin',
action='list',
status='error',
- message=msg,
+ message=message,
**kwd) )
# validate
if not params.get('comment', ''):
return trans.fill_template( '/admin/requests/reject.mako',
- request=request, messagetype='error',
- msg='A comment is required for rejecting a request.')
+ request=request, status='error',
+ message='A comment is required for rejecting a request.')
# create an event with state 'Rejected' for this request
comments = util.restore_text( params.comment )
event = trans.app.model.RequestEvent(request, request.states.REJECTED, comments)
@@ -503,12 +503,12 @@
try:
request = trans.sa_session.query( trans.app.model.Request ).get( trans.security.decode_id(kwd['id']) )
except:
- msg = "Invalid request ID"
- log.warn( msg )
+ message = "Invalid request ID"
+ log.warn( message )
return trans.response.send_redirect( web.url_for( controller='requests_admin',
action='list',
status='error',
- message=msg,
+ message=message,
**kwd) )
events_list = []
all_events = request.events
@@ -547,35 +547,35 @@
@web.require_admin
def new(self, trans, **kwd):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
if params.get('select_request_type', False) == 'True':
return trans.fill_template( '/admin/requests/new_request.mako',
select_request_type=self.__select_request_type(trans, 'none'),
widgets=[],
- msg=msg,
- messagetype=messagetype)
+ message=message,
+ status=status)
elif params.get('create', False) == 'True':
if params.get('create_request_button', False) == 'Save' \
or params.get('create_request_samples_button', False) == 'Add samples':
request_type = trans.sa_session.query( trans.app.model.RequestType ).get( int( params.select_request_type ) )
if not util.restore_text(params.get('name', '')) \
or util.restore_text(params.get('select_user', '')) == unicode('none'):
- msg = 'Please enter the <b>Name</b> of the request and the <b>user</b> on behalf of whom this request will be submitted before saving this request'
+ message = 'Please enter the <b>Name</b> of the request and the <b>user</b> on behalf of whom this request will be submitted before saving this request'
kwd['create'] = 'True'
- kwd['messagetype'] = 'error'
- kwd['msg'] = msg
+ kwd['status'] = 'error'
+ kwd['message'] = message
kwd['create_request_button'] = None
kwd['create_request_samples_button'] = None
return trans.response.send_redirect( web.url_for( controller='requests_admin',
action='new',
**kwd) )
request = self.__save_request(trans, None, **kwd)
- msg = 'The new request named %s has been created' % request.name
+ message = 'The new request named %s has been created' % request.name
if params.get('create_request_button', False) == 'Save':
return trans.response.send_redirect( web.url_for( controller='requests_admin',
action='list',
- message=msg ,
+ message=message ,
status='done') )
elif params.get('create_request_samples_button', False) == 'Add samples':
new_kwd = {}
@@ -584,7 +584,7 @@
new_kwd['add_sample'] = True
return trans.response.send_redirect( web.url_for( controller='requests_admin',
action='list',
- message=msg ,
+ message=message ,
status='done',
**new_kwd) )
else:
@@ -593,16 +593,16 @@
return self.__show_request_form(trans, **kwd)
def __show_request_form(self, trans, **kwd):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
try:
request_type = trans.sa_session.query( trans.app.model.RequestType ).get( int( params.select_request_type ) )
except:
return trans.fill_template( '/admin/requests/new_request.mako',
select_request_type=self.__select_request_type(trans, 'none'),
widgets=[],
- msg=msg,
- messagetype=messagetype)
+ message=message,
+ status=status)
form_values = None
select_request_type = self.__select_request_type(trans, request_type.id)
# user
@@ -629,8 +629,8 @@
select_request_type=select_request_type,
request_type=request_type,
widgets=widgets,
- msg=msg,
- messagetype=messagetype)
+ message=message,
+ status=status)
def __select_user(self, trans, userid):
user_list = trans.sa_session.query( trans.app.model.User )\
.order_by( trans.app.model.User.email.asc() )
@@ -669,10 +669,10 @@
if field['required'] == 'required' and request.values.content[index] in ['', None]:
empty_fields.append(field['label'])
if empty_fields:
- msg = 'Fill the following fields of the request <b>%s</b> before submitting<br/>' % request.name
+ message = 'Fill the following fields of the request <b>%s</b> before submitting<br/>' % request.name
for ef in empty_fields:
- msg = msg + '<b>' +ef + '</b><br/>'
- return msg
+ message = message + '<b>' +ef + '</b><br/>'
+ return message
return None
def __save_request(self, trans, request=None, **kwd):
'''
@@ -746,8 +746,8 @@
#
def __show_request(self, trans, **kwd):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
add_sample = params.get('add_sample', False)
try:
request = trans.sa_session.query( trans.app.model.Request ).get( trans.security.decode_id(kwd['id']) )
@@ -787,7 +787,7 @@
current_samples=current_samples,
sample_copy=self.__copy_sample(current_samples),
details='hide', edit_mode=util.restore_text( params.get( 'edit_mode', 'False' ) ),
- msg=msg, messagetype=messagetype )
+ message=message, status=status )
def __library_widgets(self, trans, user, sample_index, libraries, sample=None, **kwd):
'''
This method creates the data library & folder selectbox for creating &
@@ -932,8 +932,8 @@
@web.require_login( "create/submit sequencing requests" )
def show_request(self, trans, **kwd):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
try:
request = trans.sa_session.query( trans.app.model.Request ).get( int( params.get( 'request_id', None ) ) )
except:
@@ -1010,28 +1010,28 @@
edit_mode=edit_mode)
elif params.get('save_samples_button', False) == 'Save':
# check for duplicate sample names
- msg = ''
+ message = ''
for index in range(len(current_samples)-len(request.samples)):
sample_index = index + len(request.samples)
sample_name = current_samples[sample_index]['name']
if not sample_name.strip():
- msg = 'Please enter the name of sample number %i' % sample_index
+ message = 'Please enter the name of sample number %i' % sample_index
break
count = 0
for i in range(len(current_samples)):
if sample_name == current_samples[i]['name']:
count = count + 1
if count > 1:
- msg = "This request has <b>%i</b> samples with the name <b>%s</b>.\nSamples belonging to a request must have unique names." % (count, sample_name)
+ message = "This request has <b>%i</b> samples with the name <b>%s</b>.\nSamples belonging to a request must have unique names." % (count, sample_name)
break
- if msg:
+ if message:
return trans.fill_template( '/admin/requests/show_request.mako',
request=request,
request_details=self.request_details(trans, request.id),
current_samples = current_samples,
sample_copy=self.__copy_sample(current_samples),
details=details, edit_mode=edit_mode,
- messagetype='error', msg=msg)
+ status='error', message=message)
# save all the new/unsaved samples entered by the user
if edit_mode == 'False':
for index in range(len(current_samples)-len(request.samples)):
@@ -1050,18 +1050,18 @@
trans.sa_session.flush()
else:
- messagetype = 'done'
- msg = 'Changes made to the sample(s) are saved. '
+ status = 'done'
+ message = 'Changes made to the sample(s) are saved. '
for sample_index in range(len(current_samples)):
sample = request.samples[sample_index]
sample.name = current_samples[sample_index]['name']
sample.library = current_samples[sample_index]['library']
sample.folder = current_samples[sample_index]['folder']
if request.submitted():
- bc_msg = self.__validate_barcode(trans, sample, current_samples[sample_index]['barcode'])
- if bc_msg:
- messagetype = 'error'
- msg += bc_msg
+ bc_message = self.__validate_barcode(trans, sample, current_samples[sample_index]['barcode'])
+ if bc_message:
+ status = 'error'
+ message += bc_message
else:
if not sample.bar_code:
# if this is a 'new' (still in its first state) sample
@@ -1083,8 +1083,8 @@
action='list',
operation='show_request',
id=trans.security.encode_id(request.id),
- messagetype=messagetype,
- msg=msg ))
+ status=status,
+ message=message ))
elif params.get('edit_samples_button', False) == 'Edit samples':
edit_mode = 'True'
return trans.fill_template( '/admin/requests/show_request.mako',
@@ -1106,15 +1106,15 @@
current_samples=current_samples,
sample_copy=self.__copy_sample(current_samples),
details=details, libraries=libraries,
- edit_mode=edit_mode, messagetype=messagetype, msg=msg)
+ edit_mode=edit_mode, status=status, message=message)
@web.expose
@web.require_login( "create/submit sequencing requests" )
def delete_sample(self, trans, **kwd):
params = util.Params( kwd )
- msg = util.restore_text( params.get( 'msg', '' ) )
- messagetype = params.get( 'messagetype', 'done' )
+ message = util.restore_text( params.get( 'message', '' ) )
+ status = params.get( 'status', 'done' )
request = trans.sa_session.query( trans.app.model.Request ).get( int( params.get( 'request_id', 0 ) ) )
current_samples, details, edit_mode, libraries = self.__update_samples( trans, request, **kwd )
sample_index = int(params.get('sample_id', 0))
@@ -1182,11 +1182,11 @@
the given sample is gobally unique. That is, barcodes must be unique
across requests in Galaxy LIMS
'''
- msg = ''
+ message = ''
for index in range(len(sample.request.samples)):
# check for empty bar code
if not barcode.strip():
- msg = 'Please fill the barcode for sample <b>%s</b>.' % sample.name
+ message = 'Please fill the barcode for sample <b>%s</b>.' % sample.name
break
# check all the saved bar codes
all_samples = trans.sa_session.query( trans.app.model.Sample )
@@ -1195,20 +1195,20 @@
1
0
15 Apr '10
details: http://www.bx.psu.edu/hg/galaxy/rev/43b7a7f4bff5
changeset: 3605:43b7a7f4bff5
user: rc
date: Fri Apr 02 15:09:29 2010 -0400
description:
lims: default values for forms now working for text fields
diffstat:
lib/galaxy/model/__init__.py | 4 ++--
lib/galaxy/web/controllers/forms.py | 24 ++++++++++++++++++------
2 files changed, 20 insertions(+), 8 deletions(-)
diffs (107 lines):
diff -r 3914645ecccb -r 43b7a7f4bff5 lib/galaxy/model/__init__.py
--- a/lib/galaxy/model/__init__.py Fri Apr 02 15:00:53 2010 -0400
+++ b/lib/galaxy/model/__init__.py Fri Apr 02 15:09:29 2010 -0400
@@ -1348,8 +1348,8 @@
# Since we do not have contents, set checkbox value to False
value = False
else:
- # Set other field types to empty string
- value = ''
+ # Set other field types to the default value of the field
+ value = field['default']
# create the field widget
field_widget = eval( field[ 'type' ] )( field_name )
if field[ 'type' ] == 'TextField':
diff -r 3914645ecccb -r 43b7a7f4bff5 lib/galaxy/web/controllers/forms.py
--- a/lib/galaxy/web/controllers/forms.py Fri Apr 02 15:00:53 2010 -0400
+++ b/lib/galaxy/web/controllers/forms.py Fri Apr 02 15:09:29 2010 -0400
@@ -72,7 +72,8 @@
'required': False,
'type': BaseField.form_field_types()[0],
'selectlist': [],
- 'layout': 'none' }
+ 'layout': 'none',
+ 'default': '' }
forms_grid = FormsGrid()
@web.expose
@@ -354,6 +355,7 @@
required = params.get( 'field_required_%i' % index, False )
field_type = util.restore_text( params.get( 'field_type_%i' % index, '' ) )
layout = params.get( 'field_layout_%i' % index, '' )
+ default = params.get( 'field_default_%i' % index, '' )
if field_type == 'SelectField':
selectlist = self.__get_selectbox_options(index, **kwd)
return {'label': name,
@@ -362,13 +364,15 @@
'required': required,
'type': field_type,
'selectlist': selectlist,
- 'layout': layout }
+ 'layout': layout,
+ 'default': default }
return {'label': name,
'helptext': helptext,
'visible': True,
'required': required,
'type': field_type,
- 'layout': layout}
+ 'layout': layout,
+ 'default': default}
def __get_selectbox_options(self, index, **kwd):
'''
This method gets all the options entered by the user for field when
@@ -453,7 +457,8 @@
'required': row[3],
'type': row[4],
'selectlist': options,
- 'layout':row[6]})
+ 'layout':row[6],
+ 'default': row[7]})
layouts.add(row[6])
else:
for row in reader:
@@ -463,7 +468,8 @@
'visible': row[2],
'required': row[3],
'type': row[4],
- 'selectlist': options})
+ 'selectlist': options,
+ 'default': row[7]})
except:
return trans.response.send_redirect( web.url_for( controller='forms',
action='new',
@@ -549,7 +555,9 @@
if layout_grids:
self.layout_selectbox = SelectField('field_layout_'+str(index))
for index, grid_name in enumerate(layout_grids):
- self.layout_selectbox.add_option("%i. %s" %(index+1, grid_name), index)
+ self.layout_selectbox.add_option("%i. %s" %(index+1, grid_name), index)
+ # default value
+ self.default = TextField('field_default_'+str(index), 40, '')
if field:
self.fill(trans, field, field_type, form_type)
def fill(self, trans, field, field_type=None, form_type=None):
@@ -557,6 +565,8 @@
self.label.value = field['label']
# helptext
self.helptext.value = field['helptext']
+ # default value
+ self.default.value = field['default']
# type
self.fieldtype = SelectField('field_type_'+str(self.index),
refresh_on_change=True,
@@ -608,11 +618,13 @@
return [( 'Label', self.label ),
( 'Help text', self.helptext ),
( 'Type', self.fieldtype, self.selectbox_options),
+ ( 'Default value', self.default ),
( '', self.required),
( 'Select the grid layout to place this field', self.layout_selectbox)]
return [( 'Label', self.label ),
( 'Help text', self.helptext ),
( 'Type', self.fieldtype, self.selectbox_options),
+ ( 'Default value', self.default ),
( '', self.required)]
def __repr__(self):
return str(self.index)+'.'+self.label
1
0
15 Apr '10
details: http://www.bx.psu.edu/hg/galaxy/rev/3914645ecccb
changeset: 3604:3914645ecccb
user: Greg Von Kuster <greg(a)bx.psu.edu>
date: Fri Apr 02 15:00:53 2010 -0400
description:
Handle user registration and login in the galaxy_main frame to ensure masthead. After registration or login, use javascript to redirect to the page the user was viewing when they attempted login. If javascript is disabled, a page will be displayed with links to the page they were visiting or the home page. Revamp functional tests to cover new behavior. Fix bugs where the username was not validated when a user registered, and add functional tests to cover. Fix a bug where the user's new session may have set it's history to the user's previous history, even if the history was deleted. Now a new history will be created for the current session instead. Add a new logout.mako template, and remove a create.mako template that was no longer used.
diffstat:
lib/galaxy/web/controllers/admin.py | 65 +------
lib/galaxy/web/controllers/user.py | 258 +++++++++-----------------
lib/galaxy/web/framework/__init__.py | 11 +-
templates/admin/user/create.mako | 43 ----
templates/library/common/browse_library.mako | 1 -
templates/user/index.mako | 16 +-
templates/user/login.mako | 51 +++--
templates/user/logout.mako | 6 +
templates/user/register.mako | 120 +++++++-----
templates/webapps/galaxy/base_panels.mako | 10 +-
test/base/twilltestcase.py | 82 ++++++--
test/functional/test_admin_features.py | 25 ++-
12 files changed, 301 insertions(+), 387 deletions(-)
diffs (969 lines):
diff -r 72daa0d41d1b -r 3914645ecccb lib/galaxy/web/controllers/admin.py
--- a/lib/galaxy/web/controllers/admin.py Fri Apr 02 14:34:35 2010 -0400
+++ b/lib/galaxy/web/controllers/admin.py Fri Apr 02 15:00:53 2010 -0400
@@ -711,69 +711,6 @@
return trans.response.send_redirect( web.url_for( controller='user',
action='create',
admin_view=True ) )
- email = ''
- password = ''
- confirm = ''
- subscribe = False
- email_filter = kwargs.get( 'email_filter', 'A' )
- if 'user_create_button' in kwargs:
- message = ''
- status = ''
- email = kwargs.get( 'email' , None )
- password = kwargs.get( 'password', None )
- confirm = kwargs.get( 'confirm', None )
- subscribe = kwargs.get( 'subscribe', None )
- if not email:
- message = 'Enter a valid email address'
- elif not password:
- message = 'Enter a valid password'
- elif not confirm:
- message = 'Confirm the password'
- elif len( email ) == 0 or "@" not in email or "." not in email:
- message = 'Enter a real email address'
- elif len( email) > 255:
- message = 'Email address exceeds maximum allowable length'
- elif trans.sa_session.query( trans.app.model.User ).filter_by( email=email ).first():
- message = 'User with that email already exists'
- elif len( password ) < 6:
- message = 'Use a password of at least 6 characters'
- elif password != confirm:
- message = 'Passwords do not match'
- if message:
- trans.response.send_redirect( web.url_for( controller='admin',
- action='users',
- email_filter=email_filter,
- message=util.sanitize_text( message ),
- status='error' ) )
- else:
- user = trans.app.model.User( email=email )
- user.set_password_cleartext( password )
- if trans.app.config.use_remote_user:
- user.external = True
- trans.sa_session.add( user )
- trans.sa_session.flush()
- trans.app.security_agent.create_private_user_role( user )
- trans.app.security_agent.user_set_default_permissions( user, history=False, dataset=False )
- message = 'Created new user account (%s)' % user.email
- status = 'done'
- #subscribe user to email list
- if subscribe:
- mail = os.popen( "%s -t" % trans.app.config.sendmail_path, 'w' )
- mail.write( "To: %s\nFrom: %s\nSubject: Join Mailing List\n\nJoin Mailing list." % ( trans.app.config.mailing_join_addr, email ) )
- if mail.close():
- message + ". However, subscribing to the mailing list has failed."
- status = 'error'
- trans.response.send_redirect( web.url_for( controller='admin',
- action='users',
- email_filter=email_filter,
- message=util.sanitize_text( message ),
- status=status ) )
- return trans.fill_template( '/admin/user/create.mako',
- email_filter=email_filter,
- email=email,
- password=password,
- confirm=confirm,
- subscribe=subscribe )
@web.expose
@web.require_admin
def reset_user_password( self, trans, **kwd ):
@@ -916,7 +853,7 @@
status='done' ) )
@web.expose
@web.require_admin
- def users( self, trans, **kwargs ):
+ def users( self, trans, **kwargs ):
if 'operation' in kwargs:
operation = kwargs['operation'].lower()
if operation == "roles":
diff -r 72daa0d41d1b -r 3914645ecccb lib/galaxy/web/controllers/user.py
--- a/lib/galaxy/web/controllers/user.py Fri Apr 02 14:34:35 2010 -0400
+++ b/lib/galaxy/web/controllers/user.py Fri Apr 02 15:00:53 2010 -0400
@@ -26,23 +26,24 @@
class User( BaseController ):
@web.expose
def index( self, trans, webapp='galaxy', **kwd ):
- return trans.fill_template( '/user/index.mako', user=trans.get_user(), webapp=webapp )
+ return trans.fill_template( '/user/index.mako', webapp=webapp )
@web.expose
- def login( self, trans, webapp='galaxy', **kwd ):
+ def login( self, trans, webapp='galaxy', redirect_url='', refresh_frames=[], **kwd ):
+ referer = kwd.get( 'referer', trans.request.referer )
use_panels = util.string_as_bool( kwd.get( 'use_panels', True ) )
msg = kwd.get( 'msg', '' )
messagetype = kwd.get( 'messagetype', 'done' )
+ header = ''
+ user = None
+ email = kwd.get( 'email', '' )
if kwd.get( 'login_button', False ):
- email = kwd.get( 'email', '' )
password = kwd.get( 'password', '' )
referer = kwd.get( 'referer', '' )
- if webapp == 'galaxy':
+ if webapp == 'galaxy' and not refresh_frames:
if trans.app.config.require_login:
refresh_frames = [ 'masthead', 'history', 'tools' ]
else:
refresh_frames = [ 'masthead', 'history' ]
- else:
- refresh_frames = []
user = trans.sa_session.query( trans.app.model.User ).filter( trans.app.model.User.table.c.email==email ).first()
if not user:
msg = "No such user"
@@ -59,38 +60,27 @@
else:
trans.handle_user_login( user, webapp )
trans.log_event( "User logged in" )
- msg = "You are now logged in as %s.<br>You can <a href='%s'>go back to the page you were visiting</a> or <a href='%s'>go to the home page</a>." % \
+ msg = 'You are now logged in as %s.<br>You can <a target="_top" href="%s">go back to the page you were visiting</a> or <a target="_top" href="%s">go to the home page</a>.' % \
( user.email, referer, url_for( '/' ) )
if trans.app.config.require_login:
- msg += ' <a href="%s">Click here</a> to continue to the home page.' % web.url_for( '/static/welcome.html' )
- return trans.response.send_redirect( web.url_for( controller='user',
- action='login',
- use_panels=use_panels,
- msg=msg,
- message_type='done' ) )
- if trans.app.config.require_login:
+ msg += ' <a target="_top" href="%s">Click here</a> to continue to the home page.' % web.url_for( '/static/welcome.html' )
+ redirect_url = referer
+ if not user and trans.app.config.require_login:
if trans.app.config.allow_user_creation:
- return trans.fill_template( '/user/login.mako',
- webapp=webapp,
- header=require_login_creation_template % web.url_for( action='create' ),
- use_panels=use_panels,
- msg=msg,
- messagetype=messagetype,
- active_view="user" )
+ header = require_login_creation_template % web.url_for( action='create' )
else:
- return trans.fill_template( '/user/login.mako',
- webapp=webapp,
- header=require_login_nocreation_template,
- use_panels=use_panels,
- msg=msg,
- messagetype=messagetype,
- active_view="user" )
+ header = require_login_nocreation_template
return trans.fill_template( '/user/login.mako',
webapp=webapp,
+ email=email,
+ header=header,
use_panels=use_panels,
+ redirect_url=redirect_url,
+ referer=referer,
+ refresh_frames=refresh_frames,
msg=msg,
messagetype=messagetype,
- active_view="use" )
+ active_view="user" )
@web.expose
def logout( self, trans, webapp='galaxy' ):
if webapp == 'galaxy':
@@ -103,18 +93,18 @@
# Since logging an event requires a session, we'll log prior to ending the session
trans.log_event( "User logged out" )
trans.handle_user_logout()
- msg = "You have been logged out.<br>You can log in again, <a href='%s'>go back to the page you were visiting</a> or <a href='%s'>go to the home page</a>." % \
+ msg = 'You have been logged out.<br>You can log in again, <a target="_top" href="%s">go back to the page you were visiting</a> or <a target="_top" href="%s">go to the home page</a>.' % \
( trans.request.referer, url_for( '/' ) )
- return trans.response.send_redirect( web.url_for( controller='user',
- action='login',
- msg=msg,
- message_type='done' ) )
+ return trans.fill_template( '/user/logout.mako',
+ webapp=webapp,
+ refresh_frames=refresh_frames,
+ msg=msg,
+ messagetype='done',
+ active_view="user" )
@web.expose
- def create( self, trans, webapp='galaxy', **kwd ):
+ def create( self, trans, webapp='galaxy', redirect_url='', refresh_frames=[], **kwd ):
params = util.Params( kwd )
- use_panels = kwd.get( 'use_panels', 'True' )
- # Convert use_panels to Boolean.
- use_panels = use_panels in [ 'True', 'true', 't', 'T' ]
+ use_panels = util.string_as_bool( kwd.get( 'use_panels', True ) )
email = util.restore_text( params.get( 'email', '' ) )
# Do not sanitize passwords, so take from kwd
# instead of params ( which were sanitized )
@@ -126,123 +116,56 @@
admin_view = util.string_as_bool( params.get( 'admin_view', False ) )
msg = util.restore_text( params.get( 'msg', '' ) )
messagetype = params.get( 'messagetype', 'done' )
- if webapp == 'galaxy':
+ referer = kwd.get( 'referer', trans.request.referer )
+ if not refresh_frames and webapp == 'galaxy':
if trans.app.config.require_login:
refresh_frames = [ 'masthead', 'history', 'tools' ]
else:
refresh_frames = [ 'masthead', 'history' ]
- else:
- refresh_frames = []
+ error = ''
if not trans.app.config.allow_user_creation and not trans.user_is_admin():
- msg = 'User registration is disabled. Please contact your Galaxy administrator for an account.'
- return trans.response.send_redirect( web.url_for( controller='user',
- action='create',
- webapp=webapp,
- email=email,
- password=password,
- confirm=confirm,
- username=username,
- subscribe=subscribe,
- subscribe_checked=subscribe_checked,
- admin_view=admin_view,
- use_panels=use_panels,
- refresh_frames=refresh_frames,
- msg=error,
- messagetype='error' ) )
+ error = 'User registration is disabled. Please contact your Galaxy administrator for an account.'
# Create the user, save all the user info and login to Galaxy
- if params.get( 'create_user_button', False ):
+ elif params.get( 'create_user_button', False ):
# Check email and password validity
- error = self.__validate( trans, params, email, password, confirm, webapp )
- if error:
- return trans.response.send_redirect( web.url_for( controller='user',
- action='create',
- webapp=webapp,
- email=email,
- password=password,
- confirm=confirm,
- username=username,
- subscribe=subscribe,
- subscribe_checked=subscribe_checked,
- admin_view=admin_view,
- use_panels=use_panels,
- refresh_frames=refresh_frames,
- msg=error,
- messagetype='error' ) )
- # all the values are valid
- user = trans.app.model.User( email=email )
- user.set_password_cleartext( password )
- user.username = username
- trans.sa_session.add( user )
- trans.sa_session.flush()
- trans.app.security_agent.create_private_user_role( user )
- if webapp == 'galaxy':
- # We set default user permissions, before we log in and set the default history permissions
- trans.app.security_agent.user_set_default_permissions( user,
- default_access_private=trans.app.config.new_user_dataset_access_role_default_private )
- # save user info
- self.__save_user_info( trans, user, action='create', new_user=True, **kwd )
- if subscribe_checked:
- mail = os.popen( "%s -t" % trans.app.config.sendmail_path, 'w' )
- mail.write( "To: %s\nFrom: %s\nSubject: Join Mailing List\n\nJoin Mailing list." % ( trans.app.config.mailing_join_addr,email ) )
- if mail.close():
- msg = "Now logged in as " + user.email + ". However, subscribing to the mailing list has failed."
- return trans.response.send_redirect( web.url_for( controller='user',
- action='create',
- webapp=webapp,
- email=email,
- password=password,
- confirm=confirm,
- username=username,
- subscribe=subscribe,
- subscribe_checked=subscribe_checked,
- admin_view=admin_view,
- use_panels=use_panels,
- refresh_frames=refresh_frames,
- msg=error,
- messagetype='warn' ) )
- if not admin_view:
- # The handle_user_login() method has a call to the history_set_default_permissions() method
- # (needed when logging in with a history), user needs to have default permissions set before logging in
- trans.handle_user_login( user, webapp )
- trans.log_event( "User created a new account" )
- trans.log_event( "User logged in" )
- # subscribe user to email list
- msg = "Now logged in as %s.<br><a href='%s'>Return to the home page.</a>" % ( user.email, url_for( '/' ) )
- return trans.response.send_redirect( web.url_for( controller='user',
- action='create',
- webapp=webapp,
- email=email,
- password=password,
- confirm=confirm,
- username=username,
- subscribe=subscribe,
- subscribe_checked=subscribe_checked,
- admin_view=admin_view,
- use_panels=True,
- refresh_frames=refresh_frames,
- msg=msg,
- messagetype='done' ) )
- else:
- trans.response.send_redirect( web.url_for( controller='admin',
- action='users',
- message='Created new user account (%s)' % user.email,
- status='done' ) )
- else:
- msg = "Now logged in as %s.<br><a href='%s'>Return to the home page.</a>" % ( user.email, url_for( '/' ) )
- return trans.response.send_redirect( web.url_for( controller='user',
- action='create',
- webapp=webapp,
- email=email,
- password=password,
- confirm=confirm,
- username=username,
- subscribe=subscribe,
- subscribe_checked=subscribe_checked,
- admin_view=admin_view,
- use_panels=False,
- refresh_frames=refresh_frames,
- msg=error,
- messagetype='done' ) )
+ error = self.__validate( trans, params, email, password, confirm, username, webapp )
+ if not error:
+ # all the values are valid
+ user = trans.app.model.User( email=email )
+ user.set_password_cleartext( password )
+ user.username = username
+ trans.sa_session.add( user )
+ trans.sa_session.flush()
+ trans.app.security_agent.create_private_user_role( user )
+ msg = 'Now logged in as %s.<br><a target="_top" href="%s">Return to the home page.</a>' % ( user.email, url_for( '/' ) )
+ if webapp == 'galaxy':
+ # We set default user permissions, before we log in and set the default history permissions
+ trans.app.security_agent.user_set_default_permissions( user,
+ default_access_private=trans.app.config.new_user_dataset_access_role_default_private )
+ # save user info
+ self.__save_user_info( trans, user, action='create', new_user=True, **kwd )
+ if subscribe_checked:
+ # subscribe user to email list
+ mail = os.popen( "%s -t" % trans.app.config.sendmail_path, 'w' )
+ mail.write( "To: %s\nFrom: %s\nSubject: Join Mailing List\n\nJoin Mailing list." % ( trans.app.config.mailing_join_addr,email ) )
+ if mail.close():
+ error = "Now logged in as " + user.email + ". However, subscribing to the mailing list has failed."
+ if not error and not admin_view:
+ # The handle_user_login() method has a call to the history_set_default_permissions() method
+ # (needed when logging in with a history), user needs to have default permissions set before logging in
+ trans.handle_user_login( user, webapp )
+ trans.log_event( "User created a new account" )
+ trans.log_event( "User logged in" )
+ elif not error:
+ trans.response.send_redirect( web.url_for( controller='admin',
+ action='users',
+ message='Created new user account (%s)' % user.email,
+ status='done' ) )
+ if not error:
+ redirect_url = referer
+ if error:
+ msg=error
+ messagetype='error'
if webapp == 'galaxy':
user_info_select, user_info_form, widgets = self.__user_info_ui( trans, **kwd )
else:
@@ -261,6 +184,9 @@
widgets=widgets,
webapp=webapp,
use_panels=use_panels,
+ referer=referer,
+ redirect_url=redirect_url,
+ refresh_frames=refresh_frames,
msg=msg,
messagetype=messagetype )
def __save_user_info(self, trans, user, action, new_user=True, **kwd):
@@ -371,7 +297,7 @@
if len( username ) > 255:
return "User name cannot be more than 255 characters in length"
if not( VALID_USERNAME_RE.match( username ) ):
- return "User name must contain only letters, numbers and '-'"
+ return "User name must contain only lower-case letters, numbers and '-'"
if trans.sa_session.query( trans.app.model.User ).filter_by( username=username ).first():
return "This user name is not available"
return None
@@ -382,24 +308,24 @@
elif password != confirm:
error = "Passwords do not match"
return error
- def __validate( self, trans, params, email, password, confirm, webapp ):
+ def __validate( self, trans, params, email, password, confirm, username, webapp ):
error = self.__validate_email( trans, email )
- if error:
- return error
- error = self.__validate_password( trans, password, confirm )
- if error:
- return error
- if webapp == 'galaxy':
- # TODO: the user controller must be decoupled from the model, so this import causes problems.
- # The get_all_forms method is used only if Galaxy is the webapp, so it needs to be re-worked
- # so that it can be imported with no problems if the controller is not 'galaxy'.
- from galaxy.web.controllers.forms import get_all_forms
- if len( get_all_forms( trans,
- filter=dict( deleted=False ),
- form_type=trans.app.model.FormDefinition.types.USER_INFO ) ):
- if params.get( 'user_info_select', 'none' ) == 'none':
- return 'Select the user type and the user information'
- return None
+ if not error:
+ error = self.__validate_password( trans, password, confirm )
+ if not error and username:
+ error = self.__validate_username( trans, username )
+ if not error:
+ if webapp == 'galaxy':
+ # TODO: the user controller must be decoupled from the model, so this import causes problems.
+ # The get_all_forms method is used only if Galaxy is the webapp, so it needs to be re-worked
+ # so that it can be imported with no problems if the controller is not 'galaxy'.
+ from galaxy.web.controllers.forms import get_all_forms
+ if len( get_all_forms( trans,
+ filter=dict( deleted=False ),
+ form_type=trans.app.model.FormDefinition.types.USER_INFO ) ):
+ if not params.get( 'user_info_select', False ):
+ return 'Select the user type and the user information'
+ return error
def __user_info_ui(self, trans, user=None, **kwd):
'''
This method creates the user type select box & user information form widgets
diff -r 72daa0d41d1b -r 3914645ecccb lib/galaxy/web/framework/__init__.py
--- a/lib/galaxy/web/framework/__init__.py Fri Apr 02 14:34:35 2010 -0400
+++ b/lib/galaxy/web/framework/__init__.py Fri Apr 02 15:00:53 2010 -0400
@@ -72,7 +72,7 @@
return func( self, trans, *args, **kwargs )
else:
return trans.show_error_message(
- "You must be <a target='_top' href='%s'>logged in</a> to %s</div>."
+ 'You must be <a target="_top" href="%s">logged in</a> to %s</div>.'
% ( url_for( controller='user', action='login' ), verb ), use_panels=use_panels )
return decorator
return argcatcher
@@ -434,14 +434,19 @@
except:
users_last_session = None
last_accessed = False
- if prev_galaxy_session.current_history and prev_galaxy_session.current_history.datasets:
+ if prev_galaxy_session.current_history and \
+ not prev_galaxy_session.current_history.deleted and \
+ prev_galaxy_session.current_history.datasets:
if prev_galaxy_session.current_history.user is None or prev_galaxy_session.current_history.user == user:
# If the previous galaxy session had a history, associate it with the new
# session, but only if it didn't belong to a different user.
history = prev_galaxy_session.current_history
elif self.galaxy_session.current_history:
history = self.galaxy_session.current_history
- if not history and users_last_session and users_last_session.current_history:
+ if not history and \
+ users_last_session and \
+ users_last_session.current_history and \
+ not users_last_session.current_history.deleted:
history = users_last_session.current_history
elif not history:
history = self.get_history( create=True )
diff -r 72daa0d41d1b -r 3914645ecccb templates/admin/user/create.mako
--- a/templates/admin/user/create.mako Fri Apr 02 14:34:35 2010 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-<%inherit file="/base.mako"/>
-<%namespace file="/message.mako" import="render_msg" />
-
-%if msg:
- ${render_msg( msg, messagetype )}
-%endif
-
-<div class="toolForm">
- <div class="toolFormTitle">Create user account</div>
- <div class="toolFormBody">
- <form name="form" action="${h.url_for( controller='admin', action='create_new_user', email_filter=email_filter )}" method="post" >
- <div class="form-row">
- <label>Email address:</label>
- <div style="float: left; width: 250px; margin-right: 10px;">
- <input type="text" name="email" value="${email}" size="40">
- </div>
- <div style="clear: both"></div>
- </div>
- <div class="form-row">
- <label>Password:</label>
- <div style="float: left; width: 250px; margin-right: 10px;">
- <input type="password" name="password" value="${password}" size="40">
- </div>
- <div style="clear: both"></div>
- </div>
- <div class="form-row">
- <label>Confirm password:</label>
- <div style="float: left; width: 250px; margin-right: 10px;">
- <input type="password" name="confirm" value="${confirm}" size="40">
- </div>
- <div style="clear: both"></div>
- </div>
- <div class="form-row">
- <label>Subscribe To Mailing List:</label>
- <div style="float: left; width: 250px; margin-right: 10px;">
- <input type="checkbox" name="subscribe" value="${subscribe}" size="40">
- </div>
- <div style="clear: both"></div>
- </div>
- <input type="submit" name="user_create_button" value="Create">
- </form>
- </div>
-</div>
diff -r 72daa0d41d1b -r 3914645ecccb templates/library/common/browse_library.mako
--- a/templates/library/common/browse_library.mako Fri Apr 02 14:34:35 2010 -0400
+++ b/templates/library/common/browse_library.mako Fri Apr 02 15:00:53 2010 -0400
@@ -30,7 +30,6 @@
${render_content()}
</div>
</div>
- ##${render_content()}
</%def>
## Render the grid's basic elements. Each of these elements can be subclassed.
diff -r 72daa0d41d1b -r 3914645ecccb templates/user/index.mako
--- a/templates/user/index.mako Fri Apr 02 14:34:35 2010 -0400
+++ b/templates/user/index.mako Fri Apr 02 15:00:53 2010 -0400
@@ -1,11 +1,13 @@
<%inherit file="/base.mako"/>
-<%def name="title()">User preferences</%def>
+<%namespace file="/message.mako" import="render_msg" />
+%if msg:
+ ${render_msg( msg, messagetype )}
+%endif
-<h2>${_('User preferences')}</h2>
-
-%if user:
- <p>You are currently logged in as ${user.email}.</p>
+%if trans.user:
+ <h2>${_('User preferences')}</h2>
+ <p>You are currently logged in as ${trans.user.email}.</p>
<ul>
%if webapp == 'galaxy':
<li><a href="${h.url_for( action='show_info' )}">${_('Manage your information')}</a></li>
@@ -14,7 +16,9 @@
<li><a href="${h.url_for( action='logout' )}">${_('Logout')}</a></li>
</ul>
%else:
- <p>${n_('You are currently not logged in.')}</p>
+ %if not msg:
+ <p>${n_('You are currently not logged in.')}</p>
+ %endif
<ul>
<li><a href="${h.url_for( action='login' )}">${_('Login')}</li>
<li><a href="${h.url_for( action='create' )}">${_('Register')}</a></li>
diff -r 72daa0d41d1b -r 3914645ecccb templates/user/login.mako
--- a/templates/user/login.mako Fri Apr 02 14:34:35 2010 -0400
+++ b/templates/user/login.mako Fri Apr 02 15:00:53 2010 -0400
@@ -1,30 +1,39 @@
<%inherit file="/base.mako"/>
<%namespace file="/message.mako" import="render_msg" />
-%if msg:
+%if redirect_url:
+ <script type="text/javascript">
+ top.location.href = '${redirect_url}';
+ </script>
+%endif
+
+%if not redirect_url and msg:
${render_msg( msg, messagetype )}
%endif
-<div class="toolForm">
- <div class="toolFormTitle">Login</div>
+
+%if not trans.user:
%if header:
${header}
%endif
- <form name="login" id="login" action="${h.url_for( controller='user', action='login' )}" method="post" >
- <div class="form-row">
- <label>Email address:</label>
- <input type="text" name="email" value="" size="40"/>
- <input type="hidden" name="webapp" value="${webapp}" size="40"/>
- <input type="hidden" name="referer" value="${trans.request.referer}" size="40"/>
- </div>
- <div class="form-row">
- <label>Password:</label>
- <input type="password" name="password" value="" size="40"/>
- <div class="toolParamHelp" style="clear: both;">
- <a href="${h.url_for( controller='user', action='reset_password', webapp=webapp, use_panels=use_panels )}">Forgot password? Reset here</a>
+ <div class="toolForm">
+ <div class="toolFormTitle">Login</div>
+ <form name="login" id="login" action="${h.url_for( controller='user', action='login' )}" method="post" >
+ <div class="form-row">
+ <label>Email address:</label>
+ <input type="text" name="email" value="${email}" size="40"/>
+ <input type="hidden" name="webapp" value="${webapp}" size="40"/>
+ <input type="hidden" name="referer" value="${referer}" size="40"/>
</div>
- </div>
- <div class="form-row">
- <input type="submit" name="login_button" value="Login"/>
- </div>
- </form>
-</div>
+ <div class="form-row">
+ <label>Password:</label>
+ <input type="password" name="password" value="" size="40"/>
+ <div class="toolParamHelp" style="clear: both;">
+ <a href="${h.url_for( controller='user', action='reset_password', webapp=webapp, use_panels=use_panels )}">Forgot password? Reset here</a>
+ </div>
+ </div>
+ <div class="form-row">
+ <input type="submit" name="login_button" value="Login"/>
+ </div>
+ </form>
+ </div>
+%endif
diff -r 72daa0d41d1b -r 3914645ecccb templates/user/logout.mako
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/user/logout.mako Fri Apr 02 15:00:53 2010 -0400
@@ -0,0 +1,6 @@
+<%inherit file="/base.mako"/>
+<%namespace file="/message.mako" import="render_msg" />
+
+%if msg:
+ ${render_msg( msg, messagetype )}
+%endif
diff -r 72daa0d41d1b -r 3914645ecccb templates/user/register.mako
--- a/templates/user/register.mako Fri Apr 02 14:34:35 2010 -0400
+++ b/templates/user/register.mako Fri Apr 02 15:00:53 2010 -0400
@@ -1,6 +1,12 @@
<%inherit file="/base.mako"/>
<%namespace file="/message.mako" import="render_msg" />
+%if redirect_url:
+ <script type="text/javascript">
+ top.location.href = '${redirect_url}';
+ </script>
+%endif
+
<%def name="javascripts()">
${parent.javascripts()}
<script type="text/javascript">
@@ -33,62 +39,70 @@
from galaxy.web.form_builder import CheckboxField
subscribe_check_box = CheckboxField( 'subscribe' )
%>
-%if msg:
+%if not redirect_url and msg:
${render_msg( msg, messagetype )}
%endif
-<div class="toolForm">
- <form name="registration" id="registration" action="${h.url_for( controller='user', action='create', admin_view=admin_view )}" method="post" >
- <div class="toolFormTitle">Create account</div>
- <div class="form-row">
- <label>Email address:</label>
- <input type="text" name="email" value="${email}" size="40"/>
- <input type="hidden" name="webapp" value="${webapp}" size="40"/>
- </div>
- <div class="form-row">
- <label>Password:</label>
- <input type="password" name="password" value="${password}" size="40"/>
- </div>
- <div class="form-row">
- <label>Confirm password:</label>
- <input type="password" name="confirm" value="${confirm}" size="40"/>
- </div>
- <div class="form-row">
- <label>Public user name:</label>
- <input type="text" name="username" size="40" value="${username}"/>
- <div class="toolParamHelp" style="clear: both;">
- When you share or publish items, this name is shown as the author.
+
+## An admin user may be creating a new user account, in which case we want to display the registration form.
+## But if the current user is not an admin user, then don't display the registration form.
+%if trans.user_is_admin() or not trans.user:
+ <div class="toolForm">
+ <form name="registration" id="registration" action="${h.url_for( controller='user', action='create', admin_view=admin_view )}" method="post" >
+ <div class="toolFormTitle">Create account</div>
+ <div class="form-row">
+ <label>Email address:</label>
+ <input type="text" name="email" value="${email}" size="40"/>
+ <input type="hidden" name="webapp" value="${webapp}" size="40"/>
+ <input type="hidden" name="referer" value="${referer}" size="40"/>
</div>
- </div>
- <div class="form-row">
- <label>Subscribe to mailing list:</label>
- %if subscribe_checked:
- <% subscribe_check_box.checked = True %>
+ <div class="form-row">
+ <label>Password:</label>
+ <input type="password" name="password" value="${password}" size="40"/>
+ </div>
+ <div class="form-row">
+ <label>Confirm password:</label>
+ <input type="password" name="confirm" value="${confirm}" size="40"/>
+ </div>
+ <div class="form-row">
+ <label>Public user name:</label>
+ <input type="text" name="username" size="40" value="${username}"/>
+ <div class="toolParamHelp" style="clear: both;">
+ Your user name is an optional identifier that will be used to generate addresses for information
+ you share publicly. User names must be at least four characters in length and contain only lower-case
+ letters, numbers, and the '-' character.
+ </div>
+ </div>
+ <div class="form-row">
+ <label>Subscribe to mailing list:</label>
+ %if subscribe_checked:
+ <% subscribe_check_box.checked = True %>
+ %endif
+ ${subscribe_check_box.get_html()}
+ </div>
+ %if user_info_select:
+ <div class="form-row">
+ <label>User type</label>
+ ${user_info_select.get_html()}
+ </div>
%endif
- ${subscribe_check_box.get_html()}
- </div>
- %if user_info_select:
+ %if user_info_form:
+ %for field in widgets:
+ <div class="form-row">
+ <label>${field['label']}</label>
+ ${field['widget'].get_html()}
+ <div class="toolParamHelp" style="clear: both;">
+ ${field['helptext']}
+ </div>
+ <div style="clear: both"></div>
+ </div>
+ %endfor
+ %if not user_info_select:
+ <input type="hidden" name="user_info_select" value="${user_info_form.id}"/>
+ %endif
+ %endif
<div class="form-row">
- <label>User type</label>
- ${user_info_select.get_html()}
+ <input type="submit" name="create_user_button" value="Submit"/>
</div>
- %endif
- %if user_info_form:
- %for field in widgets:
- <div class="form-row">
- <label>${field['label']}</label>
- ${field['widget'].get_html()}
- <div class="toolParamHelp" style="clear: both;">
- ${field['helptext']}
- </div>
- <div style="clear: both"></div>
- </div>
- %endfor
- %if not user_info_select:
- <input type="hidden" name="user_info_select" value="${user_info_form.id}"/>
- %endif
- %endif
- <div class="form-row">
- <input type="submit" name="create_user_button" value="Submit"/>
- </div>
- </form>
-</div>
+ </form>
+ </div>
+%endif
diff -r 72daa0d41d1b -r 3914645ecccb templates/webapps/galaxy/base_panels.mako
--- a/templates/webapps/galaxy/base_panels.mako Fri Apr 02 14:34:35 2010 -0400
+++ b/templates/webapps/galaxy/base_panels.mako Fri Apr 02 15:00:53 2010 -0400
@@ -100,28 +100,26 @@
%>
<div class="submenu">
<ul class="loggedout-only" style="${style1}">
- <li><a href="${h.url_for( controller='/user', action='login' )}">Login</a></li>
+ <li><a target="galaxy_main" href="${h.url_for( controller='/user', action='login' )}">Login</a></li>
%if app.config.allow_user_creation:
- <li><a href="${h.url_for( controller='/user', action='create' )}">Register</a></li>
+ <li><a target="galaxy_main" href="${h.url_for( controller='/user', action='create' )}">Register</a></li>
%endif
</ul>
<ul class="loggedin-only" style="${style2}">
%if app.config.use_remote_user:
%if app.config.remote_user_logout_href:
- <li><a href="${app.config.remote_user_logout_href}" target="_top">Logout</a></li>
+ <li><a target="galaxy_main" href="${app.config.remote_user_logout_href}">Logout</a></li>
%endif
%else:
<li>Logged in as <span id="user-email">${user_email}</span></li>
<li><a target="galaxy_main" href="${h.url_for( controller='/user', action='index' )}">Preferences</a></li>
<%
if app.config.require_login:
- logout_target = ""
logout_url = h.url_for( controller='/root', action='index', m_c='user', m_a='logout' )
else:
- logout_target = ""
logout_url = h.url_for( controller='/user', action='logout' )
%>
- <li><a target="${logout_target}" href="${logout_url}">Logout</a></li>
+ <li><a target="_top" href="${logout_url}">Logout</a></li>
%endif
<li><hr style="color: inherit; background-color: gray"/></li>
<li><a target="galaxy_main" href="${h.url_for( controller='/history', action='list' )}">Histories</a></li>
diff -r 72daa0d41d1b -r 3914645ecccb test/base/twilltestcase.py
--- a/test/base/twilltestcase.py Fri Apr 02 14:34:35 2010 -0400
+++ b/test/base/twilltestcase.py Fri Apr 02 15:00:53 2010 -0400
@@ -793,20 +793,39 @@
self.assertTrue( genome_build == dbkey )
# Functions associated with user accounts
- def create( self, email='test(a)bx.psu.edu', password='testuser', username='admin-user', webapp='galaxy' ):
+ def create( self, email='test(a)bx.psu.edu', password='testuser', username='admin-user', webapp='galaxy', referer='' ):
# HACK: don't use panels because late_javascripts() messes up the twill browser and it
# can't find form fields (and hence user can't be logged in).
- self.visit_url( "%s/user/create?use_panels=False&webapp=%s" % ( self.url, webapp ) )
+ self.visit_url( "%s/user/create?use_panels=False" % self.url )
tc.fv( '1', 'email', email )
+ tc.fv( '1', 'webapp', webapp )
+ tc.fv( '1', 'referer', referer )
tc.fv( '1', 'password', password )
tc.fv( '1', 'confirm', password )
tc.fv( '1', 'username', username )
tc.submit( 'create_user_button' )
- self.check_page_for_string( "now logged in as %s" % email )
- # Make sure a new private role was created for the user
- self.visit_url( "%s/user/set_default_permissions" % self.url )
- self.check_page_for_string( email )
- self.home()
+ previously_created = False
+ username_taken = False
+ invalid_username = False
+ try:
+ self.check_page_for_string( "Created new user account" )
+ except:
+ try:
+ # May have created the account in a previous test run...
+ self.check_page_for_string( "User with that email already exists" )
+ previously_created = True
+ except:
+ try:
+ self.check_page_for_string( 'This user name is not available' )
+ username_taken = True
+ except:
+ try:
+ # Note that we're only checking if the usr name is >< 4 chars here...
+ self.check_page_for_string( 'User name must be at least 4 characters in length' )
+ invalid_username = True
+ except:
+ pass
+ return previously_created, username_taken, invalid_username
def create_user_with_info( self, email, password, username, user_info_forms, user_info_form_id, user_info_values ):
'''
This method registers a new user and also provides use info
@@ -815,7 +834,6 @@
self.visit_url( "%s/user/create?user_info_select=%i&admin_view=False&use_panels=False" % ( self.url, user_info_form_id ) )
else:
self.visit_url( "%s/user/create?admin_view=False&use_panels=False" % self.url )
- ##print self.write_temp_file( self.last_page() )
self.check_page_for_string( "Create account" )
tc.fv( "1", "email", email )
tc.fv( "1", "password", password )
@@ -906,20 +924,20 @@
self.visit_url( "%s/%s" % ( self.url, url ) )
self.check_page_for_string( 'Default history permissions have been changed.' )
self.home()
- def login( self, email='test(a)bx.psu.edu', password='testuser', username='admin-user', webapp='galaxy' ):
+ def login( self, email='test(a)bx.psu.edu', password='testuser', username='admin-user', webapp='galaxy', referer='' ):
# test(a)bx.psu.edu is configured as an admin user
- try:
- self.create( email=email, password=password, username=username, webapp=webapp )
- except:
- self.home()
+ previously_created, username_taken, invalid_username = \
+ self.create( email=email, password=password, username=username, webapp=webapp, referer=referer )
+ if previously_created:
+ # The acount has previously been created, so just login.
# HACK: don't use panels because late_javascripts() messes up the twill browser and it
# can't find form fields (and hence user can't be logged in).
self.visit_url( "%s/user/login?use_panels=False" % self.url )
tc.fv( '1', 'email', email )
+ tc.fv( '1', 'webapp', webapp )
+ tc.fv( '1', 'referer', referer )
tc.fv( '1', 'password', password )
- tc.submit( 'Login' )
- self.check_page_for_string( "now logged in as %s" %email )
- self.home()
+ tc.submit( 'login_button' )
def logout( self ):
self.home()
self.visit_page( "user/logout" )
@@ -1161,23 +1179,41 @@
# Dataset Security stuff
# Tests associated with users
- def create_new_account_as_admin( self, email='test4(a)bx.psu.edu', password='testuser', username='regular-user4' ):
+ def create_new_account_as_admin( self, email='test4(a)bx.psu.edu', password='testuser',
+ username='regular-user4', webapp='galaxy', referer='' ):
"""Create a new account for another user"""
+ # HACK: don't use panels because late_javascripts() messes up the twill browser and it
+ # can't find form fields (and hence user can't be logged in).
self.visit_url( "%s/user/create?admin_view=True" % self.url )
tc.fv( '1', 'email', email )
+ tc.fv( '1', 'webapp', webapp )
+ tc.fv( '1', 'referer', referer )
tc.fv( '1', 'password', password )
tc.fv( '1', 'confirm', password )
tc.fv( '1', 'username', username )
tc.submit( 'create_user_button' )
+ previously_created = False
+ username_taken = False
+ invalid_username = False
try:
self.check_page_for_string( "Created new user account" )
- previously_created = False
except:
- # May have created the account in a previous test run...
- self.check_page_for_string( "User with that email already exists" )
- previously_created = True
- self.home()
- return previously_created
+ try:
+ # May have created the account in a previous test run...
+ self.check_page_for_string( "User with that email already exists" )
+ previously_created = True
+ except:
+ try:
+ self.check_page_for_string( 'This user name is not available' )
+ username_taken = True
+ except:
+ try:
+ # Note that we're only checking if the usr name is >< 4 chars here...
+ self.check_page_for_string( 'User name must be at least 4 characters in length' )
+ invalid_username = True
+ except:
+ pass
+ return previously_created, username_taken, invalid_username
def reset_password_as_admin( self, user_id, password='testreset' ):
"""Reset a user password"""
self.home()
diff -r 72daa0d41d1b -r 3914645ecccb test/functional/test_admin_features.py
--- a/test/functional/test_admin_features.py Fri Apr 02 14:34:35 2010 -0400
+++ b/test/functional/test_admin_features.py Fri Apr 02 15:00:53 2010 -0400
@@ -24,7 +24,30 @@
# Logged in as admin_user
email = 'test3(a)bx.psu.edu'
password = 'testuser'
- previously_created = self.create_new_account_as_admin( email=email, password=password, username='regular-user3' )
+ # Test setting the user name to one that is already taken. Note that the account must not exist in order
+ # for this test to work as desired, so the email we're passing is important...
+ previously_created, username_taken, invalid_username = self.create_new_account_as_admin( email='diff(a)you.com',
+ password=password,
+ username='admin-user',
+ webapp='galaxy',
+ referer='' )
+ if not username_taken:
+ raise AssertionError, "The user name (%s) is already being used by another user, but no error was displayed" \
+ % 'admin-user'
+ # Test setting the user name to an invalid one. Note that the account must not exist in order
+ # for this test to work as desired, so the email we're passing is important...
+ previously_created, username_taken, invalid_username = self.create_new_account_as_admin( email='diff(a)you.com',
+ password=password,
+ username='h',
+ webapp='galaxy',
+ referer='' )
+ if not invalid_username:
+ raise AssertionError, "The user name (%s) is is invalid, but no error was displayed" % username
+ previously_created, username_taken, invalid_username = self.create_new_account_as_admin( email=email,
+ password=password,
+ username='regular-user3',
+ webapp='galaxy',
+ referer='' )
# Get the user object for later tests
global regular_user3
regular_user3 = get_user( email )
1
0
15 Apr '10
details: http://www.bx.psu.edu/hg/galaxy/rev/72daa0d41d1b
changeset: 3603:72daa0d41d1b
user: jeremy goecks <jeremy.goecks(a)emory.edu>
date: Fri Apr 02 14:34:35 2010 -0400
description:
Removed 'Shared Histories' from history options menu because it doesn't work and is redundant as users can view shared/accessible/published histories from 'Saved Histories'.
diffstat:
templates/root/index.mako | 3 ---
1 files changed, 0 insertions(+), 3 deletions(-)
diffs (13 lines):
diff -r b95a24c9187e -r 72daa0d41d1b templates/root/index.mako
--- a/templates/root/index.mako Fri Apr 02 14:23:55 2010 -0400
+++ b/templates/root/index.mako Fri Apr 02 14:34:35 2010 -0400
@@ -10,9 +10,6 @@
"Saved Histories": function() {
galaxy_main.location = "${h.url_for( controller='history', action='list')}";
},
- "Shared Histories": function() {
- galaxy_main.location = "${h.url_for( controller='history', action='list', operation='sharing' )}";
- },
"Histories Shared with Me": function() {
galaxy_main.location = "${h.url_for( controller='history', action='list_shared')}";
},
1
0
15 Apr '10
details: http://www.bx.psu.edu/hg/galaxy/rev/b95a24c9187e
changeset: 3602:b95a24c9187e
user: fubar: ross Lazarus at gmail period com
date: Fri Apr 02 14:23:55 2010 -0400
description:
Two small fixes for WGA/SNP tools needed so they work on test.
Remove bogus extra_ from file_path for output files - works on rgenetics.org but breaks on test - fixed
Need to create output extra_files_path in rgGRR.py
diffstat:
tools/rgenetics/rgGRR.py | 4 ++++
tools/rgenetics/rgGRR.xml | 2 +-
tools/rgenetics/rgfakePed.xml | 2 +-
3 files changed, 6 insertions(+), 2 deletions(-)
diffs (38 lines):
diff -r 6bbe3704b015 -r b95a24c9187e tools/rgenetics/rgGRR.py
--- a/tools/rgenetics/rgGRR.py Fri Apr 02 12:24:39 2010 -0400
+++ b/tools/rgenetics/rgGRR.py Fri Apr 02 14:23:55 2010 -0400
@@ -1037,6 +1037,10 @@
basename = sys.argv[2]
outhtml = sys.argv[3]
newfilepath = sys.argv[4]
+ try:
+ os.makedirs(newfilepath)
+ except:
+ pass
title = sys.argv[5].translate(ptran)
logfname = 'Log_%s.txt' % title
logpath = os.path.join(newfilepath,logfname) # log was a child - make part of html extra_files_path zoo
diff -r 6bbe3704b015 -r b95a24c9187e tools/rgenetics/rgGRR.xml
--- a/tools/rgenetics/rgGRR.xml Fri Apr 02 12:24:39 2010 -0400
+++ b/tools/rgenetics/rgGRR.xml Fri Apr 02 14:23:55 2010 -0400
@@ -3,7 +3,7 @@
<description>Pairwise Allele Sharing</description>
<command interpreter="python">
rgGRR.py $i.extra_files_path/$i.metadata.base_name "$i.metadata.base_name"
- '$out_file1' '$out_file1.extra_files_path' "$title1" '$n' '$Z'
+ '$out_file1' '$out_file1.files_path' "$title1" '$n' '$Z'
</command>
<inputs>
<param name="i" type="data" label="Genotype data file from your current history"
diff -r 6bbe3704b015 -r b95a24c9187e tools/rgenetics/rgfakePed.xml
--- a/tools/rgenetics/rgfakePed.xml Fri Apr 02 12:24:39 2010 -0400
+++ b/tools/rgenetics/rgfakePed.xml Fri Apr 02 14:23:55 2010 -0400
@@ -2,7 +2,7 @@
<description>for testing</description>
<code file="rgfakePed_code.py"/>
<command interpreter="python">rgfakePed.py --title '$title1'
- -o '$out_file1' -p '$out_file1.extra_files_path' -c '$ncases' -n '$ntotal'
+ -o '$out_file1' -p '$out_file1.files_path' -c '$ncases' -n '$ntotal'
-s '$nsnp' -w '$lowmaf' -v '$missingValue' -l '$outFormat'
-d '$mafdist' -m '$missingRate' -M '$mendelRate' </command>
<inputs>
1
0
15 Apr '10
details: http://www.bx.psu.edu/hg/galaxy/rev/6bbe3704b015
changeset: 3601:6bbe3704b015
user: jeremy goecks <jeremy.goecks(a)emory.edu>
date: Fri Apr 02 12:24:39 2010 -0400
description:
Fix value-entry bug in dbkey select input component. Bug reported by Assaf Gordon.
diffstat:
static/scripts/galaxy.base.js | 4 +++-
static/scripts/packed/galaxy.base.js | 2 +-
2 files changed, 4 insertions(+), 2 deletions(-)
diffs (24 lines):
diff -r 146eae852b97 -r 6bbe3704b015 static/scripts/galaxy.base.js
--- a/static/scripts/galaxy.base.js Fri Apr 02 11:10:23 2010 -0400
+++ b/static/scripts/galaxy.base.js Fri Apr 02 12:24:39 2010 -0400
@@ -146,9 +146,11 @@
return;
}
- // Set options and mapping.
+ // Set options and mapping. Mapping is (i) [from text to value] AND (ii) [from value to value]. This
+ // enables a user to type the value directly rather than select the text that represents the value.
dbkey_options.push( text );
dbkey_mapping[ text ] = value;
+ dbkey_mapping[ value ] = value;
// If this is the start value, set value of input element.
if ( value == start_value ) {
diff -r 146eae852b97 -r 6bbe3704b015 static/scripts/packed/galaxy.base.js
--- a/static/scripts/packed/galaxy.base.js Fri Apr 02 11:10:23 2010 -0400
+++ b/static/scripts/packed/galaxy.base.js Fri Apr 02 12:24:39 2010 -0400
@@ -1,1 +1,1 @@
-$.fn.makeAbsolute=function(a){return this.each(function(){var b=$(this);var c=b.position();b.css({position:"absolute",marginLeft:0,marginTop:0,top:c.top,left:c.left,right:$(window).width()-(c.left+b.width())});if(a){b.remove().appendTo("body")}})};function ensure_popup_helper(){if($("#popup-helper").length===0){$("<div id='popup-helper'/>").css({background:"white",opacity:0,zIndex:15000,position:"absolute",top:0,left:0,width:"100%",height:"100%"}).appendTo("body").hide()}}function attach_popupmenu(b,d){var a=function(){d.unbind().hide();$("#popup-helper").unbind("click.popupmenu").hide()};var c=function(g){$("#popup-helper").bind("click.popupmenu",a).show();d.click(a).css({left:0,top:-1000}).show();var f=g.pageX-d.width()/2;f=Math.min(f,$(document).scrollLeft()+$(window).width()-$(d).width()-20);f=Math.max(f,$(document).scrollLeft()+20);d.css({top:g.pageY-5,left:f});return false};$(b).click(c)}function make_popupmenu(c,b){ensure_popup_helper();var a=$("<ul id='"+c.attr("id"!
)+"-menu'></ul>");$.each(b,function(f,e){if(e){$("<li/>").html(f).click(e).appendTo(a)}else{$("<li class='head'/>").html(f).appendTo(a)}});var d=$("<div class='popmenu-wrapper'>");d.append(a).append("<div class='overlay-border'>").css("position","absolute").appendTo("body").hide();attach_popupmenu(c,d)}function make_popup_menus(){jQuery("div[popupmenu]").each(function(){var c={};$(this).find("a").each(function(){var b=$(this).attr("confirm"),d=$(this).attr("href"),e=$(this).attr("target");c[$(this).text()]=function(){if(!b||confirm(b)){var g=window;if(e=="_parent"){g=window.parent}else{if(e=="_top"){g=window.top}}g.location=d}}});var a=$("#"+$(this).attr("popupmenu"));make_popupmenu(a,c);$(this).remove();a.addClass("popup").show()})}function array_length(b){if(b.length){return b.length}var c=0;for(var a in b){c++}return c}function replace_dbkey_select(){var c=$("select[name=dbkey]");var d=c.attr("value");if(c.length!==0){var e=$("<input id='dbkey-input' type='text'></input>!
");e.attr("size",40);e.attr("name",c.attr("name"));e.click(function(){
var g=$(this).attr("value");$(this).attr("value","Loading...");$(this).showAllInCache();$(this).attr("value",g);$(this).select()});var b=[];var a={};c.children("option").each(function(){var h=$(this).text();var g=$(this).attr("value");if(g=="?"){return}b.push(h);a[h]=g;if(g==d){e.attr("value",h)}});if(e.attr("value")==""){e.attr("value","Click to Search or Select Build")}var f={selectFirst:false,autoFill:false,mustMatch:false,matchContains:true,max:1000,minChars:0,hideForLessThanMinChars:false};e.autocomplete(b,f);c.replaceWith(e);$("form").submit(function(){var i=$("#dbkey-input");if(i.length!==0){var h=i.attr("value");var g=a[h];if(g!==null&&g!==undefined){i.attr("value",g)}else{if(d!=""){i.attr("value",d)}else{i.attr("value","?")}}}})}}function async_save_text(d,f,e,a,c,h,i,g,b){if(c===undefined){c=30}if(i===undefined){i=4}$("#"+d).live("click",function(){if($("#renaming-active").length>0){return}var l=$("#"+f),k=l.text(),j;if(h){j=$("<textarea></textarea>").attr({rows:i,!
cols:c}).text(k)}else{j=$("<input type='text'></input>").attr({value:k,size:c})}j.attr("id","renaming-active");j.blur(function(){$(this).remove();l.show();if(b){b(j)}});j.keyup(function(n){if(n.keyCode===27){$(this).trigger("blur")}else{if(n.keyCode===13){var m={};m[a]=$(this).val();$(this).trigger("blur");$.ajax({url:e,data:m,error:function(){alert("Text editing for elt "+f+" failed")},success:function(o){l.text(o);if(b){b(j)}}})}}});if(g){g(j)}l.hide();j.insertAfter(l);j.focus();j.select();return})}$(document).ready(function(){$("a[confirm]").click(function(){return confirm($(this).attr("confirm"))});if($.fn.tipsy){$(".tooltip").tipsy({gravity:"s"})}make_popup_menus()});
\ No newline at end of file
+$.fn.makeAbsolute=function(a){return this.each(function(){var b=$(this);var c=b.position();b.css({position:"absolute",marginLeft:0,marginTop:0,top:c.top,left:c.left,right:$(window).width()-(c.left+b.width())});if(a){b.remove().appendTo("body")}})};function ensure_popup_helper(){if($("#popup-helper").length===0){$("<div id='popup-helper'/>").css({background:"white",opacity:0,zIndex:15000,position:"absolute",top:0,left:0,width:"100%",height:"100%"}).appendTo("body").hide()}}function attach_popupmenu(b,d){var a=function(){d.unbind().hide();$("#popup-helper").unbind("click.popupmenu").hide()};var c=function(g){$("#popup-helper").bind("click.popupmenu",a).show();d.click(a).css({left:0,top:-1000}).show();var f=g.pageX-d.width()/2;f=Math.min(f,$(document).scrollLeft()+$(window).width()-$(d).width()-20);f=Math.max(f,$(document).scrollLeft()+20);d.css({top:g.pageY-5,left:f});return false};$(b).click(c)}function make_popupmenu(c,b){ensure_popup_helper();var a=$("<ul id='"+c.attr("id"!
)+"-menu'></ul>");$.each(b,function(f,e){if(e){$("<li/>").html(f).click(e).appendTo(a)}else{$("<li class='head'/>").html(f).appendTo(a)}});var d=$("<div class='popmenu-wrapper'>");d.append(a).append("<div class='overlay-border'>").css("position","absolute").appendTo("body").hide();attach_popupmenu(c,d)}function make_popup_menus(){jQuery("div[popupmenu]").each(function(){var c={};$(this).find("a").each(function(){var b=$(this).attr("confirm"),d=$(this).attr("href"),e=$(this).attr("target");c[$(this).text()]=function(){if(!b||confirm(b)){var g=window;if(e=="_parent"){g=window.parent}else{if(e=="_top"){g=window.top}}g.location=d}}});var a=$("#"+$(this).attr("popupmenu"));make_popupmenu(a,c);$(this).remove();a.addClass("popup").show()})}function array_length(b){if(b.length){return b.length}var c=0;for(var a in b){c++}return c}function replace_dbkey_select(){var c=$("select[name=dbkey]");var d=c.attr("value");if(c.length!==0){var e=$("<input id='dbkey-input' type='text'></input>!
");e.attr("size",40);e.attr("name",c.attr("name"));e.click(function(){
var g=$(this).attr("value");$(this).attr("value","Loading...");$(this).showAllInCache();$(this).attr("value",g);$(this).select()});var b=[];var a={};c.children("option").each(function(){var h=$(this).text();var g=$(this).attr("value");if(g=="?"){return}b.push(h);a[h]=g;a[g]=g;if(g==d){e.attr("value",h)}});if(e.attr("value")==""){e.attr("value","Click to Search or Select Build")}var f={selectFirst:false,autoFill:false,mustMatch:false,matchContains:true,max:1000,minChars:0,hideForLessThanMinChars:false};e.autocomplete(b,f);c.replaceWith(e);$("form").submit(function(){var i=$("#dbkey-input");if(i.length!==0){var h=i.attr("value");var g=a[h];if(g!==null&&g!==undefined){i.attr("value",g)}else{if(d!=""){i.attr("value",d)}else{i.attr("value","?")}}}})}}function async_save_text(d,f,e,a,c,h,i,g,b){if(c===undefined){c=30}if(i===undefined){i=4}$("#"+d).live("click",function(){if($("#renaming-active").length>0){return}var l=$("#"+f),k=l.text(),j;if(h){j=$("<textarea></textarea>").attr({!
rows:i,cols:c}).text(k)}else{j=$("<input type='text'></input>").attr({value:k,size:c})}j.attr("id","renaming-active");j.blur(function(){$(this).remove();l.show();if(b){b(j)}});j.keyup(function(n){if(n.keyCode===27){$(this).trigger("blur")}else{if(n.keyCode===13){var m={};m[a]=$(this).val();$(this).trigger("blur");$.ajax({url:e,data:m,error:function(){alert("Text editing for elt "+f+" failed")},success:function(o){l.text(o);if(b){b(j)}}})}}});if(g){g(j)}l.hide();j.insertAfter(l);j.focus();j.select();return})}$(document).ready(function(){$("a[confirm]").click(function(){return confirm($(this).attr("confirm"))});if($.fn.tipsy){$(".tooltip").tipsy({gravity:"s"})}make_popup_menus()});
\ No newline at end of file
1
0
15 Apr '10
details: http://www.bx.psu.edu/hg/galaxy/rev/146eae852b97
changeset: 3600:146eae852b97
user: jeremy goecks <jeremy.goecks(a)emory.edu>
date: Fri Apr 02 11:10:23 2010 -0400
description:
Make visualizations (a) importable and (b) embeddable in pages. Still need to add code for displaying visualizations in pages.
diffstat:
lib/galaxy/web/base/controller.py | 2 +-
lib/galaxy/web/controllers/page.py | 35 +++++++++++++++-
lib/galaxy/web/controllers/visualization.py | 63 ++++++++++++++++++++++++++++-
lib/galaxy/web/controllers/workflow.py | 4 -
static/june_2007_style/blue/embed_item.css | 2 +
static/june_2007_style/embed_item.css.tmpl | 10 ++++
templates/page/editor.mako | 32 ++++++++++++--
templates/visualization/embed.mako | 4 +
8 files changed, 140 insertions(+), 12 deletions(-)
diffs (337 lines):
diff -r b07142ce9dbb -r 146eae852b97 lib/galaxy/web/base/controller.py
--- a/lib/galaxy/web/base/controller.py Thu Apr 01 22:48:57 2010 -0400
+++ b/lib/galaxy/web/base/controller.py Fri Apr 02 11:10:23 2010 -0400
@@ -178,7 +178,7 @@
if not visualization:
error( "Visualization not found" )
else:
- return self.security_check( trans.get_user(), stored, check_ownership, check_accessible )
+ return self.security_check( trans.get_user(), visualization, check_ownership, check_accessible )
class UsesStoredWorkflow( SharableItemSecurity ):
""" Mixin for controllers that use StoredWorkflow objects. """
diff -r b07142ce9dbb -r 146eae852b97 lib/galaxy/web/controllers/page.py
--- a/lib/galaxy/web/controllers/page.py Thu Apr 01 22:48:57 2010 -0400
+++ b/lib/galaxy/web/controllers/page.py Fri Apr 02 11:10:23 2010 -0400
@@ -186,6 +186,25 @@
key="free-text-search", visible=False, filterable="standard" )
)
+class VisualizationSelectionGrid( ItemSelectionGrid ):
+ """ Grid for selecting visualizations. """
+ # Grid definition.
+ title = "Saved Visualizations"
+ model_class = model.Visualization
+ columns = [
+ grids.TextColumn( "Title", key="title", model_class=model.Visualization, filterable="advanced" ),
+ grids.TextColumn( "Type", key="type", model_class=model.Visualization ),
+ grids.IndividualTagsColumn( "Tags", "tags", model.Visualization, model.VisualizationTagAssociation, filterable="advanced", grid_name="VisualizationListGrid" ),
+ grids.SharingStatusColumn( "Sharing", key="sharing", model_class=model.Visualization, filterable="advanced", sortable=False ),
+ grids.GridColumn( "Last Updated", key="update_time", format=time_ago ),
+ ]
+ columns.append(
+ grids.MulticolFilterColumn(
+ "Search",
+ cols_to_filter=[ columns[0], columns[2] ],
+ key="free-text-search", visible=False, filterable="standard" )
+ )
+
class _PageContentProcessor( _BaseHTMLProcessor ):
""" Processes page content to produce HTML that is suitable for display. For now, processor renders embedded objects. """
@@ -249,7 +268,7 @@
# Default behavior:
_BaseHTMLProcessor.unknown_endtag( self, tag )
-class PageController( BaseController, Sharable, UsesAnnotations, UsesHistory, UsesStoredWorkflow, UsesHistoryDatasetAssociation ):
+class PageController( BaseController, Sharable, UsesAnnotations, UsesHistory, UsesStoredWorkflow, UsesHistoryDatasetAssociation, UsesVisualization ):
_page_list = PageListGrid()
_all_published_list = PageAllPublishedGrid()
@@ -257,6 +276,7 @@
_workflow_selection_grid = WorkflowSelectionGrid()
_datasets_selection_grid = HistoryDatasetAssociationSelectionGrid()
_page_selection_grid = PageSelectionGrid()
+ _visualization_selection_grid = VisualizationSelectionGrid()
@web.expose
@web.require_login()
@@ -626,6 +646,13 @@
return self._workflow_selection_grid( trans, **kwargs )
@web.expose
+ @web.require_login("select a visualization from saved visualizations")
+ def list_visualizations_for_selection( self, trans, **kwargs ):
+ """ Returns HTML that enables a user to select one or more visualizations. """
+ # Render the list view
+ return self._visualization_selection_grid( trans, **kwargs )
+
+ @web.expose
@web.require_login("select a page from saved pages")
def list_pages_for_selection( self, trans, **kwargs ):
""" Returns HTML that enables a user to select one or more pages. """
@@ -685,6 +712,12 @@
if workflow:
self.get_stored_workflow_steps( trans, workflow )
return trans.fill_template( "workflow/embed.mako", item=workflow, item_data=workflow.latest_workflow.steps )
+ elif item_class == model.Visualization:
+ visualization = self.get_visualization( trans, item_id, False, True )
+ visualization.annotation = self.get_item_annotation_str( trans.sa_session, visualization.user, visualization )
+ if visualization:
+ return trans.fill_template( "visualization/embed.mako", item=visualization, item_data=None )
+
elif item_class == model.Page:
pass
diff -r b07142ce9dbb -r 146eae852b97 lib/galaxy/web/controllers/visualization.py
--- a/lib/galaxy/web/controllers/visualization.py Thu Apr 01 22:48:57 2010 -0400
+++ b/lib/galaxy/web/controllers/visualization.py Fri Apr 02 11:10:23 2010 -0400
@@ -73,6 +73,12 @@
else:
# Render grid wrapped in panels
return trans.fill_template( "visualization/list_published.mako", grid=grid )
+
+ @web.expose
+ @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 )
@web.expose
@web.require_login( "use Galaxy visualizations", use_panels=True )
@@ -110,6 +116,61 @@
visualization.slug = new_slug
trans.sa_session.flush()
return visualization.slug
+
+ @web.expose
+ @web.require_login( "use Galaxy visualizations" )
+ def set_accessible_async( self, trans, id=None, accessible=False ):
+ """ Set visualization's importable attribute and slug. """
+ visualization = self.get_visualization( trans, id )
+
+ # Only set if importable value would change; this prevents a change in the update_time unless attribute really changed.
+ importable = accessible in ['True', 'true', 't', 'T'];
+ if visualization and visualization.importable != importable:
+ if importable:
+ self._make_item_accessible( trans.sa_session, visualization )
+ else:
+ visualization.importable = importable
+ trans.sa_session.flush()
+
+ return
+
+ @web.expose
+ @web.require_login( "share Galaxy visualizations" )
+ def imp( self, trans, id ):
+ """ Import a visualization into user's workspace. """
+ # Set referer message.
+ referer = trans.request.referer
+ if referer is not "":
+ referer_message = "<a href='%s'>return to the previous page</a>" % referer
+ else:
+ referer_message = "<a href='%s'>go to Galaxy's start page</a>" % url_for( '/' )
+
+ # Do import.
+ session = trans.sa_session
+ 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?
+ imported_visualization = model.Visualization()
+ imported_visualization.title = "imported: " + visualization.title
+ imported_visualization.latest_revision = visualization.latest_revision
+ imported_visualization.user = trans.user
+ # Save new visualization.
+ session = trans.sa_session
+ session.add( imported_visualization )
+ session.flush()
+
+ # Redirect to load galaxy frames.
+ return trans.show_ok_message(
+ message="""Visualization "%s" has been imported. <br>You can <a href="%s">start using this visualization</a> or %s."""
+ % ( visualization.title, web.url_for( controller='visualization' ), referer_message ), use_panels=True )
+
@web.expose
@web.require_login( "share Galaxy visualizations" )
@@ -214,7 +275,7 @@
@web.require_login("get item content asynchronously")
def get_item_content_async( self, trans, id ):
""" Returns item content in HTML format. """
- pass
+ return "TODO: visualization content"
@web.expose
@web.require_login( "create visualizations" )
diff -r b07142ce9dbb -r 146eae852b97 lib/galaxy/web/controllers/workflow.py
--- a/lib/galaxy/web/controllers/workflow.py Thu Apr 01 22:48:57 2010 -0400
+++ b/lib/galaxy/web/controllers/workflow.py Fri Apr 02 11:10:23 2010 -0400
@@ -294,10 +294,6 @@
return trans.show_error_message( "You can't import this workflow because you own it.<br>You can %s" % referer_message, use_panels=True )
elif stored.deleted:
return trans.show_error_message( "You can't import this workflow because it has been deleted.<br>You can %s" % referer_message, use_panels=True )
- elif session.query( model.StoredWorkflowUserShareAssociation ) \
- .filter_by( user=trans.user, stored_workflow=stored ).count() > 0:
- # TODO: this is only reasonable as long as import creates a sharing relation.
- return trans.show_error_message( "You can't import this workflow because it is already shared with you.<br>You can %s" % referer_message, use_panels=True )
else:
# Create imported workflow via copy.
imported_stored = model.StoredWorkflow()
diff -r b07142ce9dbb -r 146eae852b97 static/june_2007_style/blue/embed_item.css
--- a/static/june_2007_style/blue/embed_item.css Thu Apr 01 22:48:57 2010 -0400
+++ b/static/june_2007_style/blue/embed_item.css Fri Apr 02 11:10:23 2010 -0400
@@ -6,6 +6,8 @@
.embedded-item.dataset p{background:#CFC no-repeat 2px 2px;margin-top:0;margin-bottom:0;}
.embedded-item.workflow{background-color:#FBDDB3}
.embedded-item.workflow p{background:#FBDDB3 no-repeat 2px 2px;margin-top:0;margin-bottom:0;}
+.embedded-item.visualization{background-color:#BBBBBB}
+.embedded-item.visualization p{background:#BBBBBB no-repeat 2px 2px;margin-top:0;margin-bottom:0;}
.embedded-item.placeholder{}
.embedded-item .item-content{max-height:25em;overflow:auto;display:none;}
.embedded-item .title{vertical-align:top;text-align:center;font-weight:bold;}
diff -r b07142ce9dbb -r 146eae852b97 static/june_2007_style/embed_item.css.tmpl
--- a/static/june_2007_style/embed_item.css.tmpl Thu Apr 01 22:48:57 2010 -0400
+++ b/static/june_2007_style/embed_item.css.tmpl Fri Apr 02 11:10:23 2010 -0400
@@ -41,6 +41,16 @@
margin-bottom:0;
}
+.embedded-item.visualization {
+ background-color:#BBBBBB
+}
+
+.embedded-item.visualization p {
+ background:#BBBBBB no-repeat 2px 2px;
+ margin-top:0;
+ margin-bottom:0;
+}
+
.embedded-item.placeholder{}
.embedded-item .item-content {
diff -r b07142ce9dbb -r 146eae852b97 templates/page/editor.mako
--- a/templates/page/editor.mako Thu Apr 01 22:48:57 2010 -0400
+++ b/templates/page/editor.mako Fri Apr 02 11:10:23 2010 -0400
@@ -34,18 +34,21 @@
ITEM_DATASET : "item_dataset",
ITEM_WORKFLOW : "item_workflow",
ITEM_PAGE : "item_page",
+ ITEM_VISUALIZATION : "item_visualization",
// Link dialogs.
DIALOG_HISTORY_LINK : "link_history",
DIALOG_DATASET_LINK : "link_dataset",
DIALOG_WORKFLOW_LINK : "link_workflow",
DIALOG_PAGE_LINK : "link_page",
+ DIALOG_VISUALIZATION_LINK : "link_visualization",
// Embed dialogs.
DIALOG_EMBED_HISTORY : "embed_history",
DIALOG_EMBED_DATASET : "embed_dataset",
DIALOG_EMBED_WORKFLOW : "embed_workflow",
DIALOG_EMBED_PAGE : "embed_page",
+ DIALOG_EMBED_VISUALIZATION : "embed_visualization",
// Annotation dialogs.
DIALOG_HISTORY_ANNOTATE : "history_annotate",
@@ -101,6 +104,11 @@
item_plural = "Pages";
item_controller = "page";
item_class = "Page";
+ case( Galaxy.ITEM_VISUALIZATION ):
+ item_singular = "Visualization";
+ item_plural = "Visualizations";
+ item_controller = "visualization";
+ item_class = "Visualization";
break;
}
@@ -316,9 +324,10 @@
);
}
- // INSERT "GALAXY ITEM" (HISTORY, DATASET, WORKFLOW, PAGE) LINK DIALOG
+ // INSERT "GALAXY ITEM" LINK DIALOG
if ( dialogType == Galaxy.DIALOG_HISTORY_LINK || dialogType == Galaxy.DIALOG_DATASET_LINK ||
- dialogType == Galaxy.DIALOG_WORKFLOW_LINK || dialogType == Galaxy.DIALOG_PAGE_LINK ) {
+ dialogType == Galaxy.DIALOG_WORKFLOW_LINK || dialogType == Galaxy.DIALOG_PAGE_LINK ||
+ dialogType == Galaxy.DIALOG_VISUALIZATION_LINK ) {
// Based on item type, set useful vars.
var item_info;
switch(dialogType)
@@ -335,6 +344,9 @@
case(Galaxy.DIALOG_PAGE_LINK):
item_info = get_item_info(Galaxy.ITEM_PAGE);
break;
+ case(Galaxy.DIALOG_VISUALIZATION_LINK):
+ item_info = get_item_info(Galaxy.ITEM_VISUALIZATION);
+ break;
}
$.ajax(
@@ -405,7 +417,7 @@
});
}
// EMBED GALAXY OBJECT DIALOGS
- if ( dialogType == Galaxy.DIALOG_EMBED_HISTORY || dialogType == Galaxy.DIALOG_EMBED_DATASET || dialogType == Galaxy.DIALOG_EMBED_WORKFLOW || dialogType == Galaxy.DIALOG_EMBED_PAGE ) {
+ if ( dialogType == Galaxy.DIALOG_EMBED_HISTORY || dialogType == Galaxy.DIALOG_EMBED_DATASET || dialogType == Galaxy.DIALOG_EMBED_WORKFLOW || dialogType == Galaxy.DIALOG_EMBED_PAGE || dialogType == Galaxy.DIALOG_EMBED_VISUALIZATION ) {
// Based on item type, set useful vars.
var item_info;
switch(dialogType)
@@ -422,6 +434,9 @@
case(Galaxy.DIALOG_EMBED_PAGE):
item_info = get_item_info(Galaxy.ITEM_PAGE);
break;
+ case(Galaxy.DIALOG_EMBED_VISUALIZATION):
+ item_info = get_item_info(Galaxy.ITEM_VISUALIZATION);
+ break;
}
$.ajax(
@@ -432,7 +447,8 @@
success: function(list_html)
{
// Can make histories, workflows importable; cannot make datasets importable.
- if (dialogType == Galaxy.DIALOG_EMBED_HISTORY || dialogType == Galaxy.DIALOG_EMBED_WORKFLOW)
+ if (dialogType == Galaxy.DIALOG_EMBED_HISTORY || dialogType == Galaxy.DIALOG_EMBED_WORKFLOW
+ || dialogType == Galaxy.DIALOG_EMBED_VISUALIZATION)
list_html = list_html + "<div><input id='make-importable' type='checkbox' checked/>" +
"Make the selected " + item_info.plural.toLowerCase() + " accessible so that they can viewed by everyone.</div>";
show_modal(
@@ -687,7 +703,10 @@
},
"Insert Page Link": function() {
editor.dialog(Galaxy.DIALOG_PAGE_LINK);
- }
+ },
+ "Insert Visualization Link": function() {
+ editor.dialog(Galaxy.DIALOG_VISUALIZATION_LINK);
+ },
});
//
@@ -709,6 +728,9 @@
"Embed Workflow": function() {
editor.dialog(Galaxy.DIALOG_EMBED_WORKFLOW);
},
+ "Embed Visualization": function() {
+ editor.dialog(Galaxy.DIALOG_EMBED_VISUALIZATION);
+ },
##"Embed Page": function() {
## editor.dialog(Galaxy.DIALOG_EMBED_PAGE);
##}
diff -r b07142ce9dbb -r 146eae852b97 templates/visualization/embed.mako
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/visualization/embed.mako Fri Apr 02 11:10:23 2010 -0400
@@ -0,0 +1,4 @@
+<%inherit file="/embed_base.mako"/>
+
+<%def name="render_summary_content( workflow, steps )">
+</%def>
1
0
15 Apr '10
details: http://www.bx.psu.edu/hg/galaxy/rev/b07142ce9dbb
changeset: 3599:b07142ce9dbb
user: Kanwei Li <kanwei(a)gmail.com>
date: Thu Apr 01 22:48:57 2010 -0400
description:
New tool to select N random lines from a file/dataset. Closes #238
diffstat:
tool_conf.xml.sample | 1 +
tools/filters/randomlines.py | 33 +++++++++++++++++++++++++++++++++
tools/filters/randomlines.xml | 42 ++++++++++++++++++++++++++++++++++++++++++
3 files changed, 76 insertions(+), 0 deletions(-)
diffs (94 lines):
diff -r 9f7d7e900cdf -r b07142ce9dbb tool_conf.xml.sample
--- a/tool_conf.xml.sample Thu Apr 01 20:36:31 2010 -0400
+++ b/tool_conf.xml.sample Thu Apr 01 22:48:57 2010 -0400
@@ -46,6 +46,7 @@
<tool file="filters/changeCase.xml" />
<tool file="filters/pasteWrapper.xml" />
<tool file="filters/remove_beginning.xml" />
+ <tool file="filters/randomlines.xml" />
<tool file="filters/headWrapper.xml" />
<tool file="filters/tailWrapper.xml" />
<tool file="filters/trimmer.xml" />
diff -r 9f7d7e900cdf -r b07142ce9dbb tools/filters/randomlines.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/filters/randomlines.py Thu Apr 01 22:48:57 2010 -0400
@@ -0,0 +1,33 @@
+#!/usr/bin/env python
+# Kanwei Li, 2010
+# Selects N random lines from a file and outputs to another file
+
+import random, sys
+
+def main():
+ infile = open(sys.argv[1], 'r')
+ total_lines = int(sys.argv[2])
+
+ if total_lines < 1:
+ sys.stderr.write( "Must select at least one line." )
+ sys.exit()
+
+ kept = []
+ n = 0
+ for line in infile:
+ line = line.rstrip("\n")
+ n += 1
+ if (n <= total_lines):
+ kept.append(line)
+ elif random.randint(1, n) <= total_lines:
+ kept.pop(random.randint(0, total_lines-1))
+ kept.append(line)
+
+ if n < total_lines:
+ sys.stderr.write( "Error: asked to select more lines than there were in the file." )
+ sys.exit()
+
+ open(sys.argv[3], 'w').write( "\n".join(kept) )
+
+if __name__ == "__main__":
+ main()
diff -r 9f7d7e900cdf -r b07142ce9dbb tools/filters/randomlines.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/filters/randomlines.xml Thu Apr 01 22:48:57 2010 -0400
@@ -0,0 +1,42 @@
+<tool id="random_lines1" name="Select random lines">
+ <description>from a file</description>
+ <command interpreter="python">randomlines.py $input $num_lines $out_file1</command>
+ <inputs>
+ <param name="num_lines" size="5" type="integer" value="1" label="Randomly select" help="lines"/>
+ <param format="txt" name="input" type="data" label="from"/>
+ </inputs>
+ <outputs>
+ <data format="input" name="out_file1" metadata_source="input"/>
+ </outputs>
+ <tests>
+ <test>
+ <param name="num_lines" value="65"/>
+ <param name="input" value="1.bed"/>
+ <output name="out_file1" file="1.bed"/>
+ </test>
+ </tests>
+ <help>
+
+**What it does**
+
+This tool selects N random lines from a file, with no repeats, and preserving ordering.
+
+-----
+
+**Example**
+
+Input File::
+
+ chr7 56632 56652 D17003_CTCF_R6 310 +
+ chr7 56736 56756 D17003_CTCF_R7 354 +
+ chr7 56761 56781 D17003_CTCF_R4 220 +
+ chr7 56772 56792 D17003_CTCF_R7 372 +
+ chr7 56775 56795 D17003_CTCF_R4 207 +
+
+Selecting 2 random lines might return this::
+
+ chr7 56736 56756 D17003_CTCF_R7 354 +
+ chr7 56775 56795 D17003_CTCF_R4 207 +
+
+ </help>
+</tool>
1
0
details: http://www.bx.psu.edu/hg/galaxy/rev/9f7d7e900cdf
changeset: 3598:9f7d7e900cdf
user: Kanwei Li <kanwei(a)gmail.com>
date: Thu Apr 01 20:36:31 2010 -0400
description:
Sync hashbangs
diffstat:
lib/galaxy/datatypes/converters/fasta_to_tabular_converter.py | 2 +-
lib/galaxy/datatypes/converters/fastqsolexa_to_fasta_converter.py | 2 +-
lib/galaxy/datatypes/converters/fastqsolexa_to_qual_converter.py | 2 +-
scripts/check_eggs.py | 2 +-
scripts/galaxy_messaging/server/daemon.py | 2 +-
scripts/galaxy_messaging/server/data_transfer.py | 2 +-
scripts/metagenomics/convert_title.py | 2 +-
scripts/tools/re_escape_output.py | 2 +-
tools/fasta_tools/fasta_compute_length.py | 2 +-
tools/fasta_tools/fasta_concatenate_by_species.py | 2 +-
tools/fasta_tools/fasta_filter_by_length.py | 2 +-
tools/fasta_tools/fasta_to_tabular.py | 2 +-
tools/metag_tools/blat_coverage_report.py | 2 +-
tools/metag_tools/blat_mapping.py | 2 +-
tools/metag_tools/blat_wrapper.py | 2 +-
tools/metag_tools/convert_SOLiD_color2nuc.py | 2 +-
tools/metag_tools/fastqsolexa_to_fasta_qual.py | 2 +-
tools/metag_tools/mapping_to_ucsc.py | 2 +-
tools/metag_tools/megablast_wrapper.py | 2 +-
tools/metag_tools/megablast_xml_parser.py | 2 +-
tools/metag_tools/rmap_wrapper.py | 2 +-
tools/metag_tools/rmapq_wrapper.py | 2 +-
tools/metag_tools/short_reads_figure_high_quality_length.py | 2 +-
tools/metag_tools/short_reads_figure_score.py | 2 +-
tools/metag_tools/short_reads_trim_seq.py | 2 +-
tools/metag_tools/shrimp_color_wrapper.py | 2 +-
tools/metag_tools/shrimp_wrapper.py | 2 +-
tools/metag_tools/split_paired_reads.py | 2 +-
tools/new_operations/get_flanks.py | 2 +-
tools/next_gen_conversion/fastq_conversions.py | 2 +-
tools/next_gen_conversion/solid_to_fastq.py | 2 +-
tools/regVariation/getIndels.py | 2 +-
tools/regVariation/maf_cpg_filter.py | 2 +-
tools/regVariation/quality_filter.py | 2 +-
tools/regVariation/substitution_rates.py | 2 +-
tools/regVariation/substitutions.py | 2 +-
tools/regVariation/windowSplitter.py | 2 +-
tools/samtools/pileup_interval.py | 2 +-
tools/samtools/sam_merge.py | 2 +-
tools/samtools/sam_pileup.py | 2 +-
tools/samtools/sam_to_bam.py | 2 +-
tools/solid_tools/maq_cs_wrapper.py | 2 +-
tools/solid_tools/solid_qual_stats.py | 2 +-
tools/sr_mapping/bowtie_wrapper.py | 2 +-
tools/sr_mapping/bwa_wrapper.py | 2 +-
tools/sr_mapping/lastz_paired_reads_wrapper.py | 2 +-
tools/sr_mapping/lastz_wrapper.py | 2 +-
tools/stats/gsummary.py | 2 +-
tools/tophat/tophat_wrapper.py | 2 +-
49 files changed, 49 insertions(+), 49 deletions(-)
diffs (441 lines):
diff -r 8457a6f3214a -r 9f7d7e900cdf lib/galaxy/datatypes/converters/fasta_to_tabular_converter.py
--- a/lib/galaxy/datatypes/converters/fasta_to_tabular_converter.py Thu Apr 01 16:02:19 2010 -0400
+++ b/lib/galaxy/datatypes/converters/fasta_to_tabular_converter.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
# This code exists in 2 places: ~/datatypes/converters and ~/tools/fasta_tools
"""
Input: fasta, minimal length, maximal length
diff -r 8457a6f3214a -r 9f7d7e900cdf lib/galaxy/datatypes/converters/fastqsolexa_to_fasta_converter.py
--- a/lib/galaxy/datatypes/converters/fastqsolexa_to_fasta_converter.py Thu Apr 01 16:02:19 2010 -0400
+++ b/lib/galaxy/datatypes/converters/fastqsolexa_to_fasta_converter.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
convert fastqsolexa file to separated sequence and quality files.
diff -r 8457a6f3214a -r 9f7d7e900cdf lib/galaxy/datatypes/converters/fastqsolexa_to_qual_converter.py
--- a/lib/galaxy/datatypes/converters/fastqsolexa_to_qual_converter.py Thu Apr 01 16:02:19 2010 -0400
+++ b/lib/galaxy/datatypes/converters/fastqsolexa_to_qual_converter.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
convert fastqsolexa file to separated sequence and quality files.
diff -r 8457a6f3214a -r 9f7d7e900cdf scripts/check_eggs.py
--- a/scripts/check_eggs.py Thu Apr 01 16:02:19 2010 -0400
+++ b/scripts/check_eggs.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
usage: check_eggs.py
"""
diff -r 8457a6f3214a -r 9f7d7e900cdf scripts/galaxy_messaging/server/daemon.py
--- a/scripts/galaxy_messaging/server/daemon.py Thu Apr 01 16:02:19 2010 -0400
+++ b/scripts/galaxy_messaging/server/daemon.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
"""
Data Transfer Script Daemon
diff -r 8457a6f3214a -r 9f7d7e900cdf scripts/galaxy_messaging/server/data_transfer.py
--- a/scripts/galaxy_messaging/server/data_transfer.py Thu Apr 01 16:02:19 2010 -0400
+++ b/scripts/galaxy_messaging/server/data_transfer.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
"""
Data Transfer Script: Sequencer to Galaxy
diff -r 8457a6f3214a -r 9f7d7e900cdf scripts/metagenomics/convert_title.py
--- a/scripts/metagenomics/convert_title.py Thu Apr 01 16:02:19 2010 -0400
+++ b/scripts/metagenomics/convert_title.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
convert nt and wgs data (fasta format) to giNumber_seqLen
diff -r 8457a6f3214a -r 9f7d7e900cdf scripts/tools/re_escape_output.py
--- a/scripts/tools/re_escape_output.py Thu Apr 01 16:02:19 2010 -0400
+++ b/scripts/tools/re_escape_output.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
Escapes a file into a form suitable for use with tool tests using re_match or re_match_multiline (when -m/--multiline option is used)
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/fasta_tools/fasta_compute_length.py
--- a/tools/fasta_tools/fasta_compute_length.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/fasta_tools/fasta_compute_length.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
Input: fasta, int
Output: tabular
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/fasta_tools/fasta_concatenate_by_species.py
--- a/tools/fasta_tools/fasta_concatenate_by_species.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/fasta_tools/fasta_concatenate_by_species.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
#Dan Blankenberg
"""
Takes a Multiple Alignment FASTA file and concatenates
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/fasta_tools/fasta_filter_by_length.py
--- a/tools/fasta_tools/fasta_filter_by_length.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/fasta_tools/fasta_filter_by_length.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
Input: fasta, minimal length, maximal length
Output: fasta
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/fasta_tools/fasta_to_tabular.py
--- a/tools/fasta_tools/fasta_to_tabular.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/fasta_tools/fasta_to_tabular.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
# This code exists in 2 places: ~/datatypes/converters and ~/tools/fasta_tools
"""
Input: fasta, int
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/metag_tools/blat_coverage_report.py
--- a/tools/metag_tools/blat_coverage_report.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/metag_tools/blat_coverage_report.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
import os, sys
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/metag_tools/blat_mapping.py
--- a/tools/metag_tools/blat_mapping.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/metag_tools/blat_mapping.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
import os, sys
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/metag_tools/blat_wrapper.py
--- a/tools/metag_tools/blat_wrapper.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/metag_tools/blat_wrapper.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
import os, sys, tempfile
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/metag_tools/convert_SOLiD_color2nuc.py
--- a/tools/metag_tools/convert_SOLiD_color2nuc.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/metag_tools/convert_SOLiD_color2nuc.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
convert SOLiD calor-base data to nucleotide sequence
example: T011213122200221123032111221021210131332222101
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/metag_tools/fastqsolexa_to_fasta_qual.py
--- a/tools/metag_tools/fastqsolexa_to_fasta_qual.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/metag_tools/fastqsolexa_to_fasta_qual.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
convert fastqsolexa file to separated sequence and quality files.
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/metag_tools/mapping_to_ucsc.py
--- a/tools/metag_tools/mapping_to_ucsc.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/metag_tools/mapping_to_ucsc.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
from galaxy import eggs
import sys, tempfile, os
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/metag_tools/megablast_wrapper.py
--- a/tools/metag_tools/megablast_wrapper.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/metag_tools/megablast_wrapper.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
run megablast for metagenomics data
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/metag_tools/megablast_xml_parser.py
--- a/tools/metag_tools/megablast_xml_parser.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/metag_tools/megablast_xml_parser.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
import sys, os, re
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/metag_tools/rmap_wrapper.py
--- a/tools/metag_tools/rmap_wrapper.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/metag_tools/rmap_wrapper.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
import os, sys, tempfile
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/metag_tools/rmapq_wrapper.py
--- a/tools/metag_tools/rmapq_wrapper.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/metag_tools/rmapq_wrapper.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
import os, sys, tempfile
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/metag_tools/short_reads_figure_high_quality_length.py
--- a/tools/metag_tools/short_reads_figure_high_quality_length.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/metag_tools/short_reads_figure_high_quality_length.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
import os, sys, math, tempfile, zipfile, re
from rpy import *
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/metag_tools/short_reads_figure_score.py
--- a/tools/metag_tools/short_reads_figure_score.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/metag_tools/short_reads_figure_score.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
boxplot:
- box: first quartile and third quartile
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/metag_tools/short_reads_trim_seq.py
--- a/tools/metag_tools/short_reads_trim_seq.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/metag_tools/short_reads_trim_seq.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
trim reads based on the quality scores
input: read file and quality score file
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/metag_tools/shrimp_color_wrapper.py
--- a/tools/metag_tools/shrimp_color_wrapper.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/metag_tools/shrimp_color_wrapper.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
SHRiMP wrapper : Color space
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/metag_tools/shrimp_wrapper.py
--- a/tools/metag_tools/shrimp_wrapper.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/metag_tools/shrimp_wrapper.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
TODO
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/metag_tools/split_paired_reads.py
--- a/tools/metag_tools/split_paired_reads.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/metag_tools/split_paired_reads.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
Split fixed length paired end reads
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/new_operations/get_flanks.py
--- a/tools/new_operations/get_flanks.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/new_operations/get_flanks.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
#Done by: Guru
"""
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/next_gen_conversion/fastq_conversions.py
--- a/tools/next_gen_conversion/fastq_conversions.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/next_gen_conversion/fastq_conversions.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
Performs various conversions around Sanger FASTQ data
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/next_gen_conversion/solid_to_fastq.py
--- a/tools/next_gen_conversion/solid_to_fastq.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/next_gen_conversion/solid_to_fastq.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
Converts SOLiD data to Sanger FASTQ format.
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/regVariation/getIndels.py
--- a/tools/regVariation/getIndels.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/regVariation/getIndels.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
"""
Estimate INDELs for pair-wise alignments.
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/regVariation/maf_cpg_filter.py
--- a/tools/regVariation/maf_cpg_filter.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/regVariation/maf_cpg_filter.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
#Guruprasad Ananda
#Adapted from bx/scripts/maf_mask_cpg.py
"""
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/regVariation/quality_filter.py
--- a/tools/regVariation/quality_filter.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/regVariation/quality_filter.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
#Guruprasad Ananda
"""
Filter based on nucleotide quality (PHRED score).
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/regVariation/substitution_rates.py
--- a/tools/regVariation/substitution_rates.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/regVariation/substitution_rates.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
#guruprasad Ananda
"""
Estimates substitution rates from pairwise alignments using JC69 model.
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/regVariation/substitutions.py
--- a/tools/regVariation/substitutions.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/regVariation/substitutions.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
#Guruprasad ANanda
"""
Fetches substitutions from pairwise alignments.
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/regVariation/windowSplitter.py
--- a/tools/regVariation/windowSplitter.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/regVariation/windowSplitter.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
Split into windows.
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/samtools/pileup_interval.py
--- a/tools/samtools/pileup_interval.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/samtools/pileup_interval.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
Condenses pileup format into ranges of bases.
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/samtools/sam_merge.py
--- a/tools/samtools/sam_merge.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/samtools/sam_merge.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
Merges any number of BAM files
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/samtools/sam_pileup.py
--- a/tools/samtools/sam_pileup.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/samtools/sam_pileup.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
Creates a pileup file from a bam file and a reference.
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/samtools/sam_to_bam.py
--- a/tools/samtools/sam_to_bam.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/samtools/sam_to_bam.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
Converts SAM data to sorted BAM data.
usage: sam_to_bam.py [options]
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/solid_tools/maq_cs_wrapper.py
--- a/tools/solid_tools/maq_cs_wrapper.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/solid_tools/maq_cs_wrapper.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
#Guruprasad Ananda
#MAQ mapper for SOLiD colourspace-reads
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/solid_tools/solid_qual_stats.py
--- a/tools/solid_tools/solid_qual_stats.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/solid_tools/solid_qual_stats.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
#Guruprasad Ananda
import sys, os, zipfile, tempfile
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/sr_mapping/bowtie_wrapper.py
--- a/tools/sr_mapping/bowtie_wrapper.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/sr_mapping/bowtie_wrapper.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
Runs Bowtie on single-end or paired-end data.
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/sr_mapping/bwa_wrapper.py
--- a/tools/sr_mapping/bwa_wrapper.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/sr_mapping/bwa_wrapper.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
Runs BWA on single-end or paired-end data.
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/sr_mapping/lastz_paired_reads_wrapper.py
--- a/tools/sr_mapping/lastz_paired_reads_wrapper.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/sr_mapping/lastz_paired_reads_wrapper.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
Runs Lastz paired read alignment process
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/sr_mapping/lastz_wrapper.py
--- a/tools/sr_mapping/lastz_wrapper.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/sr_mapping/lastz_wrapper.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
"""
Runs Lastz
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/stats/gsummary.py
--- a/tools/stats/gsummary.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/stats/gsummary.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
import sys, re, tempfile
from rpy import *
diff -r 8457a6f3214a -r 9f7d7e900cdf tools/tophat/tophat_wrapper.py
--- a/tools/tophat/tophat_wrapper.py Thu Apr 01 16:02:19 2010 -0400
+++ b/tools/tophat/tophat_wrapper.py Thu Apr 01 20:36:31 2010 -0400
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#!/usr/bin/env python
import optparse, os, shutil, sys, tempfile
1
0
details: http://www.bx.psu.edu/hg/galaxy/rev/8457a6f3214a
changeset: 3597:8457a6f3214a
user: jeremy goecks <jeremy.goecks(a)emory.edu>
date: Thu Apr 01 16:02:19 2010 -0400
description:
Fix workflow annotation bug.
diffstat:
lib/galaxy/web/controllers/workflow.py | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diffs (16 lines):
diff -r 9c1a0eeac431 -r 8457a6f3214a lib/galaxy/web/controllers/workflow.py
--- a/lib/galaxy/web/controllers/workflow.py Thu Apr 01 15:10:45 2010 -0400
+++ b/lib/galaxy/web/controllers/workflow.py Thu Apr 01 16:02:19 2010 -0400
@@ -665,8 +665,10 @@
step.temp_input_connections = step_dict['input_connections']
# Save step annotation.
- annotation = sanitize_html( step_dict[ 'annotation' ], 'utf-8', 'text/html' )
- self.add_item_annotation( trans, step, annotation )
+ annotation = step_dict[ 'annotation' ]
+ if annotation:
+ annotation = sanitize_html( annotation, 'utf-8', 'text/html' )
+ self.add_item_annotation( trans, step, annotation )
# Second pass to deal with connections between steps
for step in steps:
# Input connections
1
0