class LibraryListGrid( grids.Grid ): class NameColumn( grids.TextColumn ): def get_value( self, trans, grid, library ): return library.name class DescriptionColumn( grids.TextColumn ): def get_value( self, trans, grid, library ): if library.description: return library.description return '' class StatusColumn( grids.GridColumn ): def get_value( self, trans, grid, library ): if library.purged: return "purged" elif library.deleted: return "deleted" return "" # Grid definition title = "Data Libraries" model_class = model.Library template='/admin/library/grid.mako' default_sort_key = "name" columns = [ NameColumn( "Data library name", key="name", link=( lambda library: dict( operation="browse", id=library.id ) ), attach_popup=False, filterable="advanced" ), DescriptionColumn( "Data library description", key="description", attach_popup=False, filterable="advanced" ), grids.GridColumn( "Created", key="create_time", format=time_ago ), grids.GridColumn( "Last Updated", key="update_time", format=time_ago ), StatusColumn( "Status", attach_popup=False ), # Columns that are valid for filtering but are not visible. grids.DeletedColumn( "Deleted", key="deleted", visible=False, filterable="advanced" ) ] columns.append( grids.MulticolFilterColumn( "search dataset name, info, message, dbkey", cols_to_filter=[ columns[0], columns[1] ], key="free-text-search", visible=False, filterable="standard" ) ) global_actions = [ grids.GridAction( "Create new data library", dict( controller='library_admin', action='create_library' ) ) ] standard_filters = [ grids.GridColumnFilter( "Active", args=dict( deleted=False ) ), grids.GridColumnFilter( "Deleted", args=dict( deleted=True, purged=False ) ), grids.GridColumnFilter( "Purged", args=dict( purged=True ) ), grids.GridColumnFilter( "All", args=dict( deleted='All' ) ) ] default_filter = dict( name="All", description="All", deleted="False", purged="False" ) num_rows_per_page = 50 preserve_state = False use_paging = True
def get_accepted_filters( self ): """ Returns a list of accepted filters for this column. """ accepted_filter_labels_and_vals = { "Active": "False", "Deactivated or uninstalled": "True", "All": "All" } accepted_filters = [] for label, val in accepted_filter_labels_and_vals.items(): args = { self.key: val } accepted_filters.append( grids.GridColumnFilter( label, args) ) return accepted_filters
def get_accepted_filters( self ): """ Returns a list of accepted filters for this column. """ accepted_filter_labels_and_vals = odict() accepted_filter_labels_and_vals["private"] = "private" accepted_filter_labels_and_vals["shared"] = "shared" accepted_filter_labels_and_vals["importable"] = "importable" accepted_filter_labels_and_vals["all"] = "All" accepted_filters = [] for label, val in accepted_filter_labels_and_vals.items(): args = { self.key: val } accepted_filters.append( grids.GridColumnFilter( label, args) ) return accepted_filters
class QuotaListGrid( grids.Grid ): class NameColumn( grids.TextColumn ): def get_value( self, trans, grid, quota ): return escape(quota.name) class DescriptionColumn( grids.TextColumn ): def get_value( self, trans, grid, quota ): if quota.description: return escape(quota.description) return '' class AmountColumn( grids.TextColumn ): def get_value( self, trans, grid, quota ): return quota.operation + quota.display_amount class StatusColumn( grids.GridColumn ): def get_value( self, trans, grid, quota ): if quota.deleted: return "deleted" elif quota.default: return "<strong>default for %s users</strong>" % quota.default[0].type return "" class UsersColumn( grids.GridColumn ): def get_value( self, trans, grid, quota ): if quota.users: return len( quota.users ) return 0 class GroupsColumn( grids.GridColumn ): def get_value( self, trans, grid, quota ): if quota.groups: return len( quota.groups ) return 0 # Grid definition title = "Quotas" model_class = model.Quota template = '/admin/quota/grid.mako' default_sort_key = "name" columns = [ NameColumn( "Name", key="name", link=( lambda item: dict( operation="Change amount", id=item.id, webapp="galaxy" ) ), model_class=model.Quota, attach_popup=True, filterable="advanced" ), DescriptionColumn( "Description", key='description', model_class=model.Quota, attach_popup=False, filterable="advanced" ), AmountColumn( "Amount", key='amount', model_class=model.Quota, attach_popup=False, filterable="advanced" ), UsersColumn( "Users", attach_popup=False ), GroupsColumn( "Groups", attach_popup=False ), StatusColumn( "Status", attach_popup=False ), # Columns that are valid for filtering but are not visible. grids.DeletedColumn( "Deleted", key="deleted", visible=False, filterable="advanced" ) ] columns.append( grids.MulticolFilterColumn( "Search", cols_to_filter=[ columns[0], columns[1], columns[2] ], key="free-text-search", visible=False, filterable="standard" ) ) global_actions = [ grids.GridAction( "Add new quota", dict( controller='admin', action='quotas', operation='create' ) ) ] operations = [ grids.GridOperation( "Rename", condition=( lambda item: not item.deleted ), allow_multiple=False, url_args=dict( webapp="galaxy", action="rename_quota" ) ), grids.GridOperation( "Change amount", condition=( lambda item: not item.deleted ), allow_multiple=False, url_args=dict( webapp="galaxy", action="edit_quota" ) ), grids.GridOperation( "Manage users and groups", condition=( lambda item: not item.default and not item.deleted ), allow_multiple=False, url_args=dict( webapp="galaxy", action="manage_users_and_groups_for_quota" ) ), grids.GridOperation( "Set as different type of default", condition=( lambda item: item.default ), allow_multiple=False, url_args=dict( webapp="galaxy", action="set_quota_default" ) ), grids.GridOperation( "Set as default", condition=( lambda item: not item.default and not item.deleted ), allow_multiple=False, url_args=dict( webapp="galaxy", action="set_quota_default" ) ), grids.GridOperation( "Unset as default", condition=( lambda item: item.default and not item.deleted ), allow_multiple=False, url_args=dict( webapp="galaxy", action="unset_quota_default" ) ), grids.GridOperation( "Delete", condition=( lambda item: not item.deleted and not item.default ), allow_multiple=True, url_args=dict( webapp="galaxy", action="mark_quota_deleted" ) ), grids.GridOperation( "Undelete", condition=( lambda item: item.deleted ), allow_multiple=True, url_args=dict( webapp="galaxy", action="undelete_quota" ) ), grids.GridOperation( "Purge", condition=( lambda item: item.deleted ), allow_multiple=True, url_args=dict( webapp="galaxy", action="purge_quota" ) ) ] standard_filters = [ grids.GridColumnFilter( "Active", args=dict( deleted=False ) ), grids.GridColumnFilter( "Deleted", args=dict( deleted=True ) ), grids.GridColumnFilter( "All", args=dict( deleted='All' ) ) ] num_rows_per_page = 50 preserve_state = False use_paging = True
class UserListGrid( grids.Grid ): class EmailColumn( grids.TextColumn ): def get_value( self, trans, grid, user ): return escape(user.email) class UserNameColumn( grids.TextColumn ): def get_value( self, trans, grid, user ): if user.username: return escape(user.username) return 'not set' class StatusColumn( grids.GridColumn ): def get_value( self, trans, grid, user ): if user.purged: return "purged" elif user.deleted: return "deleted" return "" class GroupsColumn( grids.GridColumn ): def get_value( self, trans, grid, user ): if user.groups: return len( user.groups ) return 0 class RolesColumn( grids.GridColumn ): def get_value( self, trans, grid, user ): if user.roles: return len( user.roles ) return 0 class ExternalColumn( grids.GridColumn ): def get_value( self, trans, grid, user ): if user.external: return 'yes' return 'no' class LastLoginColumn( grids.GridColumn ): def get_value( self, trans, grid, user ): if user.galaxy_sessions: return self.format( user.galaxy_sessions[ 0 ].update_time ) return 'never' class TimeCreatedColumn( grids.GridColumn ): def get_value( self, trans, grid, user ): return user.create_time.strftime('%x') class ActivatedColumn( grids.GridColumn ): def get_value( self, trans, grid, user ): if user.active: return 'Y' else: return 'N' # Grid definition title = "Users" model_class = model.User template = '/admin/user/grid.mako' default_sort_key = "email" columns = [ EmailColumn( "Email", key="email", model_class=model.User, link=( lambda item: dict( operation="information", id=item.id, webapp="galaxy" ) ), attach_popup=True, filterable="advanced", target="top" ), UserNameColumn( "User Name", key="username", model_class=model.User, attach_popup=False, filterable="advanced" ), GroupsColumn( "Groups", attach_popup=False ), RolesColumn( "Roles", attach_popup=False ), ExternalColumn( "External", attach_popup=False ), LastLoginColumn( "Last Login", format=time_ago ), StatusColumn( "Status", attach_popup=False ), TimeCreatedColumn( "Created", attach_popup=False ), ActivatedColumn( "Activated", attach_popup=False ), # Columns that are valid for filtering but are not visible. grids.DeletedColumn( "Deleted", key="deleted", visible=False, filterable="advanced" ) ] columns.append( grids.MulticolFilterColumn( "Search", cols_to_filter=[ columns[0], columns[1] ], key="free-text-search", visible=False, filterable="standard" ) ) global_actions = [ grids.GridAction( "Create new user", dict( controller='admin', action='users', operation='create', webapp="galaxy" ) ) ] operations = [ grids.GridOperation( "Manage Roles and Groups", condition=( lambda item: not item.deleted ), allow_multiple=False, url_args=dict( webapp="galaxy", action="manage_roles_and_groups_for_user" ) ), grids.GridOperation( "Reset Password", condition=( lambda item: not item.deleted ), allow_multiple=True, allow_popup=False, url_args=dict( webapp="galaxy", action="reset_user_password" ) ), grids.GridOperation( "Recalculate Disk Usage", condition=( lambda item: not item.deleted ), allow_multiple=False, url_args=dict( webapp="galaxy", action="recalculate_user_disk_usage" ) ) ] standard_filters = [ grids.GridColumnFilter( "Active", args=dict( deleted=False ) ), grids.GridColumnFilter( "Deleted", args=dict( deleted=True, purged=False ) ), grids.GridColumnFilter( "Purged", args=dict( purged=True ) ), grids.GridColumnFilter( "All", args=dict( deleted='All' ) ) ] num_rows_per_page = 50 preserve_state = False use_paging = True def get_current_item( self, trans, **kwargs ): return trans.user
class GroupListGrid( grids.Grid ): class NameColumn( grids.TextColumn ): def get_value( self, trans, grid, group ): return escape(group.name) class StatusColumn( grids.GridColumn ): def get_value( self, trans, grid, group ): if group.deleted: return "deleted" return "" class RolesColumn( grids.GridColumn ): def get_value( self, trans, grid, group ): if group.roles: return len( group.roles ) return 0 class UsersColumn( grids.GridColumn ): def get_value( self, trans, grid, group ): if group.members: return len( group.members ) return 0 # Grid definition title = "Groups" model_class = model.Group template = '/admin/dataset_security/group/grid.mako' default_sort_key = "name" columns = [ NameColumn( "Name", key="name", link=( lambda item: dict( operation="Manage users and roles", id=item.id, webapp="galaxy" ) ), model_class=model.Group, attach_popup=True, filterable="advanced" ), UsersColumn( "Users", attach_popup=False ), RolesColumn( "Roles", attach_popup=False ), StatusColumn( "Status", attach_popup=False ), # Columns that are valid for filtering but are not visible. grids.DeletedColumn( "Deleted", key="deleted", visible=False, filterable="advanced" ) ] columns.append( grids.MulticolFilterColumn( "Search", cols_to_filter=[ columns[0], columns[1], columns[2] ], key="free-text-search", visible=False, filterable="standard" ) ) global_actions = [ grids.GridAction( "Add new group", dict( controller='admin', action='groups', operation='create', webapp="galaxy" ) ) ] operations = [ grids.GridOperation( "Rename", condition=( lambda item: not item.deleted ), allow_multiple=False, url_args=dict( webapp="galaxy", action="rename_group" ) ), grids.GridOperation( "Delete", condition=( lambda item: not item.deleted ), allow_multiple=True, url_args=dict( webapp="galaxy", action="mark_group_deleted" ) ), grids.GridOperation( "Undelete", condition=( lambda item: item.deleted ), allow_multiple=True, url_args=dict( webapp="galaxy", action="undelete_group" ) ), grids.GridOperation( "Purge", condition=( lambda item: item.deleted ), allow_multiple=True, url_args=dict( webapp="galaxy", action="purge_group" ) ) ] standard_filters = [ grids.GridColumnFilter( "Active", args=dict( deleted=False ) ), grids.GridColumnFilter( "Deleted", args=dict( deleted=True ) ), grids.GridColumnFilter( "All", args=dict( deleted='All' ) ) ] num_rows_per_page = 50 preserve_state = False use_paging = True
class RoleListGrid( grids.Grid ): class NameColumn( grids.TextColumn ): def get_value( self, trans, grid, role ): return escape(role.name) class DescriptionColumn( grids.TextColumn ): def get_value( self, trans, grid, role ): if role.description: return escape(role.description) return '' class TypeColumn( grids.TextColumn ): def get_value( self, trans, grid, role ): return role.type class StatusColumn( grids.GridColumn ): def get_value( self, trans, grid, role ): if role.deleted: return "deleted" return "" class GroupsColumn( grids.GridColumn ): def get_value( self, trans, grid, role ): if role.groups: return len( role.groups ) return 0 class UsersColumn( grids.GridColumn ): def get_value( self, trans, grid, role ): if role.users: return len( role.users ) return 0 # Grid definition title = "Roles" model_class = model.Role template = '/admin/dataset_security/role/grid.mako' default_sort_key = "name" columns = [ NameColumn( "Name", key="name", link=( lambda item: dict( operation="Manage users and groups", id=item.id, webapp="galaxy" ) ), model_class=model.Role, attach_popup=True, filterable="advanced" ), DescriptionColumn( "Description", key='description', model_class=model.Role, attach_popup=False, filterable="advanced" ), TypeColumn( "Type", key='type', model_class=model.Role, attach_popup=False, filterable="advanced" ), GroupsColumn( "Groups", attach_popup=False ), UsersColumn( "Users", attach_popup=False ), StatusColumn( "Status", attach_popup=False ), # Columns that are valid for filtering but are not visible. grids.DeletedColumn( "Deleted", key="deleted", visible=False, filterable="advanced" ) ] columns.append( grids.MulticolFilterColumn( "Search", cols_to_filter=[ columns[0], columns[1], columns[2] ], key="free-text-search", visible=False, filterable="standard" ) ) global_actions = [ grids.GridAction( "Add new role", dict( controller='admin', action='roles', operation='create' ) ) ] operations = [ grids.GridOperation( "Edit", condition=( lambda item: not item.deleted ), allow_multiple=False, url_args=dict( webapp="galaxy", action="rename_role" ) ), grids.GridOperation( "Delete", condition=( lambda item: not item.deleted ), allow_multiple=True, url_args=dict( webapp="galaxy", action="mark_role_deleted" ) ), grids.GridOperation( "Undelete", condition=( lambda item: item.deleted ), allow_multiple=True, url_args=dict( webapp="galaxy", action="undelete_role" ) ), grids.GridOperation( "Purge", condition=( lambda item: item.deleted ), allow_multiple=True, url_args=dict( webapp="galaxy", action="purge_role" ) ) ] standard_filters = [ grids.GridColumnFilter( "Active", args=dict( deleted=False ) ), grids.GridColumnFilter( "Deleted", args=dict( deleted=True ) ), grids.GridColumnFilter( "All", args=dict( deleted='All' ) ) ] num_rows_per_page = 50 preserve_state = False use_paging = True def apply_query_filter( self, trans, query, **kwargs ): return query.filter( model.Role.type != model.Role.types.PRIVATE )
class UserGrid(grids.Grid): class UserLoginColumn(grids.TextColumn): def get_value(self, trans, grid, user): return escape(user.email) class UserNameColumn(grids.TextColumn): def get_value(self, trans, grid, user): if user.username: return escape(user.username) return 'not set' class GroupsColumn(grids.GridColumn): def get_value(self, trans, grid, user): if user.groups: return len(user.groups) return 0 class RolesColumn(grids.GridColumn): def get_value(self, trans, grid, user): if user.roles: return len(user.roles) return 0 class ExternalColumn(grids.GridColumn): def get_value(self, trans, grid, user): if user.external: return 'yes' return 'no' class LastLoginColumn(grids.GridColumn): def get_value(self, trans, grid, user): if user.galaxy_sessions: return self.format(user.galaxy_sessions[0].update_time) return 'never' class StatusColumn(grids.GridColumn): def get_value(self, trans, grid, user): if user.purged: return "purged" elif user.deleted: return "deleted" return "" class EmailColumn(grids.GridColumn): def filter(self, trans, user, query, column_filter): if column_filter == 'All': return query return query.filter( and_(model.Tool.table.c.user_id == model.User.table.c.id, model.User.table.c.email == column_filter)) title = "Users" model_class = model.User default_sort_key = "email" columns = [ UserLoginColumn( "Email", key="email", link=(lambda item: dict(operation="information", id=item.id)), attach_popup=True, filterable="advanced"), UserNameColumn("User Name", key="username", attach_popup=False, filterable="advanced"), GroupsColumn("Groups", attach_popup=False), RolesColumn("Roles", attach_popup=False), ExternalColumn("External", attach_popup=False), LastLoginColumn("Last Login", format=time_ago), StatusColumn("Status", attach_popup=False), # Columns that are valid for filtering but are not visible. EmailColumn("Email", key="email", visible=False) ] columns.append( grids.MulticolFilterColumn("Search", cols_to_filter=[columns[0], columns[1]], key="free-text-search", visible=False, filterable="standard")) global_actions = [ grids.GridAction( "Create new user", dict(controller='admin', action='users', operation='create')) ] operations = [ grids.GridOperation( "Manage Roles and Groups", condition=(lambda item: not item.deleted), allow_multiple=False, url_args=dict(action="manage_roles_and_groups_for_user")), grids.GridOperation("Reset Password", condition=(lambda item: not item.deleted), allow_multiple=True, allow_popup=False, url_args=dict(action="reset_user_password")) ] standard_filters = [ grids.GridColumnFilter("Active", args=dict(deleted=False)), grids.GridColumnFilter("Deleted", args=dict(deleted=True, purged=False)), grids.GridColumnFilter("Purged", args=dict(purged=True)), grids.GridColumnFilter("All", args=dict(deleted='All')) ] use_paging = False def get_current_item(self, trans, **kwargs): return trans.user
class RoleGrid(grids.Grid): class NameColumn(grids.TextColumn): def get_value(self, trans, grid, role): return escape(str(role.name)) class DescriptionColumn(grids.TextColumn): def get_value(self, trans, grid, role): if role.description: return str(role.description) return '' class TypeColumn(grids.TextColumn): def get_value(self, trans, grid, role): return str(role.type) class StatusColumn(grids.GridColumn): def get_value(self, trans, grid, role): if role.deleted: return "deleted" return "" class GroupsColumn(grids.GridColumn): def get_value(self, trans, grid, role): if role.groups: return len(role.groups) return 0 class RepositoriesColumn(grids.GridColumn): def get_value(self, trans, grid, role): if role.repositories: return len(role.repositories) return 0 class UsersColumn(grids.GridColumn): def get_value(self, trans, grid, role): if role.users: return len(role.users) return 0 title = "Roles" model_class = model.Role default_sort_key = "name" columns = [ NameColumn("Name", key="name", link=(lambda item: dict( operation="Manage role associations", id=item.id)), attach_popup=True, filterable="advanced"), DescriptionColumn("Description", key='description', attach_popup=False, filterable="advanced"), GroupsColumn("Groups", attach_popup=False), RepositoriesColumn("Repositories", attach_popup=False), UsersColumn("Users", attach_popup=False), # Columns that are valid for filtering but are not visible. grids.DeletedColumn("Deleted", key="deleted", visible=False, filterable="advanced") ] columns.append( grids.MulticolFilterColumn("Search", cols_to_filter=[columns[0]], key="free-text-search", visible=False, filterable="standard")) global_actions = [ grids.GridAction( "Add new role", dict(controller='admin', action='roles', operation='create')) ] # Repository admin roles currently do not have any operations since they are managed automatically based # on other events. For example, if a repository is renamed, its associated admin role is automatically # renamed accordingly and if a repository is deleted its associated admin role is automatically deleted. operations = [ grids.GridOperation("Rename", condition=(lambda item: not item.deleted and not item.is_repository_admin_role), allow_multiple=False, url_args=dict(action="rename_role")), grids.GridOperation("Delete", condition=(lambda item: not item.deleted and not item.is_repository_admin_role), allow_multiple=True, url_args=dict(action="mark_role_deleted")), grids.GridOperation("Undelete", condition=(lambda item: item.deleted and not item. is_repository_admin_role), allow_multiple=True, url_args=dict(action="undelete_role")), grids.GridOperation("Purge", condition=(lambda item: item.deleted and not item. is_repository_admin_role), allow_multiple=True, url_args=dict(action="purge_role")) ] standard_filters = [ grids.GridColumnFilter("Active", args=dict(deleted=False)), grids.GridColumnFilter("Deleted", args=dict(deleted=True)), grids.GridColumnFilter("All", args=dict(deleted='All')) ] use_paging = False def apply_query_filter(self, trans, query, **kwd): return query.filter(model.Role.type != model.Role.types.PRIVATE)
class HistoryListGrid(grids.Grid): # Custom column types class ItemCountColumn(grids.GridColumn): def get_value(self, trans, grid, history): return str(history.hid_counter - 1) class HistoryListNameColumn(NameColumn): def get_link(self, trans, grid, history): link = None if not history.deleted: link = dict(operation="Switch", id=history.id, use_panels=grid.use_panels, async_compatible=True) return link class DeletedColumn(grids.DeletedColumn): def get_value(self, trans, grid, history): if history == trans.history: return "<strong>current history</strong>" if history.purged: return "deleted permanently" elif history.deleted: return "deleted" return "" def sort(self, trans, query, ascending, column_name=None): if ascending: query = query.order_by(self.model_class.table.c.purged.asc(), self.model_class.update_time.desc()) else: query = query.order_by(self.model_class.table.c.purged.desc(), self.model_class.update_time.desc()) return query def build_initial_query(self, trans, **kwargs): # Override to preload sharing information used when fetching data for grid. query = super().build_initial_query(trans, **kwargs) query = query.options(undefer("users_shared_with_count")) return query # Grid definition title = "Saved Histories" model_class = model.History default_sort_key = "-update_time" columns = [ HistoryListNameColumn("Name", key="name", attach_popup=True, filterable="advanced"), ItemCountColumn("Items", key="item_count", sortable=False), grids.GridColumn("Datasets", key="datasets_by_state", sortable=False, nowrap=True, delayed=True), grids.IndividualTagsColumn("Tags", key="tags", model_tag_association_class=model.HistoryTagAssociation, filterable="advanced", grid_name="HistoryListGrid"), grids.SharingStatusColumn("Sharing", key="sharing", filterable="advanced", sortable=False, use_shared_with_count=True), grids.GridColumn("Size on Disk", key="disk_size", sortable=False, delayed=True), grids.GridColumn("Created", key="create_time", format=time_ago), grids.GridColumn("Last Updated", key="update_time", format=time_ago), DeletedColumn("Status", key="deleted", filterable="advanced") ] columns.append( grids.MulticolFilterColumn( "search history names and tags", cols_to_filter=[columns[0], columns[3]], key="free-text-search", visible=False, filterable="standard") ) global_actions = [ grids.GridAction("Import history", dict(controller="", action="histories/import")) ] operations = [ grids.GridOperation("Switch", allow_multiple=False, condition=(lambda item: not item.deleted), async_compatible=True), grids.GridOperation("View", allow_multiple=False, url_args=dict(controller="", action="histories/view")), grids.GridOperation("Share or Publish", allow_multiple=False, condition=(lambda item: not item.deleted), url_args=dict(controller="", action="histories/sharing")), grids.GridOperation("Change Permissions", allow_multiple=False, condition=(lambda item: not item.deleted), url_args=dict(controller="", action="histories/permissions")), grids.GridOperation("Copy", allow_multiple=False, condition=(lambda item: not item.deleted), async_compatible=False), grids.GridOperation("Rename", condition=(lambda item: not item.deleted), url_args=dict(controller="", action="histories/rename"), target="top"), grids.GridOperation("Delete", condition=(lambda item: not item.deleted), async_compatible=True), grids.GridOperation("Delete Permanently", condition=(lambda item: not item.purged), confirm="History contents will be removed from disk, this cannot be undone. Continue?", async_compatible=True), grids.GridOperation("Undelete", condition=(lambda item: item.deleted and not item.purged), async_compatible=True), ] standard_filters = [ grids.GridColumnFilter("Active", args=dict(deleted=False)), grids.GridColumnFilter("Deleted", args=dict(deleted=True)), grids.GridColumnFilter("All", args=dict(deleted='All')), ] default_filter = dict(name="All", deleted="False", tags="All", sharing="All") num_rows_per_page = 15 use_paging = True info_text = "Histories that have been deleted for more than a time period specified by the Galaxy administrator(s) may be permanently deleted." def get_current_item(self, trans, **kwargs): return trans.get_history() def apply_query_filter(self, trans, query, **kwargs): return query.filter_by(user=trans.user, importing=False)