Как создать процесс Django ViewFlow программно

конспект

Я разрабатываю веб-приложение для изучения Django (Python 3.4 и Django 1.6.10). Веб-приложение имеет сложные и часто обновляемые рабочие процессы. Я решил интегрировать библиотеку Django-Viewflow (https://github.com/viewflow/viewflow/) поскольку это кажется очень удобным способом обработки рабочих процессов и не включает логику рабочего процесса в модели приложений.

В этом случае я создал рабочий процесс для сбора информации об авторских правах и авторских правах с использованием библиотеки Django-Viewflow. Рабочий процесс должен инициироваться каждый раз, когда автор добавляется в книгу.

Моя проблема

Документация предлагает пошаговые инструкции по интеграции комплексного решения для рабочих процессов (веб-интерфейс и серверная часть). Моя проблема в том, что мне трудно управлять программным процессом (особенно из модели Book).

Описание приложения

У меня есть модель Book (базовая модель), которая имеет отношение «многие ко многим» к авторам.

MYAPP / models.py

class Book(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher)
    publication_date = models.DateField()

Компоненты рабочего процесса:

myFlow / models.py

from viewflow.models import Process

class AuthorInvitation(process)     
    consent_confirmed = models.BooleanField(default=False)
    signature = models.CharField(max_length=150) 

myFlow / flows.py

from viewflow import flow
from viewflow.base import this, Flow
from viewflow.contrib import celery
from viewflow.views import StartProcessView, ProcessView
from . import models, tasks

class AuthorInvitationFlow(Flow):
    process_cls = models.AuthorInvitation

    start = flow.Start(StartProcessView) \
        .Permission(auto_create=True) \
        .Next(this.notify)

    notify = celery.Job(tasks.send_authorship_request) \
        .Next(this.approve)

    approve = flow.View(ProcessView, fields=["confirmed","signature"]) \
        .Permission(auto_create=True) \
        .Next(this.check_approve)

    check_approve = flow.If(cond=lambda p: p.confirmed) \
        .OnTrue(this.send) \
        .OnFalse(this.end)

    send = celery.Job(tasks.send_authorship) \
        .Next(this.end)

    end = flow.End()

Вопрос

Как вы можете программно управлять процессом рабочего процесса (активировать, подтвердить шаги, повторить шаги, отменить процесс ....)? Я попытался копаться в коде библиотеки. Кажется, чтоclass activate содержит правильный метод, но не уверен, как целое должно быть организовано.

Заранее спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос