added a simple publishing states definition (publishing 'workflow')
git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@2466 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
		
							parent
							
								
									872fccc529
								
							
						
					
					
						commit
						ad30d6f655
					
				
					 2 changed files with 48 additions and 14 deletions
				
			
		|  | @ -17,7 +17,7 @@ behaviour directly. | |||
| 
 | ||||
|   >>> demo = Demo() | ||||
| 
 | ||||
| The default states definition has the `started` state has its initial | ||||
| The default states definition has the `started` state as its initial | ||||
| state. | ||||
| 
 | ||||
|   >>> demo.getState() | ||||
|  | @ -34,21 +34,15 @@ We can now execute the `finish` Transition. | |||
| More complex states definitions | ||||
| ------------------------------- | ||||
| 
 | ||||
|   >>> registerStatesDefinition( | ||||
|   ...     StatesDefinition('publishing', | ||||
|   ...         State('private', 'private', ('show',)), | ||||
|   ...         State('visible', 'visible', ('publish', 'hide',)), | ||||
|   ...         State('published', 'published', ('retract',)), | ||||
|   ...         Transition('show', 'show', 'visible'), | ||||
|   ...         Transition('hide', 'hide', 'private'), | ||||
|   ...         Transition('publish', 'publish', 'published'), | ||||
|   ...         Transition('retract', 'retract', 'visible'), | ||||
|   ...         initialState='visible')) | ||||
| We'll use a predefined simple publishing workflow that. | ||||
| 
 | ||||
|   >>> from cybertools.stateful.publishing import simplePublishing | ||||
|   >>> registerStatesDefinition(simplePublishing) | ||||
| 
 | ||||
|   >>> demo = Demo() | ||||
|   >>> demo.statesDefinition = 'publishing' | ||||
|   >>> demo.getState() | ||||
|   'visible' | ||||
|   'draft' | ||||
| 
 | ||||
| If we try to execute a transition that is not an outgoing transition | ||||
| of the current state we get an error. | ||||
|  | @ -56,9 +50,9 @@ of the current state we get an error. | |||
|   >>> demo.doTransition('retract') | ||||
|   Traceback (most recent call last): | ||||
|   ... | ||||
|   ValueError: Transition 'retract' is not reachable from state 'visible'. | ||||
|   ValueError: Transition 'retract' is not reachable from state 'draft'. | ||||
|   >>> demo.getState() | ||||
|   'visible' | ||||
|   'draft' | ||||
| 
 | ||||
| 
 | ||||
| Stateful Adapters | ||||
|  |  | |||
							
								
								
									
										40
									
								
								stateful/publishing.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								stateful/publishing.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,40 @@ | |||
| # | ||||
| #  Copyright (c) 2008 Helmut Merz helmutm@cy55.de | ||||
| # | ||||
| #  This program is free software; you can redistribute it and/or modify | ||||
| #  it under the terms of the GNU General Public License as published by | ||||
| #  the Free Software Foundation; either version 2 of the License, or | ||||
| #  (at your option) any later version. | ||||
| # | ||||
| #  This program is distributed in the hope that it will be useful, | ||||
| #  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| #  GNU General Public License for more details. | ||||
| # | ||||
| #  You should have received a copy of the GNU General Public License | ||||
| #  along with this program; if not, write to the Free Software | ||||
| #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | ||||
| # | ||||
| 
 | ||||
| """ | ||||
| Definition of a simple publishing workflow. | ||||
| 
 | ||||
| $Id$ | ||||
| """ | ||||
| 
 | ||||
| from zope.interface import implements | ||||
| 
 | ||||
| from cybertools.stateful.definition import registerStatesDefinition | ||||
| from cybertools.stateful.definition import StatesDefinition | ||||
| from cybertools.stateful.definition import State, Transition | ||||
| 
 | ||||
| 
 | ||||
| simplePublishing = StatesDefinition('publishing', | ||||
|         State('private', 'private', ('show',)), | ||||
|         State('draft', 'draft', ('publish', 'hide',)), | ||||
|         State('published', 'published', ('retract',)), | ||||
|         Transition('show', 'show', 'draft'), | ||||
|         Transition('hide', 'hide', 'private'), | ||||
|         Transition('publish', 'publish', 'published'), | ||||
|         Transition('retract', 'retract', 'draft'), | ||||
|         initialState='draft') | ||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 helmutm
						helmutm