HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
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']