Filters
More info on filters (and how to create your own!!) coming soon...
Class Reference
-
class canary.filters.ColumnFilter(field_name=None, label=None, prefix=None)
The base class of all filters.
Yes, all your column filter base belong to us...
-
__init__(field_name=None, label=None, prefix=None)
Create a ColumnFilter.
- Args:
- field_name: The field name to use in filtering the QuerySet. If not provided, the column name is used.
label: The label of the submit button.
prefix: The prefix to use for naming the HTML object.
-
get_field_name()
Get the field name to be used to filter the QuerySet.
- Returns:
- The field_name, if provided, or the column field name.
-
load(request, queryset)
Load data for the filter from the current request.
This method is expected to create the self._meta.data object.
- Args:
- request: The Django Request.
queryset: The Django QuerySet.
- Sets:
- _meta.data: The data collected from the request object.
-
class canary.filters.FormFilter(*args, **kwargs)
The base class of all form filters. They use a form to get the data used
to filter the QuerySet.
Extends canary.filters.ColumnFilter.
-
__init__(*args, **kwargs)
Create a FormFilter.
-
clear_filter_data()
Clear filter data.
- Sets:
- data: Sets to an empty object.
-
get_label()
Get the filter label.
- Returns:
- The provided label or ‘Filter’.
-
get_prefix()
Get the filter prefix.
- Returns:
- The provided prefix or the column name.
-
filter_queryset(request, queryset)
Filter the QuerySet.
- Args:
- request: The Django request.
queryset: The Django QuerySet.
- Returns:
- A Django QuerySet.
- Raises:
- NotImplementedError: If the method is not overridden by the filter class.
-
load(request, queryset)
Load data from the request.
- Args:
- request: The Django request.
queryset: The Django QuerySet.
- Sets:
- data: Populates the object with form data.
-
render(request)
Renders the filter controls (form, buttons).
- Args:
- request: The Django request.
- Returns:
- A string of HTML containing the filter controls. By default,
this is rendered as part of canary.columns.ColumnHeader.render.
-
set_data(request, *args, **kwargs)
Set the form data.
- Args:
- request: The Django request.
- Sets:
- data: The form field data as attributes on an object.
-
class canary.filters.DateRange(*args, **kwargs)
Filter a date column by a date range.
Extends canary.filters.FormFilter.
-
filter_queryset(request, queryset)
Filter the QuerySet.
- Args:
- request: The Django request.
queryset: The QuerySet.
- Returns:
- A QuerySet.
-
class canary.filters.Search(columns=None, *args, **kwargs)
Filter a column with an icontains filter.
Extends canary.filters.FormFilter.
-
__init__(columns=None, *args, **kwargs)
Create a Search filter.
- Args:
- columns: A list of column names to search.
-
filter_queryset(request, queryset)
Filter the QuerySet.
- Args:
- request: The Django request.
queryset: The QuerySet.
- Returns:
- A QuerySet.
-
class canary.filters.Choice(choices=None, *args, **kwargs)
A Choice filter, for use with Django model fields with choices.
Extends canary.filters.ColumnFilter.
-
filter_queryset(request, queryset)
Filter the QuerySet based on the selected choice.
- Args:
- request: The Django request.
queryset: The QuerySet.
- Returns:
- A QuerySet.
-
get_data(request, *args, **kwargs)
Get the filter data.
- Args:
- request: The Django request.
- Returns:
- A dictionary of form data.
-
get_filter_name()
Get the filter name.
- Returns:
- The name of the HTML form input element.
-
load(request, queryset)
Load filter data.
- Args:
- request: The Django request.
- Sets:
- choices: A tuple of choices.
data: And object with the filter data as attributes.
-
render(request)
Renders the filter controls (form, buttons).
- Args:
- request: The Django request.
- Returns:
- A string of HTML containing the filter controls. By default,
this is rendered as part of canary.columns.ColumnHeader.render.
-
set_data(request)
Set the filter data.
- Args:
- request: The Django request.
- Sets:
- data: An object with the filter data as attributes.
-
class canary.filters.ForeignKey(choices=None, *args, **kwargs)
A ForeignKey filter, for use with Django models.ForeignKey fields.
Extends canary.filters.Choice.
-
filter_queryset(request, queryset)
Filter the QuerySet based on the selected choice.
- Args:
- request: The Django request.
queryset: The QuerySet.
- Returns:
- A QuerySet.
-
get_choices(queryset)
Get the choice tuple.
- Args:
- queryset: The QuerySet.
- Returns:
- A choice tuple (exactly the same as used to define Django model
fields).
-
get_related_model()
Get the related Django model.
- Returns:
- The related Django model.
- Raises:
- NotImplementedError: Magic is hard. Until I figure out how to work related magics, you must define this.