#
# Generated by dumpDCWorkflow.py written by Sebastien Bigaret
# Original workflow id/title: simpleblog_workflow/SimpleBlog Workflow
# Date: 2003/11/06 09:34:25.960 GMT+1
#
# WARNING: this dumps does NOT contain any scripts you might have added to
# the workflow, IT IS YOUR RESPONSABILITY TO MAKE BACKUPS FOR THESE SCRIPTS.
#
# No script detected in this workflow
# 
"""
Programmatically creates a workflow type
"""
script_sbPublishEntry = """## Script (Python) "sbPublishEntry"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=change_state=None
##title=Change an entrys' state to publish
##
obj = change_state.object 
if obj.restrictedTraverse('portal_pingtool',None):
    obj.portal_pingtool.pingFeedReader(obj)
tbping=obj.sendTrackBack()
return tbping
"""

__version__ = "$Revision: 12627 $"[11:-2]

from Products.CMFCore.WorkflowTool import addWorkflowFactory

from Products.DCWorkflow.DCWorkflow import DCWorkflowDefinition

def createSimpleblog_workflow(id):
    "..."
    ob = DCWorkflowDefinition(id)
    setupSimpleblog_workflow(ob)
    return ob

def setupSimpleblog_workflow(wf):
    "..."
    wf.setProperties(title='SimpleBlog Workflow')

    for s in ['published', 'draft']:
        wf.states.addState(s)
    for t in ['publish', 'retract']:
        wf.transitions.addTransition(t)
    for v in ['review_history', 'comments', 'time', 'actor', 'action']:
        wf.variables.addVariable(v)
    for l in []:
        wf.worklists.addWorklist(l)
    for p in ('Access contents information', 'Modify portal content', 'View'):
        wf.addManagedPermission(p)
        
    from Products.PythonScripts.PythonScript import manage_addPythonScript
    for p in ['sbPublishEntry']:
        manage_addPythonScript(wf.scripts, p)
        srcdef = wf.scripts['sbPublishEntry']
        srcdef.ZPythonScript_edit('', script_sbPublishEntry)

    ## Initial State
    wf.states.setInitialState('draft')

    ## States initialization
    sdef = wf.states['published']
    sdef.setProperties(title="""Public""",
                       transitions=('retract',))
    sdef.setPermission('Access contents information', 1, ['Anonymous', 'Manager'])
    sdef.setPermission('Modify portal content', 0, ['Manager', 'Owner'])
    sdef.setPermission('View', 0, ['Anonymous', 'Authenticated', 'Manager'])

    sdef = wf.states['draft']
    sdef.setProperties(title="""""",
                       transitions=('publish',))
    sdef.setPermission('Access contents information', 0, ['Manager', 'Owner'])
    sdef.setPermission('Modify portal content', 0, ['Manager', 'Owner'])
    sdef.setPermission('View', 0, ['Manager', 'Owner'])


    ## Transitions initialization
    tdef = wf.transitions['publish']
    tdef.setProperties(title="""Reviewer publishes content""",
                       new_state_id="""published""",
                       trigger_type=1,
                       script_name="""""",
                       after_script_name='sbPublishEntry',
                       actbox_name="""Publish""",
                       actbox_url="""%(content_url)s/content_publish_form""",
                       actbox_category="""workflow""",
                       props={'guard_roles': 'Manager; Owner'},
                       )

    tdef = wf.transitions['retract']
    tdef.setProperties(title="""Member retracts published item""",
                       new_state_id="""draft""",
                       trigger_type=1,
                       script_name="""""",
                       after_script_name="""""",
                       actbox_name="""Retract""",
                       actbox_url="""%(content_url)s/content_retract_form""",
                       actbox_category="""workflow""",
                       props={'guard_roles': 'Owner; Manager'},
                       )

    ## State Variable
    wf.variables.setStateVar('review_state')

    ## Variables initialization
    vdef = wf.variables['review_history']
    vdef.setProperties(description="""Provides access to workflow history""",
                       default_value="""""",
                       default_expr="""state_change/getHistory""",
                       for_catalog=0,
                       for_status=0,
                       update_always=0,
                       props={'guard_permissions': 'Request review; Review portal content'})

    vdef = wf.variables['comments']
    vdef.setProperties(description="""Comments about the last transition""",
                       default_value="""""",
                       default_expr="""python:state_change.kwargs.get('comment', '')""",
                       for_catalog=0,
                       for_status=1,
                       update_always=1,
                       props=None)

    vdef = wf.variables['time']
    vdef.setProperties(description="""Time of the last transition""",
                       default_value="""""",
                       default_expr="""state_change/getDateTime""",
                       for_catalog=0,
                       for_status=1,
                       update_always=1,
                       props=None)

    vdef = wf.variables['actor']
    vdef.setProperties(description="""The ID of the user who performed the last transition""",
                       default_value="""""",
                       default_expr="""user/getId""",
                       for_catalog=0,
                       for_status=1,
                       update_always=1,
                       props=None)

    vdef = wf.variables['action']
    vdef.setProperties(description="""The last transition""",
                       default_value="""""",
                       default_expr="""transition/getId|nothing""",
                       for_catalog=0,
                       for_status=1,
                       update_always=1,
                       props=None)

    ## Worklists Initialization



def wfTest():
    return 'ok'

addWorkflowFactory(createSimpleblog_workflow,
                   id='simpleblog_workflow',
                   title='Workflow for Blog Entries')

    