Warning

This document is for an in-development version of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.

galaxy.web.framework.helpers package

Galaxy web framework helpers

The functions in this module should be considered part of the API used by visualizations in their mako files through the $h object, see GalaxyWebTransaction in galaxy/web/framework/webapp.py

galaxy.web.framework.helpers.time_ago(x)[source]

Convert a datetime to a string.

galaxy.web.framework.helpers.iff(a, b, c)[source]

Ternary shortcut

galaxy.web.framework.helpers.truncate(content, length=100, suffix='...')[source]

Smart string truncation

galaxy.web.framework.helpers.css(*args)[source]

Take a list of stylesheet names (no extension) and return appropriate string of link tags.

Cache-bust with time that server started running on

galaxy.web.framework.helpers.js_helper(prefix, *args)[source]

Take a prefix and list of javascript names and return appropriate string of script tags.

Cache-bust with time that server started running on

galaxy.web.framework.helpers.js(*args)[source]

Take a prefix and list of javascript names and return appropriate string of script tags.

galaxy.web.framework.helpers.templates(*args)[source]

Take a list of template names (no extension) and return appropriate string of script tags.

galaxy.web.framework.helpers.md5(s)[source]

Return hex encoded md5 hash of string s

galaxy.web.framework.helpers.to_unicode(a_string)[source]

Convert a string to unicode in utf-8 format; if string is already unicode, does nothing because string’s encoding cannot be determined by introspection.

galaxy.web.framework.helpers.is_true(val)[source]

Returns true if input is a boolean and true or is a string and looks like a true value.

galaxy.web.framework.helpers.to_js_bool(val)[source]

Prints javascript boolean for passed value. TODO: isn’t there a standard python JSON parser we should be using instead of all these manual conversions?

galaxy.web.framework.helpers.js_nullable(val)[source]

Prints javascript null instead of python None TODO: isn’t there a standard python JSON parser we should be using instead of all these manual conversions?

Submodules

galaxy.web.framework.helpers.grids module

class galaxy.web.framework.helpers.grids.Grid[source]

Bases: object

Specifies the content and format of a grid (data table).

title = ''
model_class = None
show_item_checkboxes = False
use_hide_message = True
global_actions = []
columns = []
operations = []
standard_filters = []
default_filter = {}
default_sort_key = None
use_paging = False
num_rows_per_page = 25
cur_filter_pref_name = '.filter'
cur_sort_key_pref_name = '.sort_key'
legend = None
info_text = None
__init__()[source]

x.__init__(…) initializes x; see help(type(x)) for signature

get_ids(**kwargs)[source]
handle_operation(trans, operation, ids, **kwargs)[source]
get_current_item(trans, **kwargs)[source]
build_initial_query(trans, **kwargs)[source]
apply_query_filter(trans, query, **kwargs)[source]
class galaxy.web.framework.helpers.grids.GridColumn(label, key=None, model_class=None, method=None, format=None, link=None, attach_popup=False, visible=True, nowrap=False, filterable=None, sortable=True, label_id_prefix=None, target=None, delayed=False)[source]

Bases: object

__init__(label, key=None, model_class=None, method=None, format=None, link=None, attach_popup=False, visible=True, nowrap=False, filterable=None, sortable=True, label_id_prefix=None, target=None, delayed=False)[source]

Create a grid column.

get_value(trans, grid, item)[source]
filter(trans, user, query, column_filter)[source]

Modify query to reflect the column filter.

get_accepted_filters()[source]

Returns a list of accepted filters for this column.

sort(trans, query, ascending, column_name=None)[source]

Sort query using this column.

class galaxy.web.framework.helpers.grids.ReverseSortColumn(label, key=None, model_class=None, method=None, format=None, link=None, attach_popup=False, visible=True, nowrap=False, filterable=None, sortable=True, label_id_prefix=None, target=None, delayed=False)[source]

Bases: galaxy.web.framework.helpers.grids.GridColumn

Column that reverses sorting; this is useful when the natural sort is descending.

sort(trans, query, ascending, column_name=None)[source]

Sort query using this column.

