2015-07-06 18:22:48 +00:00
===============
2015-05-29 11:53:48 +00:00
Model Reference
===============
2015-05-18 10:36:40 +00:00
2017-11-17 10:23:27 +00:00
.. automodule :: wagtail.core.models
2015-05-18 10:36:40 +00:00
2015-05-29 11:53:48 +00:00
This document contains reference information for the model classes inside the `` wagtailcore `` module.
2016-03-06 04:14:51 +00:00
.. _page-model-ref:
2015-05-29 11:53:48 +00:00
`` Page ``
2015-07-06 18:22:48 +00:00
========
2015-05-18 13:44:18 +00:00
2015-07-07 08:18:22 +00:00
Database fields
~~~~~~~~~~~~~~~
2015-05-18 10:36:40 +00:00
2015-07-07 08:18:22 +00:00
.. class :: Page
2015-05-18 10:36:40 +00:00
2015-05-18 15:30:55 +00:00
.. attribute :: title
(text)
2015-05-18 10:36:40 +00:00
2015-05-18 13:44:18 +00:00
Human-readable title of the page.
2015-05-18 10:36:40 +00:00
2017-07-06 20:21:25 +00:00
.. attribute :: draft_title
(text)
Human-readable title of the page, incorporating any changes that have been made in a draft edit (in contrast to the `` title `` field, which for published pages will be the title as it exists in the current published version).
2015-05-18 15:30:55 +00:00
.. attribute :: slug
(text)
2015-05-29 11:53:48 +00:00
This is used for constructing the page's URL.
2015-05-18 15:30:55 +00:00
For example: `` http://domain.com/blog/[my-slug]/ ``
.. attribute :: content_type
(foreign key to `` django.contrib.contenttypes.models.ContentType `` )
2015-05-18 10:36:40 +00:00
2015-05-18 15:30:55 +00:00
A foreign key to the :class: `~django.contrib.contenttypes.models.ContentType` object that represents the specific model of this page.
2015-05-18 13:44:18 +00:00
2015-05-18 15:30:55 +00:00
.. attribute :: live
2015-05-18 10:36:40 +00:00
2015-05-18 15:30:55 +00:00
(boolean)
2015-05-18 10:36:40 +00:00
2015-05-18 15:30:55 +00:00
A boolean that is set to `` True `` if the page is published.
2015-05-18 10:36:40 +00:00
2015-05-18 15:30:55 +00:00
Note: this field defaults to `` True `` meaning that any pages that are created programmatically will be published by default.
2015-05-18 10:36:40 +00:00
2015-05-18 15:30:55 +00:00
.. attribute :: has_unpublished_changes
2015-05-18 10:36:40 +00:00
2015-05-18 15:30:55 +00:00
(boolean)
2015-05-18 10:36:40 +00:00
2015-05-18 15:30:55 +00:00
A boolean that is set to `` True `` when the page is either in draft or published with draft changes.
2015-05-18 10:36:40 +00:00
2015-05-18 15:30:55 +00:00
.. attribute :: owner
2015-05-18 10:36:40 +00:00
2015-05-18 15:30:55 +00:00
(foreign key to user model)
2015-05-18 10:36:40 +00:00
2015-05-18 15:30:55 +00:00
A foreign key to the user that created the page.
2015-05-18 10:36:40 +00:00
2015-05-18 15:30:55 +00:00
.. attribute :: first_published_at
2015-05-18 10:36:40 +00:00
2015-05-18 15:30:55 +00:00
(date/time)
2015-05-18 10:36:40 +00:00
2015-05-18 15:30:55 +00:00
The date/time when the page was first published.
2015-05-18 13:44:18 +00:00
2017-06-02 09:58:34 +00:00
.. attribute :: last_published_at
(date/time)
The date/time when the page was last published.
2015-05-18 15:30:55 +00:00
.. attribute :: seo_title
2015-05-18 13:44:18 +00:00
2015-05-18 15:30:55 +00:00
(text)
2015-05-18 13:44:18 +00:00
2015-05-18 15:30:55 +00:00
Alternate SEO-crafted title, for use in the page's `` <title> `` HTML tag.
2015-05-18 13:44:18 +00:00
2015-05-18 15:30:55 +00:00
.. attribute :: search_description
2015-05-18 13:44:18 +00:00
2015-05-18 15:30:55 +00:00
(text)
2015-05-18 13:44:18 +00:00
2015-05-18 15:30:55 +00:00
SEO-crafted description of the content, used for search indexing. This is also suitable for the page's `` <meta name="description"> `` HTML tag.
.. attribute :: show_in_menus
(boolean)
Toggles whether the page should be included in site-wide menus.
2018-02-06 14:10:45 +00:00
This is used by the :meth: `~wagtail.core.query.PageQuerySet.in_menu` QuerySet filter.
2017-05-26 14:09:15 +00:00
Defaults to `` False `` and can be overridden on the model with `` show_in_menus_default = True `` .
2018-02-06 14:10:45 +00:00
.. note ::
To set the global default for all pages, set `` Page.show_in_menus_default = True `` once where you first import the `` Page `` model.
2019-10-16 13:26:04 +00:00
.. attribute :: locked
(boolean)
2019-10-28 11:16:54 +00:00
When set to `` True `` , the Wagtail editor will not allow any users to edit
2019-10-16 13:26:04 +00:00
the content of the page.
2019-10-28 11:16:54 +00:00
If `` locked_by `` is also set, only that user can edit the page.
2019-10-16 13:26:04 +00:00
.. attribute :: locked_by
2020-12-02 10:40:25 +00:00
(foreign key to user model)
2019-10-16 13:26:04 +00:00
The user who has currently locked the page. Only this user can edit the page.
2020-01-02 09:41:42 +00:00
If this is `` None `` when `` locked `` is `` True `` , nobody can edit the page.
2019-10-16 13:26:04 +00:00
.. attribute :: locked_at
(date/time)
The date/time when the page was locked.
2015-05-18 10:36:40 +00:00
2020-09-28 11:04:51 +00:00
.. attribute :: alias_of
(foreign key to another page)
If set, this page is an alias of the page referenced in this field.
2020-10-19 17:40:58 +00:00
.. attribute :: locale
(foreign key to Locale)
This foreign key links to the `` Locale `` object that represents the page language.
.. attribute :: translation_key
(uuid)
A UUID that is shared between translations of a page. These are randomly generated
when a new page is created and copied when a translation of a page is made.
A translation_key value can only be used on one page in each locale.
2016-05-10 13:28:34 +00:00
Methods and properties
~~~~~~~~~~~~~~~~~~~~~~
2015-07-07 08:18:22 +00:00
2017-01-28 00:11:52 +00:00
In addition to the model fields provided, `` Page `` has many properties and methods that you may wish to reference, use, or override in creating your own models.
2015-07-07 08:18:22 +00:00
2017-11-11 10:28:58 +00:00
.. note ::
2019-11-08 09:15:01 +00:00
See also `django-treebeard <https://django-treebeard.readthedocs.io/en/latest/index.html> `_ 's `node API <https://django-treebeard.readthedocs.io/en/latest/api.html> `_ . `` Page `` is a subclass of `materialized path tree <https://django-treebeard.readthedocs.io/en/latest/mp_tree.html> `_ nodes.
2017-11-11 10:28:58 +00:00
2015-07-07 08:18:22 +00:00
.. class :: Page
2020-05-03 12:02:43 +00:00
:noindex:
2015-02-19 16:53:24 +00:00
2020-12-13 22:21:17 +00:00
.. automethod :: get_specific
2015-02-19 16:53:24 +00:00
.. autoattribute :: specific
2020-12-13 22:21:17 +00:00
.. autoattribute :: specific_deferred
2015-02-19 16:53:24 +00:00
.. autoattribute :: specific_class
2020-07-07 15:29:06 +00:00
.. autoattribute :: cached_content_type
2018-05-18 14:26:06 +00:00
.. automethod :: get_url
2015-02-19 16:53:24 +00:00
2021-08-03 14:31:54 +00:00
.. automethod :: get_full_url
2015-02-19 16:53:24 +00:00
.. autoattribute :: full_url
2016-01-21 17:09:35 +00:00
.. automethod :: relative_url
.. automethod :: get_site
.. automethod :: get_url_parts
2015-02-19 16:53:24 +00:00
.. automethod :: route
.. automethod :: serve
2020-05-01 18:01:02 +00:00
.. autoattribute :: context_object_name
Custom name for page instance in page's `` Context `` .
2015-02-19 16:53:24 +00:00
.. automethod :: get_context
.. automethod :: get_template
2016-09-28 13:55:38 +00:00
.. automethod :: get_admin_display_title
2015-02-19 16:53:24 +00:00
.. autoattribute :: preview_modes
.. automethod :: serve_preview
2017-01-26 16:44:53 +00:00
.. automethod :: get_parent
2015-02-19 16:53:24 +00:00
.. automethod :: get_ancestors
.. automethod :: get_descendants
.. automethod :: get_siblings
2020-10-19 17:40:58 +00:00
.. automethod :: get_translations
.. automethod :: get_translation
.. automethod :: get_translation_or_none
.. automethod :: has_translation
.. automethod :: copy_for_translation
.. autoattribute :: localized
.. autoattribute :: localized_draft
2015-02-19 16:53:24 +00:00
.. attribute :: search_fields
2015-10-10 02:17:54 +00:00
2015-02-19 16:53:24 +00:00
A list of fields to be indexed by the search engine. See Search docs :ref: `wagtailsearch_indexing_fields`
.. attribute :: subpage_types
2020-06-16 10:23:51 +00:00
A list of page models which can be created as children of this page type. For example, a `` BlogIndex `` page might allow a `` BlogPage `` as a child, but not a `` JobPage `` :
2015-02-19 16:53:24 +00:00
.. code-block :: python
class BlogIndex(Page):
subpage_types = ['mysite.BlogPage', 'mysite.BlogArchivePage']
2015-10-10 02:17:54 +00:00
2020-06-16 10:23:51 +00:00
The creation of child pages can be blocked altogether for a given page by setting its subpage_types attribute to an empty array:
2015-10-10 02:17:54 +00:00
2015-02-21 10:05:41 +00:00
.. code-block :: python
class BlogPage(Page):
subpage_types = []
2015-10-10 02:17:54 +00:00
2015-02-21 10:05:41 +00:00
.. attribute :: parent_page_types
2020-06-16 10:23:51 +00:00
A list of page models which are allowed as parent page types. For example, a `` BlogPage `` may only allow itself to be created below the `` BlogIndex `` page:
2015-02-21 10:05:41 +00:00
.. code-block :: python
class BlogPage(Page):
parent_page_types = ['mysite.BlogIndexPage']
2015-10-10 02:17:54 +00:00
Pages can block themselves from being created at all by setting parent_page_types to an empty array (this is useful for creating unique pages that should only be created once):
2015-02-21 10:05:41 +00:00
.. code-block :: python
class HiddenPage(Page):
parent_page_types = []
2015-02-19 16:53:24 +00:00
2021-09-03 23:21:33 +00:00
To allow for a page to be only created under the root page (e.g. for `` HomePage `` models) set the `` parent_page_type `` to `` ['wagtailcore.Page'] `` .
.. code-block :: python
class HomePage(Page):
parent_page_types = ['wagtailcore.Page']
2015-10-10 02:17:54 +00:00
.. automethod :: can_exist_under
.. automethod :: can_create_at
.. automethod :: can_move_to
2015-02-19 16:53:24 +00:00
.. attribute :: password_required_template
Defines which template file should be used to render the login form for Protected pages using this model. This overrides the default, defined using `` PASSWORD_REQUIRED_TEMPLATE `` in your settings. See :ref: `private_pages`
2015-05-18 10:36:40 +00:00
2015-08-21 10:09:36 +00:00
.. attribute :: is_creatable
2018-11-14 11:48:32 +00:00
Controls if this page can be created through the Wagtail administration. Defaults to `` True `` , and is not inherited by subclasses. This is useful when using :ref: `multi-table inheritance <django:multi-table-inheritance>` , to stop the base model from being created as an actual page.
2015-08-21 10:09:36 +00:00
2018-10-27 10:19:20 +00:00
.. attribute :: max_count
Controls the maximum number of pages of this type that can be created through the Wagtail administration interface. This is useful when needing "allow at most 3 of these pages to exist", or for singleton pages.
2019-03-15 11:32:54 +00:00
.. attribute :: max_count_per_parent
Controls the maximum number of pages of this type that can be created under any one parent page.
2017-11-01 12:37:14 +00:00
.. attribute :: exclude_fields_in_copy
An array of field names that will not be included when a Page is copied.
Useful when you have relations that do not use `ClusterableModel` or should not be copied.
.. code-block :: python
class BlogPage(Page):
exclude_fields_in_copy = ['special_relation', 'custom_uuid']
The following fields will always be excluded in a copy - `['id', 'path', 'depth', 'numchild', 'url_path', 'path']` .
2016-05-03 07:28:33 +00:00
.. attribute :: base_form_class
The form class used as a base for editing Pages of this type in the Wagtail page editor.
This attribute can be set on a model to customise the Page editor form.
2017-11-17 10:44:34 +00:00
Forms must be a subclass of :class: `~wagtail.admin.forms.WagtailAdminPageForm` .
2016-05-03 07:28:33 +00:00
See :ref: `custom_edit_handler_forms` for more information.
2019-04-04 10:39:38 +00:00
.. automethod :: with_content_json
2020-02-15 05:04:57 +00:00
.. automethod :: save
2020-09-28 11:06:22 +00:00
.. automethod :: create_alias
2020-09-28 11:07:39 +00:00
.. automethod :: update_aliases
2020-02-27 14:37:03 +00:00
.. autoattribute :: has_workflow
.. automethod :: get_workflow
.. autoattribute :: workflow_in_progress
.. autoattribute :: current_workflow_state
.. autoattribute :: current_workflow_task_state
.. autoattribute :: current_workflow_task
2016-10-01 19:04:46 +00:00
.. _site-model-ref:
2015-05-18 10:36:40 +00:00
`` Site ``
2015-07-06 18:22:48 +00:00
========
2015-05-18 10:36:40 +00:00
2015-05-18 15:30:55 +00:00
The `` Site `` model is useful for multi-site installations as it allows an administrator to configure which part of the tree to use for each hostname that the server responds on.
2020-01-24 12:21:17 +00:00
The :meth: `~wagtail.core.models.Site.find_for_request` function returns the Site object that will handle the given HTTP request.
2015-05-18 15:30:55 +00:00
2015-07-07 08:18:22 +00:00
Database fields
~~~~~~~~~~~~~~~
2015-05-18 10:36:40 +00:00
2015-07-07 08:18:22 +00:00
.. class :: Site
2015-05-18 15:30:55 +00:00
.. attribute :: hostname
(text)
This is the hostname of the site, excluding the scheme, port and path.
For example: `` www.mysite.com ``
.. note ::
If you're looking for how to get the root url of a site, use the :attr: `~Site.root_url` attribute.
.. attribute :: port
(number)
This is the port number that the site responds on.
2016-01-13 12:49:20 +00:00
.. attribute :: site_name
(text - optional)
A human-readable name for the site. This is not used by Wagtail itself, but is suitable for use on the site front-end, such as in `` <title> `` elements.
For example: `` Rod's World of Birds ``
2015-05-18 15:30:55 +00:00
.. attribute :: root_page
2017-11-17 10:23:27 +00:00
(foreign key to :class: `~wagtail.core.models.Page` )
2015-05-18 15:30:55 +00:00
This is a link to the root page of the site. This page will be what appears at the `` / `` URL on the site and would usually be a homepage.
.. attribute :: is_default_site
(boolean)
This is set to `` True `` if the site is the default. Only one site can be the default.
The default site is used as a fallback in situations where a site with the required hostname/port couldn't be found.
2015-07-07 08:18:22 +00:00
Methods and properties
~~~~~~~~~~~~~~~~~~~~~~
.. class :: Site
2020-05-03 12:02:43 +00:00
:noindex:
2015-05-18 15:30:55 +00:00
2015-05-18 10:36:40 +00:00
.. automethod :: find_for_request
.. autoattribute :: root_url
2015-05-18 15:30:55 +00:00
This returns the URL of the site. It is calculated from the :attr: `~Site.hostname` and the :attr: `~Site.port` fields.
The scheme part of the URL is calculated based on value of the :attr: `~Site.port` field:
2021-02-05 11:02:05 +00:00
- 80 = `` http:// ``
- 443 = `` https:// ``
- Everything else will use the `` http:// `` scheme and the port will be appended to the end of the hostname (eg. `` http://mysite.com:8000/ `` )
2015-05-18 15:30:55 +00:00
2015-05-18 10:36:40 +00:00
.. automethod :: get_site_root_paths
2020-10-19 17:40:58 +00:00
Locale
======
The `` Locale `` model defines the set of languages and/or locales that can be used on a site.
Each `` Locale `` record corresponds to a "language code" defined in the :ref: `wagtail_content_languages_setting` setting.
Wagtail will initially set up one `` Locale `` to act as the default language for all existing content.
This first locale will automatically pick the value from `` WAGTAIL_CONTENT_LANGUAGES `` that most closely matches the site primary language code defined in `` LANGUAGE_CODE `` .
If the primary language code is changed later, Wagtail will **not** automatically create a new `` Locale `` record or update an existing one.
Before internationalisation is enabled, all pages use this primary `` Locale `` record.
This is to satisfy the database constraints, and makes it easier to switch internationalisation on at a later date.
Changing `` WAGTAIL_CONTENT_LANGUAGES ``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Languages can be added or removed from `` WAGTAIL_CONTENT_LANGUAGES `` over time.
Before removing an option from `` WAGTAIL_CONTENT_LANGUAGES `` , it's important that the `` Locale ``
record is updated to a use a different content language or is deleted.
Any `` Locale `` instances that have invalid content languages are automatically filtered out from all
database queries making them unable to be edited or viewed.
Methods and properties
~~~~~~~~~~~~~~~~~~~~~~
.. class :: Locale
:noindex:
.. autoattribute :: language_code
.. automethod :: get_default
.. automethod :: get_active
.. automethod :: get_display_name
Translatable Mixin
==================
`` TranslatableMixin `` is an abstract model that can be added to any non-page Django model to make it translatable.
Pages already include this mixin, so there is no need to add it.
Methods and properties
~~~~~~~~~~~~~~~~~~~~~~
The `` locale `` and `` translation_key `` fields have a unique key constraint to prevent the object being translated into a language more than once.
.. class :: TranslatableMixin
:noindex:
.. attribute :: locale
(Foreign Key to :class: `~wagtail.core.models.Locale` )
For pages, this defaults to the locale of the parent page.
.. attribute :: translation_key
(uuid)
A UUID that is randomly generated whenever a new model instance is created.
This is shared with all translations of that instance so can be used for querying translations.
.. automethod :: get_translations
.. automethod :: get_translation
.. automethod :: get_translation_or_none
.. automethod :: has_translation
.. automethod :: copy_for_translation
.. automethod :: get_translation_model
.. autoattribute :: localized
2016-03-06 04:14:51 +00:00
.. _page-revision-model-ref:
2015-05-18 10:36:40 +00:00
`` PageRevision ``
2015-07-06 18:22:48 +00:00
================
2015-05-18 10:36:40 +00:00
2015-05-29 11:53:48 +00:00
Every time a page is edited a new `` PageRevision `` is created and saved to the database. It can be used to find the full history of all changes that have been made to a page and it also provides a place for new changes to be kept before going live.
2015-05-18 15:30:55 +00:00
2021-02-05 11:02:05 +00:00
- Revisions can be created from any :class: `~wagtail.core.models.Page` object by calling its :meth: `~Page.save_revision` method
- The content of the page is JSON-serialised and stored in the :attr: `~PageRevision.content_json` field
- You can retrieve a `` PageRevision `` as a :class: `~wagtail.core.models.Page` object by calling the :meth: `~PageRevision.as_page_object` method
2015-05-18 15:30:55 +00:00
2015-07-07 08:18:22 +00:00
Database fields
~~~~~~~~~~~~~~~
2015-05-18 15:30:55 +00:00
2015-07-07 08:18:22 +00:00
.. class :: PageRevision
2015-05-18 15:30:55 +00:00
.. attribute :: page
2017-11-17 10:23:27 +00:00
(foreign key to :class: `~wagtail.core.models.Page` )
2015-05-18 15:30:55 +00:00
.. attribute :: submitted_for_moderation
(boolean)
2015-05-29 11:53:48 +00:00
`` True `` if this revision is in moderation
2015-05-18 15:30:55 +00:00
.. attribute :: created_at
(date/time)
This is the time the revision was created
.. attribute :: user
(foreign key to user model)
2015-05-29 11:53:48 +00:00
This links to the user that created the revision
2015-05-18 15:30:55 +00:00
.. attribute :: content_json
(text)
This field contains the JSON content for the page at the time the revision was created
2015-07-07 08:18:22 +00:00
Managers
~~~~~~~~
.. class :: PageRevision
2020-05-03 12:02:43 +00:00
:noindex:
2015-05-18 15:30:55 +00:00
.. attribute :: objects
This manager is used to retrieve all of the `` PageRevision `` objects in the database
Example:
.. code-block :: python
PageRevision.objects.all()
.. attribute :: submitted_revisions
This manager is used to retrieve all of the `` PageRevision `` objects that are awaiting moderator approval
Example:
.. code-block :: python
PageRevision.submitted_revisions.all()
2015-07-07 08:18:22 +00:00
Methods and properties
~~~~~~~~~~~~~~~~~~~~~~
.. class :: PageRevision
2020-05-03 12:02:43 +00:00
:noindex:
2015-05-29 11:53:48 +00:00
2015-05-18 10:36:40 +00:00
.. automethod :: as_page_object
2017-11-17 10:23:27 +00:00
This method retrieves this revision as an instance of its :class: `~wagtail.core.models.Page` subclass.
2015-05-18 15:30:55 +00:00
2015-05-18 10:36:40 +00:00
.. automethod :: approve_moderation
2015-05-18 15:30:55 +00:00
Calling this on a revision that's in moderation will mark it as approved and publish it
2015-05-18 10:36:40 +00:00
.. automethod :: reject_moderation
2015-05-18 15:30:55 +00:00
Calling this on a revision that's in moderation will mark it as rejected
2015-05-18 10:36:40 +00:00
.. automethod :: is_latest_revision
2015-05-18 15:30:55 +00:00
Returns `` True `` if this revision is its page's latest revision
2015-05-18 10:36:40 +00:00
.. automethod :: publish
2015-05-18 15:30:55 +00:00
Calling this will copy the content of this revision into the live page object. If the page is in draft, it will be published.
2015-05-18 10:36:40 +00:00
`` GroupPagePermission ``
2015-07-06 18:22:48 +00:00
=======================
2015-05-18 10:36:40 +00:00
2015-07-07 08:18:22 +00:00
Database fields
~~~~~~~~~~~~~~~
2015-05-18 10:36:40 +00:00
2015-07-07 08:18:22 +00:00
.. class :: GroupPagePermission
2015-05-18 15:30:55 +00:00
.. attribute :: group
(foreign key to `` django.contrib.auth.models.Group `` )
.. attribute :: page
2017-11-17 10:23:27 +00:00
(foreign key to :class: `~wagtail.core.models.Page` )
2015-05-18 15:30:55 +00:00
.. attribute :: permission_type
(choice list)
2015-05-18 10:36:40 +00:00
`` PageViewRestriction ``
2015-07-06 18:22:48 +00:00
=======================
2015-05-18 10:36:40 +00:00
2015-07-07 08:18:22 +00:00
Database fields
~~~~~~~~~~~~~~~
2015-05-18 10:36:40 +00:00
2015-07-07 08:18:22 +00:00
.. class :: PageViewRestriction
2015-05-18 15:30:55 +00:00
.. attribute :: page
2017-11-17 10:23:27 +00:00
(foreign key to :class: `~wagtail.core.models.Page` )
2015-05-18 15:30:55 +00:00
.. attribute :: password
(text)
2015-05-18 10:36:40 +00:00
`` Orderable `` (abstract)
2015-07-06 18:22:48 +00:00
========================
2015-05-18 10:36:40 +00:00
2015-07-07 08:18:22 +00:00
Database fields
~~~~~~~~~~~~~~~
2015-05-18 15:30:55 +00:00
2015-07-07 08:18:22 +00:00
.. class :: Orderable
2015-05-18 15:30:55 +00:00
.. attribute :: sort_order
(number)
2020-02-24 15:52:19 +00:00
`` Workflow ``
============
Workflows represent sequences of tasks which much be approved for an action to be performed on a page - typically publication.
Database fields
~~~~~~~~~~~~~~~
.. class :: Workflow
.. attribute :: name
(text)
Human-readable name of the workflow.
.. attribute :: active
(boolean)
Whether or not the workflow is active: active workflows can be added to pages, and started. Inactive workflows cannot.
Methods and properties
~~~~~~~~~~~~~~~~~~~~~~
.. class :: Workflow
2020-07-17 22:11:02 +00:00
:noindex:
2020-02-24 15:52:19 +00:00
.. automethod :: start
.. autoattribute :: tasks
.. automethod :: deactivate
2020-07-16 09:45:00 +00:00
.. automethod :: all_pages
2020-02-24 15:52:19 +00:00
`` WorkflowState ``
=================
Workflow states represent the status of a started workflow on a page.
Database fields
~~~~~~~~~~~~~~~
.. class :: WorkflowState
.. attribute :: page
(foreign key to `` Page `` )
The page on which the workflow has been started
.. attribute :: workflow
(foreign key to `` Workflow `` )
The workflow whose state the `` WorkflowState `` represents
.. attribute :: status
(text)
The current status of the workflow (options are `` WorkflowState.STATUS_CHOICES `` )
.. attribute :: created_at
(date/time)
When this instance of `` WorkflowState `` was created - when the workflow was started
.. attribute :: requested_by
(foreign key to user model)
The user who started this workflow
.. attribute :: current_task_state
(foreign key to `` TaskState `` )
The `` TaskState `` model for the task the workflow is currently at: either completing (if in progress) or the final task state (if finished)
Methods and properties
~~~~~~~~~~~~~~~~~~~~~~
.. class :: WorkflowState
2020-07-17 22:11:02 +00:00
:noindex:
2020-02-24 15:52:19 +00:00
.. attribute :: STATUS_CHOICES
A tuple of the possible options for the `` status `` field, and their verbose names. Options are `` STATUS_IN_PROGRESS `` , `` STATUS_APPROVED `` ,
2020-07-16 09:45:00 +00:00
`` STATUS_CANCELLED `` and `` STATUS_NEEDS_CHANGES `` .
2020-02-24 15:52:19 +00:00
.. automethod :: update
.. automethod :: get_next_task
.. automethod :: cancel
.. automethod :: finish
2020-07-16 09:45:00 +00:00
.. automethod :: resume
2020-02-24 15:52:19 +00:00
.. automethod :: copy_approved_task_states_to_revision
2020-02-27 14:37:03 +00:00
.. automethod :: all_tasks_with_status
.. automethod :: revisions
2020-02-24 15:52:19 +00:00
`` Task ``
========
Tasks represent stages in a workflow which must be approved for the workflow to complete successfully.
Database fields
~~~~~~~~~~~~~~~
.. class :: Task
.. attribute :: name
(text)
Human-readable name of the task.
.. attribute :: active
(boolean)
Whether or not the task is active: active workflows can be added to workflows, and started. Inactive workflows cannot, and are skipped when in
an existing workflow.
.. attribute :: content_type
(foreign key to `` django.contrib.contenttypes.models.ContentType `` )
A foreign key to the :class: `~django.contrib.contenttypes.models.ContentType` object that represents the specific model of this task.
Methods and properties
~~~~~~~~~~~~~~~~~~~~~~
.. class :: Task
2020-07-17 22:11:02 +00:00
:noindex:
2020-02-24 15:52:19 +00:00
2020-07-16 09:45:00 +00:00
.. autoattribute :: workflows
.. autoattribute :: active_workflows
2020-02-24 15:52:19 +00:00
.. attribute :: task_state_class
The specific task state class to generate to store state information for this task. If not specified, this will be `` TaskState `` .
.. automethod :: get_verbose_name
2020-07-17 22:11:02 +00:00
.. autoattribute :: specific
2020-02-24 15:52:19 +00:00
.. automethod :: start
.. automethod :: on_action
.. automethod :: user_can_access_editor
.. automethod :: user_can_lock
.. automethod :: user_can_unlock
2020-07-16 09:45:00 +00:00
.. automethod :: page_locked_for_user
2020-02-24 15:52:19 +00:00
.. automethod :: get_actions
.. automethod :: get_task_states_user_can_moderate
.. automethod :: deactivate
2020-07-16 09:45:00 +00:00
.. automethod :: get_form_for_action
.. automethod :: get_template_for_action
.. automethod :: get_description
2020-02-24 15:52:19 +00:00
`` TaskState ``
=============
Task states store state information about the progress of a task on a particular page revision.
Database fields
~~~~~~~~~~~~~~~
.. class :: TaskState
.. attribute :: workflow_state
(foreign key to `` WorkflowState `` )
The workflow state which started this task state.
2021-09-20 11:14:55 +00:00
.. attribute :: page_revision
2020-02-24 15:52:19 +00:00
(foreign key to `` PageRevision `` )
2020-07-16 09:45:00 +00:00
The page revision this task state was created on.
2020-02-24 15:52:19 +00:00
.. attribute :: task
(foreign key to `` Task `` )
The task that this task state is storing state information for.
.. attribute :: status
(text)
The completion status of the task on this revision. Options are available in `` TaskState.STATUS_CHOICES `` )
.. attribute :: content_type
(foreign key to `` django.contrib.contenttypes.models.ContentType `` )
A foreign key to the :class: `~django.contrib.contenttypes.models.ContentType` object that represents the specific model of this task.
.. attribute :: started_at
(date/time)
When this task state was created.
.. attribute :: finished_at
(date/time)
When this task state was cancelled, rejected, or approved.
2020-07-16 09:45:00 +00:00
.. attribute :: finished_by
(foreign key to user model)
The user who completed (cancelled, rejected, approved) the task.
.. attribute :: comment
(text)
A text comment, typically added by a user when the task is completed.
2020-02-24 15:52:19 +00:00
Methods and properties
~~~~~~~~~~~~~~~~~~~~~~
.. class :: TaskState
2020-07-17 22:11:02 +00:00
:noindex:
2020-02-24 15:52:19 +00:00
.. attribute :: STATUS_CHOICES
A tuple of the possible options for the `` status `` field, and their verbose names. Options are `` STATUS_IN_PROGRESS `` , `` STATUS_APPROVED `` ,
`` STATUS_CANCELLED `` , `` STATUS_REJECTED `` and `` STATUS_SKIPPED `` .
.. attribute :: exclude_fields_in_copy
A list of fields not to copy when the `` TaskState.copy() `` method is called.
2020-07-17 22:11:02 +00:00
.. autoattribute :: specific
2020-02-24 15:52:19 +00:00
.. automethod :: approve
.. automethod :: reject
2020-07-17 22:11:02 +00:00
.. autoattribute :: task_type_started_at
2020-02-24 15:52:19 +00:00
.. automethod :: cancel
.. automethod :: copy
2020-07-16 09:45:00 +00:00
.. automethod :: get_comment
2020-02-24 15:52:19 +00:00
`` WorkflowTask ``
================
Represents the ordering of a task in a specific workflow.
Database fields
~~~~~~~~~~~~~~~
.. class :: WorkflowTask
.. attribute :: workflow
(foreign key to `` Workflow `` )
.. attribute :: task
(foreign key to `` Task `` )
.. attribute :: sort_order
(number)
The ordering of the task in the workflow.
`` WorkflowPage ``
================
Represents the assignment of a workflow to a page and its descendants.
Database fields
~~~~~~~~~~~~~~~
.. class :: WorkflowPage
.. attribute :: workflow
(foreign key to `` Workflow `` )
.. attribute :: page
(foreign key to `` Page `` )
2020-07-09 21:57:16 +00:00
`` BaseLogEntry ``
================
An abstract base class that represents a record of an action performed on an object.
Database fields
~~~~~~~~~~~~~~~
.. class :: BaseLogEntry
.. attribute :: content_type
(foreign key to `` django.contrib.contenttypes.models.ContentType `` )
A foreign key to the :class: `~django.contrib.contenttypes.models.ContentType` object that represents the specific model of this model.
.. attribute :: label
(text)
The object title at the time of the entry creation
Note: Wagtail will attempt to use `` get_admin_display_title `` or the string representation of the object passed to :meth: `~LogEntryManger.log_action`
.. attribute :: user
(foreign key to user model)
A foreign key to the user that triggered the action.
.. attribute :: data_json
(text)
The JSON representation of any additional details for each action.
e.g. source page id and title when copying from a page. Or workflow id/name and next step id/name on a workflow transition
.. attribute :: timestamp
(date/time)
The date/time when the entry was created.
.. attribute :: content_changed
(boolean)
A boolean that can set to `` True `` when the content has changed.
.. attribute :: deleted
(boolean)
A boolean that can set to `` True `` when the object is deleted. Used to filter entries in the Site History report.
Methods and properties
~~~~~~~~~~~~~~~~~~~~~~
.. class :: BaseLogEntry
2020-07-17 22:11:02 +00:00
:noindex:
2020-07-09 21:57:16 +00:00
2020-09-30 14:43:27 +00:00
.. autoattribute :: user_display_name
2020-07-09 21:57:16 +00:00
2020-07-17 22:11:02 +00:00
.. autoattribute :: data
2020-07-09 21:57:16 +00:00
2020-07-17 22:11:02 +00:00
.. autoattribute :: comment
2020-07-09 21:57:16 +00:00
2020-07-17 22:11:02 +00:00
.. autoattribute :: object_verbose_name
2020-07-09 21:57:16 +00:00
.. automethod :: object_id
`` PageLogEntry ``
================
Represents a record of an action performed on an :class: `Page` , subclasses :class: `BaseLogEntry` .
Database fields
~~~~~~~~~~~~~~~
.. class :: PageLogEntry
.. attribute :: page
(foreign key to :class: `Page` )
A foreign key to the page the action is performed on.
.. attribute :: revision
(foreign key to :class: `PageRevision` )
A foreign key to the current page revision.
2021-04-30 13:03:57 +00:00
`` Comment ``
===========
Represents a comment on a page.
Database fields
~~~~~~~~~~~~~~~
.. class :: Comment
.. attribute :: page
(parental key to :class: `Page` )
A parental key to the page the comment has been added to.
.. attribute :: user
(foreign key to user model)
A foreign key to the user who added this comment.
.. attribute :: text
(text)
The text content of the comment.
.. attribute :: contentpath
(text)
The path to the field or streamfield block the comment is attached to,
in the form `` field `` or `` field.streamfield_block_id `` .
.. attribute :: position
(text)
An identifier for the position of the comment within its field. The format
used is determined by the field.
.. attribute :: created_at
(date/time)
The date/time when the comment was created.
.. attribute :: updated_at
(date/time)
The date/time when the comment was updated.
.. attribute :: revision_created
(foreign key to :class: `PageRevision` )
A foreign key to the revision on which the comment was created.
.. attribute :: resolved_at
(date/time)
The date/time when the comment was resolved, if any.
.. attribute :: resolved_by
(foreign key to user model)
A foreign key to the user who resolved this comment, if any.
`` CommentReply ``
================
Represents a reply to a comment thread.
Database fields
~~~~~~~~~~~~~~~
.. class :: CommentReply
.. attribute :: comment
(parental key to :class: `Comment` )
A parental key to the comment that started the thread.
.. attribute :: user
(foreign key to user model)
A foreign key to the user who added this comment.
.. attribute :: text
(text)
The text content of the comment.
.. attribute :: created_at
(date/time)
The date/time when the comment was created.
.. attribute :: updated_at
(date/time)
The date/time when the comment was updated.
`` PageSubscription ``
====================
Represents a user's subscription to email notifications about page events.
Currently only used for comment notifications.
Database fields
~~~~~~~~~~~~~~~
.. class :: PageSubscription
.. attribute :: page
(parental key to :class: `Page` )
.. attribute :: user
(foreign key to user model)
.. attribute :: comment_notifications
(boolean)
Whether the user should receive comment notifications for all comments,
or just comments in threads they participate in.