2
0

workflows.py 863 B

123456789101112131415161718192021222324252627
  1. from wagtail.models import Task
  2. TASK_TYPES = []
  3. def get_concrete_descendants(model_class, inclusive=True):
  4. """Retrieves non-abstract descendants of the given model class. If `inclusive` is set to
  5. True, includes model_class"""
  6. subclasses = model_class.__subclasses__()
  7. if subclasses:
  8. for subclass in subclasses:
  9. yield from get_concrete_descendants(subclass)
  10. if inclusive and not model_class._meta.abstract:
  11. yield model_class
  12. def get_task_types(task_class=None):
  13. global TASK_TYPES
  14. if TASK_TYPES:
  15. return TASK_TYPES
  16. TASK_TYPES = list(get_concrete_descendants(Task, inclusive=False))
  17. return TASK_TYPES
  18. def publish_workflow_state(workflow_state, user=None):
  19. # publish the object associated with a WorkflowState
  20. workflow_state.content_object.get_latest_revision().publish(user=user)