class galaxy.web.framework.helpers.grids.TextColumn(label, key=None, model_class=None, method=None, format=None, link=None, attach_popup=False, visible=True, nowrap=False, filterable=None, sortable=True, label_id_prefix=None, target=None, delayed=False)[source]

Bases: galaxy.web.framework.helpers.grids.GridColumn

Generic column that employs freetext and, hence, supports freetext, case-independent filtering.

filter(trans, user, query, column_filter)[source]

Modify query to filter using free text, case independence.

get_filter(trans, user, column_filter)[source]

Returns a SQLAlchemy criterion derived from column_filter.

get_single_filter(user, a_filter)[source]

Returns a SQLAlchemy criterion derived for a single filter. Single filter is the most basic filter–usually a string–and cannot be a list.

sort(trans, query, ascending, column_name=None)[source]

Sort column using case-insensitive alphabetical sorting.

class galaxy.web.framework.helpers.grids.DateTimeColumn(label, key=None, model_class=None, method=None, format=None, link=None, attach_popup=False, visible=True, nowrap=False, filterable=None, sortable=True, label_id_prefix=None, target=None, delayed=False)[source]

Bases: galaxy.web.framework.helpers.grids.TextColumn

sort(trans, query, ascending, column_name=None)[source]

Sort query using this column.

class galaxy.web.framework.helpers.grids.BooleanColumn(label, key=None, model_class=None, method=None, format=None, link=None, attach_popup=False, visible=True, nowrap=False, filterable=None, sortable=True, label_id_prefix=None, target=None, delayed=False)[source]

Bases: galaxy.web.framework.helpers.grids.TextColumn

sort(trans, query, ascending, column_name=None)[source]

Sort query using this column.

get_single_filter(user, a_filter)[source]

Returns a SQLAlchemy criterion derived for a single filter. Single filter is the most basic filter–usually a string–and cannot be a list.

class galaxy.web.framework.helpers.grids.IntegerColumn(label, key=None, model_class=None, method=None, format=None, link=None, attach_popup=False, visible=True, nowrap=False, filterable=None, sortable=True, label_id_prefix=None, target=None, delayed=False)[source]

Bases: galaxy.web.framework.helpers.grids.TextColumn

Integer column that employs freetext, but checks that the text is an integer, so support filtering on integer values.

IMPORTANT NOTE: grids that use this column type should not include the column in the cols_to_filter list of MulticolFilterColumn ( i.e., searching on this column type should not be performed in the grid’s standard search - it won’t throw exceptions, but it also will not find what you’re looking for ). Grids that search on this column should use ‘filterable=”advanced”’ so that searching is only performed in the advanced search component, restricting the search to the specific column.

This is useful for searching on object ids or other integer columns. See the JobIdColumn column in the SpecifiedDateListGrid class in the jobs controller of the reports webapp for an example.

get_single_filter(user, a_filter)[source]

Returns a SQLAlchemy criterion derived for a single filter. Single filter is the most basic filter–usually a string–and cannot be a list.

sort(trans, query, ascending, column_name=None)[source]

Sort query using this column.

class galaxy.web.framework.helpers.grids.CommunityRatingColumn(label, key=None, model_class=None, method=None, format=None, link=None, attach_popup=False, visible=True, nowrap=False, filterable=None, sortable=True, label_id_prefix=None, target=None, delayed=False)[source]

Bases: galaxy.web.framework.helpers.grids.GridColumn, galaxy.model.item_attrs.UsesItemRatings

Column that displays community ratings for an item.

get_value(trans, grid, item)[source]
sort(trans, query, ascending, column_name=None)[source]

Sort query using this column.

class galaxy.web.framework.helpers.grids.OwnerAnnotationColumn(col_name, key, model_class=None, model_annotation_association_class=None, filterable=None)[source]

Bases: galaxy.web.framework.helpers.grids.TextColumn, galaxy.model.item_attrs.UsesAnnotations

Column that displays and filters item owner’s annotations.

__init__(col_name, key, model_class=None, model_annotation_association_class=None, filterable=None)[source]

