A couple bugfixes and a multi-update for datasets in the admin-side browser.

This commit is contained in:
Nate Coraor
2008-09-12 14:54:06 -04:00
parent e99e6164e2
commit f2f7550188
5 changed files with 109 additions and 32 deletions
+30 -8
View File
@@ -563,8 +563,8 @@ class Admin( BaseController ):
params = util.Params( kwd )
if 'new' in kwd:
if params.new == 'submitted':
library = trans.app.model.Library( name = params.name, description = params.description )
root_folder = trans.app.model.LibraryFolder( name = params.name, description = "" )
library = trans.app.model.Library( name = util.restore_text( params.name ), description = util.restore_text( params.description ) )
root_folder = trans.app.model.LibraryFolder( name = util.restore_text( params.name ), description = "" )
root_folder.flush()
library.root_folder = root_folder
library.flush()
@@ -578,10 +578,10 @@ class Admin( BaseController ):
if params.rename == 'submitted':
if 'root_folder' in kwd:
root_folder = library.root_folder
root_folder.name = params.name
root_folder.name = util.restore_text( params.name )
root_folder.flush()
library.name = params.name
library.description = params.description
library.name = util.restore_text( params.name )
library.description = util.restore_text( params.description )
library.flush()
return trans.response.send_redirect( web.url_for( action='library_browser' ) )
return trans.show_form(
@@ -616,7 +616,7 @@ class Admin( BaseController ):
folder = trans.app.model.LibraryFolder.get( id )
if 'new' in kwd:
if params.new == 'submitted':
new_folder = trans.app.model.LibraryFolder( name = params.name, description = params.description )
new_folder = trans.app.model.LibraryFolder( name = util.restore_text( params.name ), description = util.restore_text( params.description ) )
# We are associating the last used genome_build with folders, so we will always
# initialize a new folder with the first dbkey in util.dbnames which is currently
# ? unspecified (?)
@@ -632,8 +632,8 @@ class Admin( BaseController ):
.add_input( 'hidden', '', 'id', id, use_label = False ) )
elif 'rename' in kwd:
if params.rename == 'submitted':
folder.name = params.name
folder.description = params.description
folder.name = util.restore_text( params.name )
folder.description = util.restore_text( params.description )
folder.flush()
return trans.response.send_redirect( web.url_for( action='library_browser' ) )
return trans.show_form(
@@ -908,6 +908,7 @@ class Admin( BaseController ):
else:
setattr(dataset.metadata,name,spec.unwrap(p.get(name, None), p))
dataset.metadata.dbkey = dbkey
dataset.datatype.after_edit( dataset )
trans.app.model.flush()
return trans.show_ok_message( "Attributes updated" )
@@ -1039,6 +1040,27 @@ class Admin( BaseController ):
else:
trans.response.send_redirect( web.url_for( action='library_browser' ) )
@web.expose
def datasets( self, trans, **kwd ):
if not self.user_is_admin( trans ):
return trans.show_error_message( no_privilege_msg )
params = util.Params( kwd )
if 'with-selected' in kwd:
if not params.dataset_ids:
return trans.show_error_message( "At least one dataset must be selected." )
dataset_ids = listify( params.dataset_ids )
if params.action == 'edit':
trans.response.send_redirect( web.url_for( action = 'dataset', id = ",".join( dataset_ids ) ) )
elif params.action == 'delete':
for id in dataset_ids:
d = trans.app.model.LibraryFolderDatasetAssociation.get( id )
d.deleted = True
d.flush()
trans.response.send_redirect( web.url_for( action = 'library_browser' ) )
else:
return trans.show_error_message( "Not implemented." )
else:
return trans.show_error_message( "Galaxy can't operate on datasets without an operation." )
@web.expose
def delete_dataset( self, trans, id=None, **kwd):
if not self.user_is_admin( trans ):
return trans.show_error_message( no_privilege_msg )
+19 -2
View File
@@ -56,6 +56,15 @@
});
});
});
function checkForm() {
if ( $("select#with-selected-select option:selected").text() == "delete" ) {
if ( confirm( "Are you sure you want to delete these datasets?" ) ) {
return true;
} else {
return false;
}
}
}
</script>
<%def name="render_folder( parent, parent_pad )">
@@ -130,7 +139,7 @@
</a>
</li>
</ul>
<form name="import_from_library" action="${h.url_for( '/library/import_datasets' )}" method="post">
<form name="update_multiple_datasets" action="${h.url_for( action='datasets' )}" onSubmit="javascript:return checkForm();" method="post">
<ul>
%for library in libraries:
##%if trans.app.security_agent.check_folder_contents( trans.user, library ):
@@ -158,5 +167,13 @@
##%endif
%endfor
</ul>
##<input type="submit" class="primary-button" name="import_dataset" value="Import selected datasets"/>
<div style="float: right;">
With selected datasets:
<select name="action" id="with-selected-select">
<option value="None" selected></option>
<option value="edit">edit permissions</option>
<option value="delete">delete</option>
</select>
<input type="submit" class="primary-button" name="with-selected" id="with-selected-submit" value="go"/>
</div>
</form>
+1 -1
View File
@@ -192,7 +192,7 @@
</%doc>
<table cellspacing="0" cellpadding="0" border="0" width="100%"><tr>
<td width="*">
<input type="checkbox" name="import_ids" value="${data.id}"/>
<input type="checkbox" name="dataset_ids" value="${data.id}"/>
<span class="historyItemTitle"><b>${data.display_name()}</b></span>
<a id="dataset-${data.id}-popup" class="popup-arrow" style="display: none;">&#9660;</a>
<div popupmenu="dataset-${data.id}-popup">
+46 -6
View File
@@ -58,18 +58,52 @@
});
</script>
<![if gte IE 7]>
<script type="text/javascript">
q( document ).ready( function() {
// Add rollover effect to any image with a 'rollover' attribute
preload_images = {}
q( "img[@rollover]" ).each( function() {
var r = q(this).attr('rollover');
var s = q(this).attr('src');
preload_images[r] = true;
q(this).hover(
function() { q(this).attr( 'src', r ) },
function() { q(this).attr( 'src', s ) }
)
})
for ( r in preload_images ) { q( "<img>" ).attr( "src", r ) }
})
</script>
<![endif]>
<%def name="render_folder( parent, parent_pad )">
<%
if not trans.app.security_agent.check_folder_contents( trans.user, parent ):
return ""
pad = parent_pad + 20
if parent_pad == 0:
expander = "/static/images/silk/resultset_bottom.png"
folder = "/static/images/silk/folder_page.png"
subfolder = False
else:
expander = "/static/images/silk/resultset_next.png"
folder = "/static/images/silk/folder.png"
subfolder = True
%>
%if parent_pad == 0:
<li class="folderRow libraryOrFolderRow" style="padding-left: ${pad}px;"><div class="rowTitle"><img src="${h.url_for( '/static/images/silk/resultset_bottom.png' )}" class="expanderIcon"/><img src="${h.url_for( '/static/images/silk/folder_page.png' )}" class="rowIcon"/> ${parent.name}</div></li>
<ul>
%else:
<li class="folderRow libraryOrFolderRow" style="padding-left: ${pad}px;"><div class="rowTitle"><img src="${h.url_for( '/static/images/silk/resultset_next.png' )}" class="expanderIcon"/><img src="${h.url_for( '/static/images/silk/folder.png' )}" class="rowIcon"/> ${parent.name}</div></li>
<li class="folderRow libraryOrFolderRow" style="padding-left: ${pad}px;">
<div class="rowTitle">
<img src="${h.url_for( expander )}" class="expanderIcon"/><img src="${h.url_for( folder )}" class="rowIcon"/>
${parent.name}
%if parent.description:
<i>- ${parent.description}</i>
%endif
</div>
</li>
%if subfolder:
<ul id="subFolder">
%else:
<ul>
%endif
%for folder in parent.active_folders:
${render_folder( folder, pad )}
@@ -88,7 +122,13 @@
%for library in libraries:
%if trans.app.security_agent.check_folder_contents( trans.user, library ):
<li class="libraryRow libraryOrFolderRow" id="libraryRow"><div class="rowTitle"><table cellspacing="0" cellpadding="0" border="0" width="100%" class="libraryTitle"><tr>
<th width="*"><img src="${h.url_for( '/static/images/silk/resultset_bottom.png' )}" class="expanderIcon"/><img src="${h.url_for( '/static/images/silk/book_open.png' )}" class="rowIcon"/> ${library.name}</th>
<th width="*">
<img src="${h.url_for( '/static/images/silk/resultset_bottom.png' )}" class="expanderIcon"/><img src="${h.url_for( '/static/images/silk/book_open.png' )}" class="rowIcon"/>
${library.name}
%if library.description:
<i>- ${library.description}</i>
%endif
</th>
<th width="100">Format</th>
<th width="50">Db</th>
<th width="200">Info</th>
+13 -15
View File
@@ -38,7 +38,18 @@
</div>
</%doc>
<table cellspacing="0" cellpadding="0" border="0" width="100%"><tr>
<td width="*"><input type="checkbox" name="import_ids" value="${data.id}"/> <span class="historyItemTitle"><b>${data.display_name()}</b></span></td>
<td width="*">
<div style="float: right; padding-right: 2px;">
<a href="${h.url_for( controller='root', action='edit', lid=data.id )}">
<img src="${h.url_for('/static/images/pencil_icon.png')}"
rollover="${h.url_for('/static/images/pencil_icon_dark.png')}"
width='16' height='16' alt='view or edit attributes' title='view or edit attributes'
class='editButton' style='vertical-align: middle' border='0'>
</a>
</div>
<input type="checkbox" name="import_ids" value="${data.id}"/>
<span class="historyItemTitle"><b>${data.display_name()}</b></span>
</td>
<td width="100">${data.ext}</td>
<td width="50"><span class="${data.dbkey}">${data.dbkey}</span></td>
<td width="200">${data.info}</td>
@@ -50,18 +61,7 @@
<div id="info${data.id}" class="historyItemBody">
%if not trans.app.security_agent.allow_action( trans.user, data.permitted_actions.DATASET_ACCESS, dataset = data.dataset ):
<div>You do not have permission to view this dataset.</div>
%elif data_state == "queued":
<div>Job is waiting to run</div>
%elif data_state == "running":
<div>Job is currently running</div>
%elif data_state == "error":
<div>
An error occurred running this job: <i>${data.display_info().strip()}</i>,
<a href="${h.url_for( controller='dataset', action='errors', id=data.id )}" target="galaxy_main">report this error</a>
</div>
%elif data_state == "empty":
<div>No data: <i>${data.display_info()}</i></div>
%elif data_state == "ok":
%else:
<div>
${data.blurb}
</div>
@@ -82,8 +82,6 @@
%if data.peek != "no peek":
<div><pre id="peek${data.id}" class="peek">${data.display_peek()}</pre></div>
%endif
%else:
<div>Error: unknown dataset state "${data_state}".</div>
%endif
## Recurse for child datasets
%if len( data.children ) > 0: