File: //proc/1233/root/home/arjun/projects/buyercall/buyercall/blueprints/workflows/serializers.py
from buyercall.blueprints.user.models import User
from buyercall.blueprints.workflows.models import Workflow, WordkflowType, WorkflowConditionAction
from buyercall.extensions import ma
class WorkflowOutSchema(ma.SQLAlchemyAutoSchema):
type_id = ma.Method('get_workflow_type_id')
type = ma.Method('get_workflow_type')
created_by_agent_id = ma.Method("get_created_by_agent_id")
updated_by_agent_id = ma.Method("get_updated_by_agent_id")
created_by = ma.Method("get_created_by")
updated_by = ma.Method("get_updated_by")
isActive = ma.Method('get_is_active')
class Meta:
model = Workflow
exclude = ['id', 'partnership_account_id', 'partnership_id', 'workflow_detail', 'workflow_type']
def get_workflow_type_id(self, obj):
return WordkflowType.get_sid_from_id(obj.workflow_type)
def get_workflow_type(self, obj):
wft = WordkflowType.get_by_id(obj.workflow_type)
return wft.name if wft else None
def get_created_by_agent_id(self, obj):
return User.get_sid_from_id(obj.created_by)
def get_updated_by_agent_id(self, obj):
return User.get_sid_from_id(obj.updated_by)
def get_created_by(self, obj):
usr = User.get_by_id(obj.created_by)
return usr.name if usr else None
def get_updated_by(self, obj):
usr = User.get_by_id(obj.updated_by)
return usr.name if usr else None
def get_is_active(self, obj):
return 1 if obj.is_active else 0
class WorkflowDetailOutSchema(ma.SQLAlchemyAutoSchema):
type_id = ma.Method('get_workflow_type_id')
type = ma.Method('get_workflow_type')
conditions = ma.Method('get_workflow_conditions')
actions = ma.Method('get_workflow_actions')
created_by_agent_id = ma.Method("get_created_by_agent_id")
updated_by_agent_id = ma.Method("get_updated_by_agent_id")
created_by = ma.Method("get_created_by")
updated_by = ma.Method("get_updated_by")
selectExecutionType = ma.Method('get_execution_type')
class Meta:
model = Workflow
exclude = ['id', 'partnership_account_id', 'partnership_id', 'workflow_detail', 'workflow_type']
def get_workflow_type_id(self, obj):
return WordkflowType.get_sid_from_id(obj.workflow_type)
def get_workflow_type(self, obj):
wft = WordkflowType.get_by_id(obj.workflow_type)
return wft.name if wft else None
def get_created_by_agent_id(self, obj):
return User.get_sid_from_id(obj.created_by)
def get_updated_by_agent_id(self, obj):
return User.get_sid_from_id(obj.updated_by)
def get_created_by(self, obj):
usr = User.get_by_id(obj.created_by)
return usr.name if usr else None
def get_updated_by(self, obj):
usr = User.get_by_id(obj.updated_by)
return usr.name if usr else None
def get_workflow_conditions(self, obj):
wf_detail = WorkflowConditionAction.get_by_id(obj.workflow_detail)
return wf_detail.conditions if wf_detail else {}
def get_workflow_actions(self, obj):
wf_detail = WorkflowConditionAction.get_by_id(obj.workflow_detail)
return wf_detail.actions if wf_detail else {}
def get_execution_type(self, obj):
wf_detail = WorkflowConditionAction.get_by_id(obj.workflow_detail)
return 1 if wf_detail.is_new_contact else 2
class WorkflowTypeOutSchema(ma.SQLAlchemyAutoSchema):
class Meta:
model = WordkflowType
exclude = ['id', 'is_active']