The horizon.test.tests.tables ModuleΒΆ

class horizon.test.tests.tables.APIFilterTableView(*args, **kwargs)[source]

Bases: horizon.test.tests.tables.SingleTableView

table_class

alias of MyServerFilterTable

class horizon.test.tests.tables.DataTableTests(methodName='runTest')[source]

Bases: horizon.test.helpers.TestCase

test_broken_filter()[source]
test_column_uniqueness()[source]
test_inline_edit_available_cell_rendering()[source]
test_inline_edit_available_not_allowed_cell_rendering()[source]
test_inline_edit_mod_cell_rendering()[source]
test_inline_edit_mod_checkbox_with_label()[source]
test_inline_edit_mod_textarea()[source]
test_inline_edit_update_action_get()[source]
test_inline_edit_update_action_get_inline_edit_mod()[source]
test_inline_edit_update_action_get_non_ajax()[source]
test_inline_edit_update_action_get_not_allowed()[source]
test_inline_edit_update_action_post()[source]
test_inline_edit_update_action_post_not_allowed()[source]
test_inline_edit_update_action_post_validation_error()[source]
test_server_filtering()[source]
test_summation_row()[source]
test_table_action_attributes()[source]
test_table_action_object_display_is_none()[source]
test_table_actions()[source]
test_table_actions_not_allowed_hide_multiselect()[source]
test_table_column()[source]
test_table_column_can_be_selected()[source]
test_table_column_inheritance()[source]
test_table_column_truncation()[source]
test_table_construction()[source]
test_table_force_no_actions_column()[source]
test_table_force_no_multiselect()[source]
test_table_instantiation()[source]

Tests everything that happens when the table is instantiated.

test_table_natural_no_actions_column()[source]
test_table_natural_no_inline_editing()[source]
test_table_natural_no_multiselect()[source]
test_table_rendering()[source]
test_table_row()[source]
test_wrap_list_rendering()[source]
class horizon.test.tests.tables.DataTableViewTests(methodName='runTest')[source]

Bases: horizon.test.helpers.TestCase

test_api_filter_table_view()[source]
test_data_table_view()[source]
test_data_table_view_authorized()[source]
test_data_table_view_not_authorized()[source]
test_multi_table_view_authorized()[source]
test_multi_table_view_not_authorized()[source]
class horizon.test.tests.tables.DisabledActionsTable(request, data=None, needs_form_wrapper=None, **kwargs)[source]

Bases: horizon.tables.base.DataTable

class Meta[source]
multi_select = True
name = 'disabled_actions_table'
row_actions = ()
table_actions = (<class 'horizon.test.tests.tables.MyDisabledAction'>,)
verbose_name = 'Disabled Actions Table'
DisabledActionsTable.base_actions = {'toggle': <MyDisabledAction: toggle>}
DisabledActionsTable.base_columns = {'id': <Column: id>}
class horizon.test.tests.tables.FakeObject(id, name, value, status, optional=None, excluded=None)[source]

Bases: object

class horizon.test.tests.tables.FormsetTableTests(methodName='runTest')[source]

Bases: horizon.test.helpers.TestCase

test_populate()[source]

Create a FormsetDataTable and populate it with data.

class horizon.test.tests.tables.MultiTableView(*args, **kwargs)[source]

Bases: horizon.tables.views.MultiTableView

get_my_table_data()[source]
get_table_with_permissions_data()[source]
table_classes = (<class 'horizon.test.tests.tables.TableWithPermissions'>, <class 'horizon.test.tests.tables.MyTable'>)
class horizon.test.tests.tables.MyAction(single_func=None, multiple_func=None, handle_func=None, attrs=None, **kwargs)[source]

Bases: horizon.tables.actions.Action

