django-sts 0.7.3

Creator: bradpython12

Last updated:

Add to Cart

Description:

djangosts 0.7.3

# State Transition System (STS) for Django[State Transition Systems][1] have less constraints than Finite StateAutomata, and can be utilized for various use cases.The core components include:- State- Event- Transition- System**Events** cause a **transition** from some **state** to a new state withina given **system**.The API supports defining _immediate_ transitions and _long-running_transitions. Now, for a riveting example..```pythonsystem = System(name='Example 1')system.save()# Immediate transition.. event => statesystem.transition('Door Opened', event='Open Door')# 'Long-running' transitions.. event happenssystem.start_transition('Close Door Slowly')# Time passes..time.sleep(2)# The resulting state..system.end_transition('Door Closed')```To remove the boilerplate from the above example, use the `transition`context manager instead:```pythonfrom sts.contextmanagers import transitionwith transition('Example 1', 'Door Closed', event='Close Door Slowly'): time.sleep(2)```A model object can be associated directly with a `System` using Django'sContentTypes framework generic foreign keys.```pythondoor = Door.objects.get(name='Door #1')system = System(content_object=door)# ...````System` objects have a few extra conveniences:```python# number of transitionslen(system) == system.length# iteration starting with the first transitionfor trans in system: ...# indexing and slicessystem[:3] # first 3 transitionssystem[-3:] # last 3 transitionssystem[:-3] # all except the last 3 transitionssystem[1:3] # arbitrary slicesystem[2] # specific transition```This enables bringing in django-sts to an existing model to begin trackingstates of objects.It even comes with an abstract `STSModel` that augments a model with the abovemethods for seamless integration (it does not add any model fields):```pythonclass Door(STSModel): name = models.CharField(max_length=20)door = Door()door.save()door.transition('Door Closed', event='Close Door')```The library leaves it up to the application to implement the constraints of afinite state automata/machine.[1]: http://en.wikipedia.org/wiki/State_transition_system

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.