Пример #1
0
    def as_view(cls, **initkwargs):
        view = super(HandlerViewMixin, cls).as_view(**initkwargs)

        instance = cls(**initkwargs)
        workflow = get_workflow(cls.workflow_type)
        workflow.library.handler(
            message_id=instance.get_message_id(),
            states_from=instance.states_from,
            permission_checker=instance.permission_checker,
        )(instance.perform)

        return view
Пример #2
0
def _graph_view(request, workflow_id, build_func):
    w = get_workflow(workflow_id)
    if w is None:
        raise Http404

    response = HttpResponse(mimetype='image/png')

    graph = build_func(w)
    graph.layout('dot')
    graph.draw(response, format='png')

    return response
Пример #3
0
def get_create_form_html(workflow_type, sender=None):
    workflow = get_workflow(workflow_type)
    if workflow is None:
        raise WorkflowNotLoadedError(workflow_type)

    form = workflow.create_form_cls()
    if not workflow.create_form_template:
        t = template_loader.select_template(
                ('workflows/%s/create_form.html' % workflow_type,
                 'workflows/create_form.html'))
    else:
        t = template_loader.get_template(workflow.create_form_template)

    context = Context({'form': form, 'workflow_type': workflow_type})
    return t.render(context)
Пример #4
0
def create(workflow_type, sender, raw_parameters):
    workflow = get_workflow(workflow_type)
    if workflow is None:
        raise WorkflowNotLoadedError(workflow_type)

    create_form_cls = workflow.get_create_form_cls()
    form = create_form_cls(raw_parameters)
    if form.is_valid():

        instance = workflow.instance_fabric(sender, form.cleaned_data)
        # Ensure that we will create, not update
        instance.id = None
        # Set workflow type
        setattr(instance, WORKFLOW_TYPE_ATTR, workflow_type)
        instance.save()

        workflow.post_create_hook(sender, form.cleaned_data, instance)

        return instance
    else:
        raise CreateValidationError(form.errors)
Пример #5
0
def describe_workflow(request, workflow_id):
    w = get_workflow(workflow_id)
    if w is None:
        raise Http404

    state_map = dict(
        (
            state,
            {
                "verbose_name": w.verbose_state_names.get(state),
                "messages": sorted(message for (_checker, message) in w.library.get_available_messages(state)),
            },
        )
        for state in w.states
    )

    message_map = dict(
        (message_id, {"spec": spec, "states_from": sorted(w.library.get_handlers_index_for_message(message_id).keys())})
        for (message_id, spec) in w.library.get_message_specs().iteritems()
    )

    return TemplateResponse(
        request, "yawf/describe_workflow.html", {"workflow": w, "state_map": state_map, "message_map": message_map}
    )
Пример #6
0
 def model(self):
     workflow = get_workflow(self.workflow_type)
     if hasattr(workflow, "model_class"):
         return workflow.model_class
Пример #7
0
 def handle(self, workflow_id, **options):
     w = get_workflow(workflow_id)
     print build_handlers_graph(w).to_string()
Пример #8
0
 def get_workflow(self):
     return yawf.get_workflow(self.workflow_id)