allowed(request, obj=None)[source]
base_options = {'__module__': 'horizon.test.tests.tables', 'verbose_name_plural': 'Delete Them', 'handle': <function handle at 0x7fad67a48578>, 'name': 'delete', 'verbose_name': 'Delete Me', 'data_type_matched': <function data_type_matched at 0x7fad6b361d70>, 'get_default_classes': <function get_default_classes at 0x7fad6b361aa0>, 'update': <function update at 0x7fad6b361b18>, 'get_policy_target': <function get_policy_target at 0x7fad6b361488>, 'associate_with_table': <function associate_with_table at 0x7fad6b2d40c8>, '_allowed': <function _allowed at 0x7fad6b361f50>, 'get_param_name': <function get_param_name at 0x7fad6b2d4140>, 'allowed': <function allowed at 0x7fad67a48500>, 'get_default_attrs': <function get_default_attrs at 0x7fad6b361cf8>, 'base_options': {'__module__': 'horizon.tables.actions', 'data_type_matched': <function data_type_matched at 0x7fad6b361d70>, 'get_default_classes': <function get_default_classes at 0x7fad6b361aa0>, 'update': <function update at 0x7fad6b361b18>, 'get_policy_target': <function get_policy_target at 0x7fad6b361488>, 'associate_with_table': <function associate_with_table at 0x7fad6b2d40c8>, '_allowed': <function _allowed at 0x7fad6b361f50>, '__repr__': <function __repr__ at 0x7fad6b32b7d0>, 'allowed': <function allowed at 0x7fad6b361578>, 'get_default_attrs': <function get_default_attrs at 0x7fad6b361cf8>, 'base_options': {...}, '__doc__': 'Common base class for all ``Action`` classes.', '__init__': <function __init__ at 0x7fad6b3618c0>}, '__doc__': 'Represents an action which can be taken on this table\'s data.\n\n .. attribute:: name\n\n Required. The short name or "slug" representing this\n action. This name should not be changed at runtime.\n\n .. attribute:: verbose_name\n\n A descriptive name used for display purposes. Defaults to the\n value of ``name`` with the first letter of each word capitalized.\n\n .. attribute:: verbose_name_plural\n\n Used like ``verbose_name`` in cases where ``handles_multiple`` is\n ``True``. Defaults to ``verbose_name`` with the letter "s" appended.\n\n .. attribute:: method\n\n The HTTP method for this action. Defaults to ``POST``. Other methods\n may or may not succeed currently.\n\n .. attribute:: requires_input\n\n Boolean value indicating whether or not this action can be taken\n without any additional input (e.g. an object id). Defaults to ``True``.\n\n .. attribute:: preempt\n\n Boolean value indicating whether this action should be evaluated in\n the period after the table is instantiated but before the data has\n been loaded.\n\n This can allow actions which don\'t need access to the full table data\n to bypass any API calls and processing which would otherwise be\n required to load the table.\n\n .. attribute:: allowed_data_types\n\n A list that contains the allowed data types of the action. If the\n datum\'s type is in this list, the action will be shown on the row\n for the datum.\n\n Default to be an empty list (``[]``). When set to empty, the action\n will accept any kind of data.\n\n .. attribute:: policy_rules\n\n list of scope and rule tuples to do policy checks on, the\n composition of which is (scope, rule)\n\n scope: service type managing the policy for action\n rule: string representing the action to be checked\n\n for a policy that requires a single rule check:\n policy_rules should look like\n "(("compute", "compute:create_instance"),)"\n for a policy that requires multiple rule checks:\n rules should look like\n "(("identity", "identity:list_users"),\n ("identity", "identity:list_roles"))"\n\n At least one of the following methods must be defined:\n\n .. method:: single(self, data_table, request, object_id)\n\n Handler for a single-object action.\n\n .. method:: multiple(self, data_table, request, object_ids)\n\n Handler for multi-object actions.\n\n .. method:: handle(self, data_table, request, object_ids)\n\n If a single function can work for both single-object and\n multi-object cases then simply providing a ``handle`` function\n will internally route both ``single`` and ``multiple`` requests\n to ``handle`` with the calls from ``single`` being transformed\n into a list containing only the single object id.\n ', '__init__': <function __init__ at 0x7fad6b3615f0>, '__repr__': <function __repr__ at 0x7fad6b32b7d0>}
handle(data_table, request, object_ids)[source]
name = 'delete'
verbose_name = 'Delete Me'
verbose_name_plural = 'Delete Them'
class horizon.test.tests.tables.MyBatchAction(**kwargs)[source]

Bases: horizon.tables.actions.BatchAction

