54 lines
1.2 KiB
Python
54 lines
1.2 KiB
Python
# created at 15-6-30
|
|
# coding=utf-8
|
|
__author__ = 'zhugl'
|
|
|
|
|
|
class Operation(object):
|
|
APPROVE = 1
|
|
DENY = 3
|
|
TERMINATE = 4
|
|
|
|
|
|
class WorkflowAction(object):
|
|
|
|
name = ''
|
|
description = ''
|
|
|
|
def action(self,request,obj,node_config,operation=Operation.APPROVE):
|
|
"""
|
|
|
|
:param request:
|
|
:param obj:
|
|
:param node_config:
|
|
:return:
|
|
"""
|
|
|
|
|
|
class TestAction(WorkflowAction):
|
|
name = 'action.test'
|
|
|
|
def action(self,request,obj,node_config,operation=Operation.APPROVE):
|
|
print 'this is a workflow test action'
|
|
print 'request user is %s,current node is %s'%(request.user,node_config)
|
|
|
|
|
|
class WorkflowActionManager(object):
|
|
"""
|
|
|
|
"""
|
|
actions = {}
|
|
registed = False
|
|
|
|
def __init__(self):
|
|
if WorkflowActionManager.registed:
|
|
pass
|
|
else:
|
|
WorkflowActionManager.register(TestAction)
|
|
WorkflowActionManager.registed = True
|
|
|
|
@classmethod
|
|
def register(cls,action):
|
|
if cls.actions.get(action.name):
|
|
raise Exception('%s already exists,register failed'%action.name)
|
|
if issubclass(action,WorkflowAction):
|
|
WorkflowActionManager.actions[action.name] = action() |