Create a grid column.

get_value(trans, grid, item)[source]

Returns first 150 characters of annotation.

get_single_filter(user, a_filter)[source]

Filter by annotation and annotation owner.

class galaxy.web.framework.helpers.grids.CommunityTagsColumn(col_name, key, model_class=None, model_tag_association_class=None, filterable=None, grid_name=None)[source]

Bases: galaxy.web.framework.helpers.grids.TextColumn

Column that supports community tags.

__init__(col_name, key, model_class=None, model_tag_association_class=None, filterable=None, grid_name=None)[source]

Create a grid column.

get_value(trans, grid, item)[source]
filter(trans, user, query, column_filter)[source]

Modify query to filter model_class by tag. Multiple filters are ANDed.

get_filter(trans, user, column_filter)[source]

Returns a SQLAlchemy criterion derived from column_filter.

class galaxy.web.framework.helpers.grids.IndividualTagsColumn(col_name, key, model_class=None, model_tag_association_class=None, filterable=None, grid_name=None)[source]

Bases: galaxy.web.framework.helpers.grids.CommunityTagsColumn

Column that supports individual tags.

get_value(trans, grid, item)[source]
get_filter(trans, user, column_filter)[source]

Returns a SQLAlchemy criterion derived from column_filter.

class galaxy.web.framework.helpers.grids.MulticolFilterColumn(col_name, cols_to_filter, key, visible, filterable='default')[source]

Bases: galaxy.web.framework.helpers.grids.TextColumn

Column that performs multicolumn filtering.

__init__(col_name, cols_to_filter, key, visible, filterable='default')[source]

Create a grid column.

filter(trans, user, query, column_filter)[source]

Modify query to filter model_class by tag. Multiple filters are ANDed.

class galaxy.web.framework.helpers.grids.OwnerColumn(label, key=None, model_class=None, method=None, format=None, link=None, attach_popup=False, visible=True, nowrap=False, filterable=None, sortable=True, label_id_prefix=None, target=None, delayed=False)[source]

Bases: galaxy.web.framework.helpers.grids.TextColumn

Column that lists item’s owner.

get_value(trans, grid, item)[source]
sort(trans, query, ascending, column_name=None)[source]

Sort column using case-insensitive alphabetical sorting on item’s username.

class galaxy.web.framework.helpers.grids.PublicURLColumn(label, key=None, model_class=None, method=None, format=None, link=None, attach_popup=False, visible=True, nowrap=False, filterable=None, sortable=True, label_id_prefix=None, target=None, delayed=False)[source]

Bases: galaxy.web.framework.helpers.grids.TextColumn

Column displays item’s public URL based on username and slug.

class galaxy.web.framework.helpers.grids.DeletedColumn(label, key=None, model_class=None, method=None, format=None, link=None, attach_popup=False, visible=True, nowrap=False, filterable=None, sortable=True, label_id_prefix=None, target=None, delayed=False)[source]

Bases: galaxy.web.framework.helpers.grids.GridColumn

Column that tracks and filters for items with deleted attribute.

get_accepted_filters()[source]

Returns a list of accepted filters for this column.

filter(trans, user, query, column_filter)[source]

Modify query to filter self.model_class by state.

class galaxy.web.framework.helpers.grids.PurgedColumn(label, key=None, model_class=None, method=None, format=None, link=None, attach_popup=False, visible=True, nowrap=False, filterable=None, sortable=True, label_id_prefix=None, target=None, delayed=False)[source]

Bases: galaxy.web.framework.helpers.grids.GridColumn

Column that tracks and filters for items with purged attribute.

get_accepted_filters()[source]

Returns a list of accepted filters for this column.

filter(trans, user, query, column_filter)[source]

Modify query to filter self.model_class by state.

class galaxy.web.framework.helpers.grids.StateColumn(label, key=None, model_class=None, method=None, format=None, link=None, attach_popup=False, visible=True, nowrap=False, filterable=None, sortable=True, label_id_prefix=None, target=None, delayed=False)[source]

Bases: galaxy.web.framework.helpers.grids.GridColumn

