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() |   >>> 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. | state. | ||||||
| 
 | 
 | ||||||
|   >>> demo.getState() |   >>> demo.getState() | ||||||
|  | @ -34,21 +34,15 @@ We can now execute the `finish` Transition. | ||||||
| More complex states definitions | More complex states definitions | ||||||
| ------------------------------- | ------------------------------- | ||||||
| 
 | 
 | ||||||
|   >>> registerStatesDefinition( | We'll use a predefined simple publishing workflow that. | ||||||
|   ...     StatesDefinition('publishing', | 
 | ||||||
|   ...         State('private', 'private', ('show',)), |   >>> from cybertools.stateful.publishing import simplePublishing | ||||||
|   ...         State('visible', 'visible', ('publish', 'hide',)), |   >>> registerStatesDefinition(simplePublishing) | ||||||
|   ...         State('published', 'published', ('retract',)), |  | ||||||
|   ...         Transition('show', 'show', 'visible'), |  | ||||||
|   ...         Transition('hide', 'hide', 'private'), |  | ||||||
|   ...         Transition('publish', 'publish', 'published'), |  | ||||||
|   ...         Transition('retract', 'retract', 'visible'), |  | ||||||
|   ...         initialState='visible')) |  | ||||||
| 
 | 
 | ||||||
|   >>> demo = Demo() |   >>> demo = Demo() | ||||||
|   >>> demo.statesDefinition = 'publishing' |   >>> demo.statesDefinition = 'publishing' | ||||||
|   >>> demo.getState() |   >>> demo.getState() | ||||||
|   'visible' |   'draft' | ||||||
| 
 | 
 | ||||||
| If we try to execute a transition that is not an outgoing transition | If we try to execute a transition that is not an outgoing transition | ||||||
| of the current state we get an error. | of the current state we get an error. | ||||||
|  | @ -56,9 +50,9 @@ of the current state we get an error. | ||||||
|   >>> demo.doTransition('retract') |   >>> demo.doTransition('retract') | ||||||
|   Traceback (most recent call last): |   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() |   >>> demo.getState() | ||||||
|   'visible' |   'draft' | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| Stateful Adapters | 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