summaryrefslogtreecommitdiffstats
path: root/src/workflow/README
blob: fb4b9493845fe7b03c7932cf9b22a4f60faeba04 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
This app creates "workflows", which are long and complex interactions from the user.
Workflows are composed of multiple steps. At each step the user inputs some information.
The content of one step may impact following steps.

The WorkflowStep object is the abstract type for all the workflow steps.
Important attributes and methods:

template - the django template to use when rendering this step
valid - the status code from WorkflowStepStatus

get_context() - returns a dictionary that is used when rendering this step's template
    You should always call super's get_context and add / overwrite any data into that
    dictionary

post(data, user) - this method is called when the step is POST'd to.
    data is from the request object, suitable for a Form's constructor


Repository
Each step has a reference to a shared repository (self.repo).
The repo is a key-value store that allows the steps to share data

Steps render based on the current state of the repo. For example, a step
may get information about each host the user said they want and ask for additional
input for each machine.
Because the steps render based on what is in the repo, a user can easily go back to
a previous step and change some data. This data will change in the repo and
affect later steps accordingly.

Everything stored in the repo is temporary. After a workflow has been completed, the repo
is translated into Django models and saved to the database.