action(request, object_ids)[source]
action_past = 'Batched'
action_present = 'Batch'
base_options = {'__module__': 'horizon.test.tests.tables', 'handle': <function handle at 0x7fad6b2d4b90>, 'data_type_singular': 'Item', 'update': <function update at 0x7fad6b2d4aa0>, 'get_success_url': <function get_success_url at 0x7fad6b2d4b18>, 'get_policy_target': <function get_policy_target at 0x7fad6b361488>, 'allowed': <function allowed at 0x7fad6b361578>, 'base_options': {'__module__': 'horizon.tables.actions', 'data_type_matched': <function data_type_matched at 0x7fad6b361d70>, 'get_default_classes': <function get_default_classes at 0x7fad6b361aa0>, 'update': <function update at 0x7fad6b361b18>, 'get_policy_target': <function get_policy_target at 0x7fad6b361488>, 'associate_with_table': <function associate_with_table at 0x7fad6b2d40c8>, '_allowed': <function _allowed at 0x7fad6b361f50>, '__repr__': <function __repr__ at 0x7fad6b32b7d0>, 'allowed': <function allowed at 0x7fad6b361578>, 'get_default_attrs': <function get_default_attrs at 0x7fad6b361cf8>, 'base_options': {...}, '__doc__': 'Common base class for all ``Action`` classes.', '__init__': <function __init__ at 0x7fad6b3618c0>}, '__init__': <function __init__ at 0x7fad6b2d48c0>, 'name': 'batch', 'data_type_plural': 'Items', 'action_present': 'Batch', 'action_past': 'Batched', 'data_type_matched': <function data_type_matched at 0x7fad6b361d70>, 'get_default_classes': <function get_default_classes at 0x7fad6b361aa0>, 'get_param_name': <function get_param_name at 0x7fad6b2d4140>, 'associate_with_table': <function associate_with_table at 0x7fad6b2d40c8>, '_allowed': <function _allowed at 0x7fad6b2d4938>, '_get_action_name': <function _get_action_name at 0x7fad6b2d49b0>, '__repr__': <function __repr__ at 0x7fad6b32b7d0>, 'action': <function action at 0x7fad67a486e0>, 'get_default_attrs': <function get_default_attrs at 0x7fad6b361cf8>, '__doc__': 'A table action which takes batch action on one or more\n objects. This action should not require user input on a\n per-object basis.\n\n .. attribute:: name\n\n An internal name for this action.\n\n .. method:: action_present\n\n Method accepting an integer/long parameter and returning the display\n forms of the name properly pluralised (depending on the integer) and\n translated in a string or tuple/list.\n\n .. attribute:: action_present (PendingDeprecation)\n\n String or tuple/list. The display forms of the name.\n Should be a transitive verb, capitalized and translated. ("Delete",\n "Rotate", etc.) If tuple or list - then setting\n self.current_present_action = n will set the current active item\n from the list(action_present[n])\n\n You can pass a complete action name including \'data_type\' by specifying\n \'%(data_type)s\' substitution in action_present ("Delete %(data_type)s").\n Otherwise a complete action name is a format of "<action> <data_type>".\n <data_type> is determined based on the number of items.\n By passing a complete action name you allow translators to control\n the order of words as they want.\n\n NOTE: action_present attribute is bad for translations and should be\n avoided. Please use the action_present method instead.\n This form is kept for legacy.\n\n .. method:: action_past\n\n Method accepting an integer/long parameter and returning the display\n forms of the name properly pluralised (depending on the integer) and\n translated in a string or tuple/list.\n\n .. attribute:: action_past (PendingDeprecation)\n\n String or tuple/list. The past tense of action_present. ("Deleted",\n "Rotated", etc.) If tuple or list - then\n setting self.current_past_action = n will set the current active item\n from the list(action_past[n])\n\n NOTE: action_past attribute is bad for translations and should be\n avoided. Please use the action_past method instead.\n This form is kept for legacy.\n\n .. attribute:: data_type_singular\n\n Optional display name (if the data_type method is not defined) for the\n type of data that receives the action. ("Key Pair", "Floating IP", etc.)\n\n .. attribute:: data_type_plural\n\n Optional plural word (if the data_type method is not defined) for the\n type of data being acted on. Defaults to appending \'s\'. Relying on the\n default is bad for translations and should not be done, so it\'s absence\n will raise a DeprecationWarning. It is currently kept as optional for\n legacy code.\n\n NOTE: data_type_singular and data_type_plural attributes are bad for\n translations and should be avoided. Please use the action_present and\n action_past methods. This form is kept for legacy.\n\n .. attribute:: success_url\n\n Optional location to redirect after completion of the delete\n action. Defaults to the current page.\n '}
data_type_plural = 'Items'
data_type_singular = 'Item'
name = 'batch'
class horizon.test.tests.tables.MyColumn(transform, verbose_name=None, sortable=True, link=None, allowed_data_types=[], hidden=False, attrs=None, status=False, status_choices=None, display_choices=None, empty_value=None, filters=None, classes=None, summation=None, auto=None, truncate=None, link_classes=None, wrap_list=False, form_field=None, form_field_attributes=None, update_action=None, link_attrs=None, cell_attributes_getter=None)[source]

Bases: horizon.tables.base.Column

class horizon.test.tests.tables.MyDisabledAction(**kwargs)[source]

Bases: horizon.test.tests.tables.MyToggleAction

