27 lines
867 B
Python
27 lines
867 B
Python
TASK_TYPES = []
|
|
|
|
|
|
def get_concrete_descendants(model_class, inclusive=True):
|
|
"""Retrieves non-abstract descendants of the given model class. If `inclusive` is set to
|
|
True, includes model_class"""
|
|
subclasses = model_class.__subclasses__()
|
|
if subclasses:
|
|
for subclass in subclasses:
|
|
yield from get_concrete_descendants(subclass)
|
|
if inclusive and not model_class._meta.abstract:
|
|
yield model_class
|
|
|
|
|
|
def get_task_types(task_class=None):
|
|
from wagtail.models import Task
|
|
|
|
global TASK_TYPES
|
|
if TASK_TYPES:
|
|
return TASK_TYPES
|
|
TASK_TYPES = list(get_concrete_descendants(Task, inclusive=False))
|
|
return TASK_TYPES
|
|
|
|
|
|
def publish_workflow_state(workflow_state, user=None):
|
|
# publish the object associated with a WorkflowState
|
|
workflow_state.content_object.get_latest_revision().publish(user=user)
|