hberp/hb_server/apps/wf/serializers.py

62 lines
1.7 KiB
Python

from rest_framework.serializers import ModelSerializer, SerializerMethodField, CharField
from .models import State, Ticket, Workflow, Transition, CustomField
class WorkflowSerializer(ModelSerializer):
class Meta:
model = Workflow
fields = '__all__'
class StateSerializer(ModelSerializer):
class Meta:
model = State
fields = '__all__'
class WorkflowSimpleSerializer(ModelSerializer):
class Meta:
model = Workflow
fields = ['id', 'name']
class StateSimpleSerializer(ModelSerializer):
class Meta:
model = State
fields = ['id', 'name']
class TransitionSerializer(ModelSerializer):
source_state_ = StateSimpleSerializer(source='source_state', read_only=True)
destination_state_ = StateSimpleSerializer(source='destination_state', read_only=True)
class Meta:
model = Transition
fields = '__all__'
@staticmethod
def setup_eager_loading(queryset):
""" Perform necessary eager loading of data. """
queryset = queryset.select_related('source_state','destination_state')
return queryset
class CustomFieldSerializer(ModelSerializer):
class Meta:
model = CustomField
fields = '__all__'
class TicketCreateSerializer(ModelSerializer):
class Meta:
model=Ticket
fields=['title','workflow','ticket_data']
class TicketSerializer(ModelSerializer):
workflow_ = WorkflowSimpleSerializer(source='workflow', read_only=True)
state_ = StateSimpleSerializer(source='state', read_only=True)
class Meta:
model = Ticket
fields = '__all__'
@staticmethod
def setup_eager_loading(queryset):
queryset = queryset.select_related('workflow','state')
return queryset