allowed(request, obj=None)[source]
base_options = {'__module__': 'horizon.test.tests.tables', 'handle': <function handle at 0x7fad6b2d4b90>, 'data_type_singular': 'Item', 'update': <function update at 0x7fad6b2d4aa0>, 'get_success_url': <function get_success_url at 0x7fad6b2d4b18>, 'get_param_name': <function get_param_name at 0x7fad6b2d4140>, 'allowed': <function allowed at 0x7fad67a48848>, 'base_options': {'__module__': 'horizon.tables.actions', 'data_type_matched': <function data_type_matched at 0x7fad6b361d70>, 'get_default_classes': <function get_default_classes at 0x7fad6b361aa0>, 'update': <function update at 0x7fad6b361b18>, 'get_policy_target': <function get_policy_target at 0x7fad6b361488>, 'associate_with_table': <function associate_with_table at 0x7fad6b2d40c8>, '_allowed': <function _allowed at 0x7fad6b361f50>, '__repr__': <function __repr__ at 0x7fad6b32b7d0>, 'allowed': <function allowed at 0x7fad6b361578>, 'get_default_attrs': <function get_default_attrs at 0x7fad6b361cf8>, 'base_options': {...}, '__doc__': 'Common base class for all ``Action`` classes.', '__init__': <function __init__ at 0x7fad6b3618c0>}, '__init__': <function __init__ at 0x7fad6b2d48c0>, 'name': 'toggle', 'data_type_plural': 'Items', 'action_present': ('Down', 'Up'), 'action_past': ('Downed', 'Upped'), 'data_type_matched': <function data_type_matched at 0x7fad6b361d70>, 'get_default_classes': <function get_default_classes at 0x7fad6b361aa0>, 'get_policy_target': <function get_policy_target at 0x7fad6b361488>, 'associate_with_table': <function associate_with_table at 0x7fad6b2d40c8>, '_allowed': <function _allowed at 0x7fad6b2d4938>, '_get_action_name': <function _get_action_name at 0x7fad6b2d49b0>, '__repr__': <function __repr__ at 0x7fad6b32b7d0>, 'action': <function action at 0x7fad67a487d0>, 'get_default_attrs': <function get_default_attrs at 0x7fad6b361cf8>, '__doc__': 'A table action which takes batch action on one or more\n objects. This action should not require user input on a\n per-object basis.\n\n .. attribute:: name\n\n An internal name for this action.\n\n .. method:: action_present\n\n Method accepting an integer/long parameter and returning the display\n forms of the name properly pluralised (depending on the integer) and\n translated in a string or tuple/list.\n\n .. attribute:: action_present (PendingDeprecation)\n\n String or tuple/list. The display forms of the name.\n Should be a transitive verb, capitalized and translated. ("Delete",\n "Rotate", etc.) If tuple or list - then setting\n self.current_present_action = n will set the current active item\n from the list(action_present[n])\n\n You can pass a complete action name including \'data_type\' by specifying\n \'%(data_type)s\' substitution in action_present ("Delete %(data_type)s").\n Otherwise a complete action name is a format of "<action> <data_type>".\n <data_type> is determined based on the number of items.\n By passing a complete action name you allow translators to control\n the order of words as they want.\n\n NOTE: action_present attribute is bad for translations and should be\n avoided. Please use the action_present method instead.\n This form is kept for legacy.\n\n .. method:: action_past\n\n Method accepting an integer/long parameter and returning the display\n forms of the name properly pluralised (depending on the integer) and\n translated in a string or tuple/list.\n\n .. attribute:: action_past (PendingDeprecation)\n\n String or tuple/list. The past tense of action_present. ("Deleted",\n "Rotated", etc.) If tuple or list - then\n setting self.current_past_action = n will set the current active item\n from the list(action_past[n])\n\n NOTE: action_past attribute is bad for translations and should be\n avoided. Please use the action_past method instead.\n This form is kept for legacy.\n\n .. attribute:: data_type_singular\n\n Optional display name (if the data_type method is not defined) for the\n type of data that receives the action. ("Key Pair", "Floating IP", etc.)\n\n .. attribute:: data_type_plural\n\n Optional plural word (if the data_type method is not defined) for the\n type of data being acted on. Defaults to appending \'s\'. Relying on the\n default is bad for translations and should not be done, so it\'s absence\n will raise a DeprecationWarning. It is currently kept as optional for\n legacy code.\n\n NOTE: data_type_singular and data_type_plural attributes are bad for\n translations and should be avoided. Please use the action_present and\n action_past methods. This form is kept for legacy.\n\n .. attribute:: success_url\n\n Optional location to redirect after completion of the delete\n action. Defaults to the current page.\n '}
class horizon.test.tests.tables.MyFilterAction(**kwargs)[source]

Bases: horizon.tables.actions.FilterAction

