django-xworkflows documentation
===============================
django-xworkflows is a django application adding `xworkflows `_ functionnalities to
django models.
Getting started
===============
First, install the required packages::
pip install django-xworkflows
In your ``settings.py``, add ``django_xworkflows`` to your :py:obj:`INSTALLED_APPS`::
INSTALLED_APPS = (
'...',
'django_xworkflows',
)
Define a workflow::
from django_xworkflows import models as xwf_models
class MyWorkflow(xwf_models.Workflow):
log_model = '' # Disable logging to database
states = (
('new', _(u"New")),
('old', _(u"Old")),
)
transitions = (
('get_old', 'new', 'old'),
)
initial_state = 'new'
And add it to a model::
from django_xworkflows import models as xwf_models
class MyModel(xwf_models.WorkflowEnabled):
state = xwf_models.StateField(MyWorkflow)
The :attr:`state` field of :class:`MyModel` is now defined as a :class:`django.db.models.CharField`,
whose :attr:`choices` and :attr:`default` are configured according to the related
:class:`django_xworkflows.models.Workflow`.
Integration with django
=======================
After each successful transition, a :func:`save()` is performed on the object.
This behaviour is controlled by passing the extra argument ``save=False`` when calling the transition method.
If the :class:`~django_xworkflows.models.Workflow` has a definition for the :attr:`~django_xworkflows.models.Workflow.log_model` attribute (as a ``.`` string),
an instance of that model will be created for each successful transition.
If the :mod:`django_xworkflows.xworkflow_log` application is installed,
:attr:`~django_xworkflows.models.Workflow.log_model` defaults to
:class:`~django_xworkflows.xworkflow_log.models.TransitionLog`.
Otherwise, it defaults to ``''`` (db logging disabled).
This behaviour can be altered by:
* Setting the :attr:`~django_xworkflows.models.Workflow.log_model` attribute to ``''``
* Calling the transition method with ``log=False`` (no logging to database)
* Overriding the :func:`~django_xworkflows.models.Workflow.db_log` method of the :class:`~django_xworkflows.models.Workflow`.
* Overriding the :func:`~django_xworkflows.models.Workflow.log_transition`
method of the :class:`~django_xworkflows.models.Workflow`; this controls both ``log`` and ``save`` behaviours.
Contents
========
.. toctree::
:maxdepth: 2
internals
changelog
Resources
=========
* Package on PyPI: http://pypi.python.org/pypi/django-xworkflows
* Repository and issues on GitHub: http://github.com/rbarrois/django_xworkflows
* Doc on http://readthedocs.org/docs/django-xworkflows/
* XWorkflows on GitHub: http://github.com/rbarrois/xworkflows
* XWorkflows doc on http://readthedocs.org/docs/xworkflows/
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`