WizardsΒΆ

The Wizard resource is a collection of step endpoints which represent a series of ordered api requests needed to complete a single task. Once a wizard is created in can be included in your urls or registered to a resource site.

Example:

from django import forms

from hyperadmin.resources.wizard import Wizard, FormStep


class EmailForm(forms.Form):
    email = forms.EmailField()

class UsernameForm(forms.Form):
    username = forms.CharField()

class PasswordForm(forms.Form):
    password = forms.CharField()

class GetEmail(FormStep):
    form_class = EmailForm

class GetUsername(FormStep):
    form_class = UsernameForm

    def can_skip(self):
        return True

class GetPassword(FormStep):
    form_class = PasswordForm

class GetAttribute(FormStep):
    form_class = AttributeForm

    def can_skip(self):
        return True

class SimpleWizard(Wizard):
    step_definitions = [
        (GetEmail, {'slug':'email'}),
        (GetUsername, {'slug':'username'}),
        (GetPassword, {'slug':'password'}),
    ]

    def done(self, submissions):
        return 'success'

wizard = SimpleWizard(app_name='users', resource_adaptor='make_user')
urlpatterns += patterns('', (r'^', include(wizard.urls)))

A multi-part step allows for multiple steps to be embedded in a single step.

Multi part step example:

from django import forms

from hyperadmin.resources.wizard import Wizard, FormStep, MultiPartStep


class EmailForm(forms.Form):
    email = forms.EmailField()

class UsernameForm(forms.Form):
    username = forms.CharField()

class PasswordForm(forms.Form):
    password = forms.CharField()

class AttributeForm(forms.Form):
    key = forms.CharField()
    value = forms.CharField()

class GetEmail(FormStep):
    form_class = EmailForm

class GetUsername(FormStep):
    form_class = UsernameForm

class GetPassword(FormStep):
    form_class = PasswordForm

class GetAttribute(FormStep):
    form_class = AttributeForm

    def can_skip(self):
        return True

class GetAttributes(MultiPartStep):
    step_definitions = [
        (GetAttribute, {'slug':'attr1'}),
        (GetAttribute, {'slug':'attr2'}),
    ]

class ExpandedWizard(Wizard):
    step_definitions = [
        (GetEmail, {'slug':'email'}),
        (GetUsername, {'slug':'username'}),
        (GetPassword, {'slug':'password'}),
        (GetAttributes, {'slug':'attributes'}),
    ]

    def done(self, submissions):
        return 'success'

Project Versions

Previous topic

Clients

Next topic

Content Types

This Page