base_options = {'__module__': 'horizon.test.tests.tables', 'is_api_filter': <function is_api_filter at 0x7fad6b2d4668>, 'update': <function update at 0x7fad6b361b18>, 'get_policy_target': <function get_policy_target at 0x7fad6b361488>, 'allowed': <function allowed at 0x7fad6b361578>, 'base_options': {'__module__': 'horizon.tables.actions', 'data_type_matched': <function data_type_matched at 0x7fad6b361d70>, 'get_default_classes': <function get_default_classes at 0x7fad6b361aa0>, 'update': <function update at 0x7fad6b361b18>, 'get_policy_target': <function get_policy_target at 0x7fad6b361488>, 'associate_with_table': <function associate_with_table at 0x7fad6b2d40c8>, '_allowed': <function _allowed at 0x7fad6b361f50>, '__repr__': <function __repr__ at 0x7fad6b32b7d0>, 'allowed': <function allowed at 0x7fad6b361578>, 'get_default_attrs': <function get_default_attrs at 0x7fad6b361cf8>, 'base_options': {...}, '__doc__': 'Common base class for all ``Action`` classes.', '__init__': <function __init__ at 0x7fad6b3618c0>}, '__init__': <function __init__ at 0x7fad6b2d4410>, 'filter': <function filter at 0x7fad67a488c0>, 'name': 'filter', 'data_type_matched': <function data_type_matched at 0x7fad6b361d70>, 'get_default_classes': <function get_default_classes at 0x7fad6b361aa0>, 'get_param_name': <function get_param_name at 0x7fad6b2d4488>, '__doc__': 'A base class representing a filter action for a table.\n\n .. attribute:: name\n\n The short name or "slug" representing this action. Defaults to\n ``"filter"``.\n\n .. attribute:: verbose_name\n\n A descriptive name used for display purposes. Defaults to the\n value of ``name`` with the first letter of each word capitalized.\n\n .. attribute:: param_name\n\n A string representing the name of the request parameter used for the\n search term. Default: ``"q"``.\n\n .. attribute: filter_type\n\n A string representing the type of this filter. If this is set to\n ``"server"`` then ``filter_choices`` must also be provided.\n Default: ``"query"``.\n\n .. attribute: filter_choices\n\n Required for server type filters. A tuple of tuples representing the\n filter options. Tuple composition should evaluate to (string, string,\n boolean), representing the filter parameter, display value, and whether\n or not it should be applied to the API request as an API query\n attribute. API type filters do not need to be accounted for in the\n filter method since the API will do the filtering. However, server\n type filters in general will need to be performed in the filter method.\n By default this attribute is not provided.\n\n .. attribute: needs_preloading\n\n If True, the filter function will be called for the initial\n GET request with an empty ``filter_string``, regardless of the\n value of ``method``.\n ', 'data_type_filter': <function data_type_filter at 0x7fad6b2d4578>, '_allowed': <function _allowed at 0x7fad6b361f50>, '__repr__': <function __repr__ at 0x7fad6b32b7d0>, 'get_default_attrs': <function get_default_attrs at 0x7fad6b361cf8>, 'assign_type_string': <function assign_type_string at 0x7fad6b2d4500>, 'associate_with_table': <function associate_with_table at 0x7fad6b2d40c8>}
filter(table, objs, filter_string)[source]
class horizon.test.tests.tables.MyLinkAction(attrs=None, **kwargs)[source]

Bases: horizon.tables.actions.LinkAction

attrs = {'class': 'ajax-modal'}
base_options = {'__module__': 'horizon.test.tests.tables', 'render': <function render at 0x7fad6b2d42a8>, 'update': <function update at 0x7fad6b361b18>, 'get_link_url': <function get_link_url at 0x7fad67a48488>, 'ajax': False, 'attrs': {'class': 'ajax-modal'}, 'allowed': <function allowed at 0x7fad6b361578>, 'base_options': {'__module__': 'horizon.tables.actions', 'data_type_matched': <function data_type_matched at 0x7fad6b361d70>, 'get_default_classes': <function get_default_classes at 0x7fad6b361aa0>, 'update': <function update at 0x7fad6b361b18>, 'get_policy_target': <function get_policy_target at 0x7fad6b361488>, 'associate_with_table': <function associate_with_table at 0x7fad6b2d40c8>, '_allowed': <function _allowed at 0x7fad6b361f50>, '__repr__': <function __repr__ at 0x7fad6b32b7d0>, 'allowed': <function allowed at 0x7fad6b361578>, 'get_default_attrs': <function get_default_attrs at 0x7fad6b361cf8>, 'base_options': {...}, '__doc__': 'Common base class for all ``Action`` classes.', '__init__': <function __init__ at 0x7fad6b3618c0>}, 'get_default_attrs': <function get_default_attrs at 0x7fad6b361cf8>, '__init__': <function __init__ at 0x7fad6b2d41b8>, 'name': 'login', 'url': 'login', 'data_type_matched': <function data_type_matched at 0x7fad6b361d70>, 'get_default_classes': <function get_default_classes at 0x7fad6b361aa0>, 'get_policy_target': <function get_policy_target at 0x7fad6b361488>, 'associate_with_table': <function associate_with_table at 0x7fad6b2d4320>, '_allowed': <function _allowed at 0x7fad6b361f50>, '__repr__': <function __repr__ at 0x7fad6b32b7d0>, 'get_ajax_update_url': <function get_ajax_update_url at 0x7fad6b2d4230>, 'verbose_name': 'Log In', '__doc__': 'A table action which is simply a link rather than a form POST.\n\n .. attribute:: name\n\n Required. The short name or "slug" representing this\n action. This name should not be changed at runtime.\n\n .. attribute:: verbose_name\n\n A string which will be rendered as the link text. (Required)\n\n .. attribute:: url\n\n A string or a callable which resolves to a url to be used as the link\n target. You must either define the ``url`` attribute or override\n the ``get_link_url`` method on the class.\n\n .. attribute:: allowed_data_types\n\n A list that contains the allowed data types of the action. If the\n datum\'s type is in this list, the action will be shown on the row\n for the datum.\n\n Defaults to be an empty list (``[]``). When set to empty, the action\n will accept any kind of data.\n '}
get_link_url(datum=None, *args, **kwargs)[source]
name = 'login'
url = 'login'
verbose_name = 'Log In'
class horizon.test.tests.tables.MyRow(table, datum=None)[source]

Bases: horizon.tables.base.Row

ajax = True
classmethod get_data(request, obj_id)[source]
class horizon.test.tests.tables.MyRowSelectable(table, datum=None)[source]

Bases: horizon.tables.base.Row

