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()
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()
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)
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()
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()
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()