Column that tracks and filters for items with state attribute.

IMPORTANT NOTE: self.model_class must have a states Bunch or dict if this column type is used in the grid.

get_value(trans, grid, item)[source]
filter(trans, user, query, column_filter)[source]

Modify query to filter self.model_class by state.

get_accepted_filters()[source]

Returns a list of accepted filters for this column.

class galaxy.web.framework.helpers.grids.SharingStatusColumn(*args, **kwargs)[source]

Bases: galaxy.web.framework.helpers.grids.GridColumn

Grid column to indicate sharing status.

__init__(*args, **kwargs)[source]

Create a grid column.

get_value(trans, grid, item)[source]
filter(trans, user, query, column_filter)[source]

Modify query to filter histories by sharing status.

get_accepted_filters()[source]

Returns a list of accepted filters for this column.

class galaxy.web.framework.helpers.grids.GridOperation(label, key=None, condition=None, allow_multiple=True, allow_popup=True, target=None, url_args=None, async_compatible=False, confirm=None, global_operation=None)[source]

Bases: object

__init__(label, key=None, condition=None, allow_multiple=True, allow_popup=True, target=None, url_args=None, async_compatible=False, confirm=None, global_operation=None)[source]

x.__init__(…) initializes x; see help(type(x)) for signature

get_url_args(item)[source]
allowed(item)[source]
class galaxy.web.framework.helpers.grids.DisplayByUsernameAndSlugGridOperation(label, key=None, condition=None, allow_multiple=True, allow_popup=True, target=None, url_args=None, async_compatible=False, confirm=None, global_operation=None)[source]

Bases: galaxy.web.framework.helpers.grids.GridOperation

Operation to display an item by username and slug.

get_url_args(item)[source]
class galaxy.web.framework.helpers.grids.GridAction(label=None, url_args=None, target=None)[source]

Bases: object

__init__(label=None, url_args=None, target=None)[source]

x.__init__(…) initializes x; see help(type(x)) for signature

class galaxy.web.framework.helpers.grids.GridColumnFilter(label, args=None)[source]

Bases: object

__init__(label, args=None)[source]

x.__init__(…) initializes x; see help(type(x)) for signature

get_url_args()[source]

galaxy.web.framework.helpers.tags module

Code derived from WebHelpers: https://bitbucket.org/bbangert/webhelpers

Licensed under the MIT license: https://bitbucket.org/bbangert/webhelpers/src/tip/LICENSE

galaxy.web.framework.helpers.tags.format_attrs(**attrs)[source]

Format HTML attributes into a string of ‘ key=”value”’ pairs which can be inserted into an HTML tag.

The attributes are sorted alphabetically. If any value is None, the entire attribute is suppressed.

Usage: >>> format_attrs(p=2, q=3) == u’ p=”2” q=”3”’ True >>> format_attrs(p=2, q=None) == u’ p=”2”’ True >>> format_attrs(p=None) == u’’ True

Return script include tags for the specified javascript URLs.

urls should be the exact URLs desired. A previous version of this helper added magic prefixes; this is no longer the case.

Specify the keyword argument defer=True to enable the script defer attribute.

Examples:

>>> print(javascript_link('/javascripts/prototype.js', '/other-javascripts/util.js'))
<script src="/javascripts/prototype.js" type="text/javascript"></script>
<script src="/other-javascripts/util.js" type="text/javascript"></script>

>>> print(javascript_link('/app.js', '/test/test.1.js'))
<script src="/app.js" type="text/javascript"></script>
<script src="/test/test.1.js" type="text/javascript"></script>

Return CSS link tags for the specified stylesheet URLs.

urls should be the exact URLs desired. A previous version of this helper added magic prefixes; this is no longer the case.

Examples:

>>> print(stylesheet_link('/stylesheets/style.css'))
<link href="/stylesheets/style.css" media="screen" rel="stylesheet" type="text/css" />

>>> print(stylesheet_link('/stylesheets/dir/file.css', media='all'))
<link href="/stylesheets/dir/file.css" media="all" rel="stylesheet" type="text/css" />