ajax = True
can_be_selected(datum)[source]
class horizon.test.tests.tables.MyServerFilterAction(**kwargs)[source]

Bases: horizon.tables.actions.FilterAction

base_options = {'__module__': 'horizon.test.tests.tables', 'is_api_filter': <function is_api_filter at 0x7fad6b2d4668>, 'update': <function update at 0x7fad6b361b18>, 'filter_type': 'server', 'needs_preloading': True, 'get_policy_target': <function get_policy_target at 0x7fad6b361488>, 'allowed': <function allowed at 0x7fad6b361578>, 'base_options': {'__module__': 'horizon.tables.actions', 'data_type_matched': <function data_type_matched at 0x7fad6b361d70>, 'get_default_classes': <function get_default_classes at 0x7fad6b361aa0>, 'update': <function update at 0x7fad6b361b18>, 'get_policy_target': <function get_policy_target at 0x7fad6b361488>, 'associate_with_table': <function associate_with_table at 0x7fad6b2d40c8>, '_allowed': <function _allowed at 0x7fad6b361f50>, '__repr__': <function __repr__ at 0x7fad6b32b7d0>, 'allowed': <function allowed at 0x7fad6b361578>, 'get_default_attrs': <function get_default_attrs at 0x7fad6b361cf8>, 'base_options': {...}, '__doc__': 'Common base class for all ``Action`` classes.', '__init__': <function __init__ at 0x7fad6b3618c0>}, '__init__': <function __init__ at 0x7fad6b2d4410>, 'filter': <function filter at 0x7fad67a48938>, 'name': 'filter', 'filter_choices': (('name', 'Name', False), ('status', 'Status', True)), 'data_type_matched': <function data_type_matched at 0x7fad6b361d70>, 'get_default_classes': <function get_default_classes at 0x7fad6b361aa0>, 'get_param_name': <function get_param_name at 0x7fad6b2d4488>, '__doc__': 'A base class representing a filter action for a table.\n\n .. attribute:: name\n\n The short name or "slug" representing this action. Defaults to\n ``"filter"``.\n\n .. attribute:: verbose_name\n\n A descriptive name used for display purposes. Defaults to the\n value of ``name`` with the first letter of each word capitalized.\n\n .. attribute:: param_name\n\n A string representing the name of the request parameter used for the\n search term. Default: ``"q"``.\n\n .. attribute: filter_type\n\n A string representing the type of this filter. If this is set to\n ``"server"`` then ``filter_choices`` must also be provided.\n Default: ``"query"``.\n\n .. attribute: filter_choices\n\n Required for server type filters. A tuple of tuples representing the\n filter options. Tuple composition should evaluate to (string, string,\n boolean), representing the filter parameter, display value, and whether\n or not it should be applied to the API request as an API query\n attribute. API type filters do not need to be accounted for in the\n filter method since the API will do the filtering. However, server\n type filters in general will need to be performed in the filter method.\n By default this attribute is not provided.\n\n .. attribute: needs_preloading\n\n If True, the filter function will be called for the initial\n GET request with an empty ``filter_string``, regardless of the\n value of ``method``.\n ', 'data_type_filter': <function data_type_filter at 0x7fad6b2d4578>, '_allowed': <function _allowed at 0x7fad6b361f50>, '__repr__': <function __repr__ at 0x7fad6b32b7d0>, 'get_default_attrs': <function get_default_attrs at 0x7fad6b361cf8>, 'assign_type_string': <function assign_type_string at 0x7fad6b2d4500>, 'associate_with_table': <function associate_with_table at 0x7fad6b2d40c8>}
filter(table, items, filter_string)[source]
filter_choices = (('name', 'Name', False), ('status', 'Status', True))
filter_type = 'server'
needs_preloading = True
class horizon.test.tests.tables.MyServerFilterTable(request, data=None, needs_form_wrapper=None, **kwargs)[source]

Bases: horizon.test.tests.tables.MyTable

class Meta[source]
column_class

alias of MyColumn

columns = ('id', 'name', 'value', 'optional', 'status')
name = 'my_table'
row_actions = (<class 'horizon.test.tests.tables.MyAction'>, <class 'horizon.test.tests.tables.MyLinkAction'>, <class 'horizon.test.tests.tables.MyBatchAction'>, <class 'horizon.test.tests.tables.MyToggleAction'>)
row_class

alias of MyRow

status_columns = ['status']
table_actions = (<class 'horizon.test.tests.tables.MyServerFilterAction'>, <class 'horizon.test.tests.tables.MyAction'>, <class 'horizon.test.tests.tables.MyBatchAction'>)
verbose_name = 'My Table'
MyServerFilterTable.base_actions = {'batch': <MyBatchAction: batch>, 'delete': <MyAction: delete>, 'filter': <MyServerFilterAction: filter>, 'login': <MyLinkAction: login>, 'toggle': <MyToggleAction: toggle>}
MyServerFilterTable.base_columns = {'id': <Column: id>, 'name': <Column: name>, 'value': <Column: value>, 'status': <Column: status>, 'optional': <Column: optional>, 'excluded': <Column: excluded>}
class horizon.test.tests.tables.MyTable(request, data=None, needs_form_wrapper=None, **kwargs)[source]

