コード例 #1
0
class IgnorableSignalFlow(Flow):
    start = (
        flow.StartSignal(
            start_ignorable_test_signal, create_flow)
        .Next(this.signal_task)
    )

    signal_task = (
        flow.Signal(
            ignorable_test_signal, this.on_test_signal,
            task_loader=this.get_signal_task,
            allow_skip=True)
        .Next(this.end)
    )

    end = flow.End()

    def get_signal_task(self, flow_task, **kwargs):
        if kwargs['ignore_me']:
            return None
        return kwargs['process'].get_task(IgnorableSignalFlow.signal_task)

    @method_decorator(flow.flow_signal)
    def on_test_signal(self, activation, **signal_kwargs):
        activation.prepare()
        activation.done()
コード例 #2
0
ファイル: flows.py プロジェクト: kspooja88/viewflow
class SignalFlow(Flow):
    process_cls = TestProcess

    start = flow.StartSignal(test_start_flow, tasks.start_process) \
        .Next(this.task)
    task = flow.Signal(test_done_flow_task, tasks.do_signal_task) \
        .Next(this.end)
    end = flow.End()
コード例 #3
0
class SignalFlow(Flow):
    start = (flow.StartSignal(start_test_signal,
                              create_flow).Next(this.signal_task))

    signal_task = (flow.Signal(task_test_signal,
                               signal_task,
                               task_loader=this.get_signal_task).Next(
                                   this.end))

    end = flow.End()

    def get_signal_task(self, flow_task, **kwargs):
        return kwargs['process'].get_task(SignalFlow.signal_task)
コード例 #4
0
class IgnorableSignalFlow(Flow):
    start = flow.StartSignal(start_ignorable_test_signal, create_flow) \
        .Next(this.signal_task)
    signal_task = flow.Signal(ignorable_test_signal, IgnorableReceiver) \
        .Next(this.end)
    end = flow.End()
コード例 #5
0
class SignalFlow(Flow):
    start = flow.StartSignal(start_test_signal, create_flow).Next(this.signal_task)
    signal_task = flow.Signal(task_test_signal, signal_task).Next(this.end)
    end = flow.End()
コード例 #6
0
class BibServeFlow(Flow):

    process_class = BibServeProcess
    process_title = l_('Регистрация BibServe аккаунта')
    process_menu_title = 'Создание BibServe аккаунта'
    process_client_menu_title = 'Создание BibServe аккаунта'
    summary_template = '{{ process.proposal.company_name }} {{ process.proposal.city }}'

    start = (StartFunctionNode(
        this.start_bibserve,
        task_description=_(
            'Start of BibServe account creation proccess')).Next(
                this.create_account))

    create_account = (ViewNode(
        CreateBibServerAccountView,
        form_class=CreateBibServerAccountForm,
        task_description=_('Create BibServe account'),
        done_btn_title='BibServe-аккаунт создан',
    ).Permission(auto_create=True).Next(this.check_is_allowed_to_activate))

    check_is_allowed_to_activate = (IfNode(
        lambda activation: activation.process.is_allowed_to_activate,
        task_description=_('Check is allowed to activate'),
    ).Then(this.activate_account).Else(this.wait_for_allowed_to_activate))

    wait_for_allowed_to_activate = (flow.Signal(client_unblocked,
                                                this.client_unblocked_handler,
                                                sender=UnblockClientView,
                                                task_loader=this.task_loader,
                                                allow_skip=True).Next(
                                                    this.activate_account))

    activate_account = (ViewNode(
        ActivateBibServeAccountView,
        form_class=ActivateBibserveAccountForm,
        task_description=_('Activating BibServe account'),
        done_btn_title='BibServe аккаунт активирован',
    ).Permission(auto_create=True).Next(this.end))

    end = EndNode(
        task_description=_('End of BibServe account creation process'))

    @method_decorator(flow.flow_start_func)
    def start_bibserve(self, activation, proposal):
        activation.prepare()
        activation.process.proposal = proposal
        activation.done()

    @method_decorator(flow.flow_signal)
    def client_unblocked_handler(self, sender, activation, **signal_kwargs):
        activation.prepare()
        activation.done()

    @staticmethod
    def task_loader(flow_task, **kwargs):
        proposal = kwargs['proposal']
        # Проверяем, есть ли у текущей заявки процесс по созданию BibServe-аккаунта
        if hasattr(proposal, 'bibserveprocess'):
            return flow_task.flow_class.task_class._default_manager.filter(
                flow_task=get_task_ref(flow_task),
                process_id=proposal.bibserveprocess.id).first()