Bases: horizon.tables.base.DataTable

class Meta[source]
column_class

alias of MyColumn

columns = ('id', 'name', 'value', 'optional', 'status')
name = 'my_table'
row_actions = (<class 'horizon.test.tests.tables.MyAction'>, <class 'horizon.test.tests.tables.MyLinkAction'>, <class 'horizon.test.tests.tables.MyBatchAction'>, <class 'horizon.test.tests.tables.MyToggleAction'>)
row_class

alias of MyRow

status_columns = ['status']
table_actions = (<class 'horizon.test.tests.tables.MyFilterAction'>, <class 'horizon.test.tests.tables.MyAction'>, <class 'horizon.test.tests.tables.MyBatchAction'>)
verbose_name = 'My Table'
MyTable.base_actions = {'batch': <MyBatchAction: batch>, 'delete': <MyAction: delete>, 'filter': <MyFilterAction: filter>, 'login': <MyLinkAction: login>, 'toggle': <MyToggleAction: toggle>}
MyTable.base_columns = {'id': <Column: id>, 'name': <Column: name>, 'value': <Column: value>, 'status': <Column: status>, 'optional': <Column: optional>, 'excluded': <Column: excluded>}
MyTable.tooltip_dict = {'down': {'style': 'color:red;cursor:pointer', 'title': 'service is not available'}, 'up': {'style': 'color:green;cursor:pointer', 'title': 'service is up and running'}}
class horizon.test.tests.tables.MyTableNotAllowedInlineEdit(request, data=None, needs_form_wrapper=None, **kwargs)[source]

Bases: horizon.test.tests.tables.MyTable

class Meta[source]
columns = ('id', 'name', 'value', 'optional', 'status')
name = 'my_table'
row_class

alias of MyRow

MyTableNotAllowedInlineEdit.base_actions = {}
MyTableNotAllowedInlineEdit.base_columns = {'id': <Column: id>, 'name': <Column: name>, 'value': <Column: value>, 'status': <Column: status>, 'optional': <Column: optional>, 'excluded': <Column: excluded>}
class horizon.test.tests.tables.MyTableSelectable(request, data=None, needs_form_wrapper=None, **kwargs)[source]

Bases: horizon.test.tests.tables.MyTable

class Meta[source]
columns = ('id', 'name', 'value', 'status')
multi_select = True
name = 'my_table'
row_class

alias of MyRowSelectable

status_columns = ['status']
MyTableSelectable.base_actions = {}
MyTableSelectable.base_columns = {'id': <Column: id>, 'name': <Column: name>, 'value': <Column: value>, 'status': <Column: status>, 'optional': <Column: optional>, 'excluded': <Column: excluded>}
class horizon.test.tests.tables.MyTableWrapList(request, data=None, needs_form_wrapper=None, **kwargs)[source]

Bases: horizon.test.tests.tables.MyTable

base_actions = {}
base_columns = {'id': <Column: id>, 'name': <Column: name>, 'value': <Column: value>, 'status': <Column: status>, 'optional': <Column: optional>, 'excluded': <Column: excluded>}
class horizon.test.tests.tables.MyToggleAction(**kwargs)[source]

Bases: horizon.tables.actions.BatchAction

action(request, object_ids)[source]
action_past = ('Downed', 'Upped')
action_present = ('Down', 'Up')
allowed(request, obj=None)[source]
base_options = {'__module__': 'horizon.test.tests.tables', 'handle': <function handle at 0x7fad6b2d4b90>, 'data_type_singular': 'Item', 'update': <function update at 0x7fad6b2d4aa0>, 'get_success_url': <function get_success_url at 0x7fad6b2d4b18>, 'get_policy_target': <function get_policy_target at 0x7fad6b361488>, 'allowed': <function allowed at 0x7fad67a48758>, 'base_options': {'__module__': 'horizon.tables.actions', 'data_type_matched': <function data_type_matched at 0x7fad6b361d70>, 'get_default_classes': <function get_default_classes at 0x7fad6b361aa0>, 'update': <function update at 0x7fad6b361b18>, 'get_policy_target': <function get_policy_target at 0x7fad6b361488>, 'associate_with_table': <function associate_with_table at 0x7fad6b2d40c8>, '_allowed': <function _allowed at 0x7fad6b361f50>, '__repr__': <function __repr__ at 0x7fad6b32b7d0>, 'allowed': <function allowed at 0x7fad6b361578>, 'get_default_attrs': <function get_default_attrs at 0x7fad6b361cf8>, 'base_options': {...}, '__doc__': 'Common base class for all ``Action`` classes.', '__init__': <function __init__ at 0x7fad6b3618c0>}, '__init__': <function __init__ at 0x7fad6b2d48c0>, 'name': 'toggle', 'data_type_plural': 'Items', 'action_present': ('Down', 'Up'), 'action_past': ('Downed', 'Upped'), 'data_type_matched': <function data_type_matched at 0x7fad6b361d70>, 'get_default_classes': <function get_default_classes at 0x7fad6b361aa0>, 'get_param_name': <function get_param_name at 0x7fad6b2d4140>, 'associate_with_table': <function associate_with_table at 0x7fad6b2d40c8>, '_allowed': <function _allowed at 0x7fad6b2d4938>, '_get_action_name': <function _get_action_name at 0x7fad6b2d49b0>, '__repr__': <function __repr__ at 0x7fad6b32b7d0>, 'action': <function action at 0x7fad67a487d0>, 'get_default_attrs': <function get_default_attrs at 0x7fad6b361cf8>, '__doc__': 'A table action which takes batch action on one or more\n objects. This action should not require user input on a\n per-object basis.\n\n .. attribute:: name\n\n An internal name for this action.\n\n .. method:: action_present\n\n Method accepting an integer/long parameter and returning the display\n forms of the name properly pluralised (depending on the integer) and\n translated in a string or tuple/list.\n\n .. attribute:: action_present (PendingDeprecation)\n\n String or tuple/list. The display forms of the name.\n Should be a transitive verb, capitalized and translated. ("Delete",\n "Rotate", etc.) If tuple or list - then setting\n self.current_present_action = n will set the current active item\n from the list(action_present[n])\n\n You can pass a complete action name including \'data_type\' by specifying\n \'%(data_type)s\' substitution in action_present ("Delete %(data_type)s").\n Otherwise a complete action name is a format of "<action> <data_type>".\n <data_type> is determined based on the number of items.\n By passing a complete action name you allow translators to control\n the order of words as they want.\n\n NOTE: action_present attribute is bad for translations and should be\n avoided. Please use the action_present method instead.\n This form is kept for legacy.\n\n .. method:: action_past\n\n Method accepting an integer/long parameter and returning the display\n forms of the name properly pluralised (depending on the integer) and\n translated in a string or tuple/list.\n\n .. attribute:: action_past (PendingDeprecation)\n\n String or tuple/list. The past tense of action_present. ("Deleted",\n "Rotated", etc.) If tuple or list - then\n setting self.current_past_action = n will set the current active item\n from the list(action_past[n])\n\n NOTE: action_past attribute is bad for translations and should be\n avoided. Please use the action_past method instead.\n This form is kept for legacy.\n\n .. attribute:: data_type_singular\n\n Optional display name (if the data_type method is not defined) for the\n type of data that receives the action. ("Key Pair", "Floating IP", etc.)\n\n .. attribute:: data_type_plural\n\n Optional plural word (if the data_type method is not defined) for the\n type of data being acted on. Defaults to appending \'s\'. Relying on the\n default is bad for translations and should not be done, so it\'s absence\n will raise a DeprecationWarning. It is currently kept as optional for\n legacy code.\n\n NOTE: data_type_singular and data_type_plural attributes are bad for\n translations and should be avoided. Please use the action_present and\n action_past methods. This form is kept for legacy.\n\n .. attribute:: success_url\n\n Optional location to redirect after completion of the delete\n action. Defaults to the current page.\n '}
data_type_plural = 'Items'
data_type_singular = 'Item'
name = 'toggle'
class horizon.test.tests.tables.MyUpdateAction[source]

Bases: horizon.tables.actions.UpdateAction

allowed(*args)[source]
update_cell(*args)[source]
class horizon.test.tests.tables.MyUpdateActionNotAllowed[source]

Bases: horizon.test.tests.tables.MyUpdateAction

allowed(*args)[source]
class horizon.test.tests.tables.NoActionsTable(request, data=None, needs_form_wrapper=None, **kwargs)[source]

Bases: horizon.tables.base.DataTable

class Meta[source]
name = 'no_actions_table'
row_actions = ()
table_actions = ()
verbose_name = 'No Actions Table'
NoActionsTable.base_actions = {}
NoActionsTable.base_columns = {'id': <Column: id>}
class horizon.test.tests.tables.SingleTableView(*args, **kwargs)[source]

Bases: horizon.tables.views.DataTableView

get_data()[source]
name = 'Single Table'
slug = 'single'
table_class

alias of MyTable

template_name = 'horizon/common/_detail_table.html'
class horizon.test.tests.tables.SingleTableViewWithPermissions(*args, **kwargs)[source]

Bases: horizon.test.tests.tables.SingleTableView

table_class

alias of TableWithPermissions

class horizon.test.tests.tables.TableWithPermissions(request, data=None, needs_form_wrapper=None, **kwargs)[source]

Bases: horizon.tables.base.DataTable

class Meta[source]
name = 'table_with_permissions'
permissions = ('horizon.test',)
TableWithPermissions.base_actions = {}
TableWithPermissions.base_columns = {'id': <Column: id>}
horizon.test.tests.tables.get_link(obj)[source]
horizon.test.tests.tables.get_name(obj)[source]

Previous topic

The horizon.test.tests Module

Next topic

The horizon.test.tests.forms Module

This Page