80 lines
2.7 KiB
Python
80 lines
2.7 KiB
Python
from django.db.models.base import Model
|
|
from rest_framework import serializers
|
|
from .models import *
|
|
from apps.system.serializers import OrganizationSerializer,FileListSerializer,UserSimpleSerializer,OrganizationSimpleSerializer, FileSimpleSerializer
|
|
|
|
|
|
class ContentSerializer(serializers.ModelSerializer):
|
|
type_ = serializers.SerializerMethodField()
|
|
class Meta:
|
|
model = Content
|
|
fields = '__all__'
|
|
|
|
@staticmethod
|
|
def setup_eager_loading(queryset):
|
|
""" Perform necessary eager loading of data. """
|
|
queryset = queryset.select_related('type')
|
|
return queryset
|
|
|
|
def get_type_ (self, obj):
|
|
data = obj.type.name
|
|
if obj.type.pid:
|
|
data = obj.type.pid.name + '/' + data
|
|
return data
|
|
|
|
class ContentListSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Content
|
|
fields = ['name', 'desc', 'id', 'template']
|
|
|
|
class TaskCreateUpdateSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Task
|
|
fields = ['name', 'end_date', 'note', 'id']
|
|
|
|
class TaskListSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Task
|
|
fields = ['name', 'end_date', 'note', 'state', 'id']
|
|
|
|
class RecordSerializer(serializers.ModelSerializer):
|
|
content_ = ContentListSerializer(source='content', read_only=True)
|
|
task_ = TaskListSerializer(source='task', read_only=True)
|
|
belong_dept_ = OrganizationSimpleSerializer(source='belong_dept', read_only=True)
|
|
files_ = FileSimpleSerializer(source='files', many=True, read_only=True)
|
|
up_user_ = UserSimpleSerializer(source='up_user', read_only = True)
|
|
class Meta:
|
|
model = Record
|
|
fields = '__all__'
|
|
|
|
@staticmethod
|
|
def setup_eager_loading(queryset):
|
|
queryset = queryset.select_related('task', 'content', 'belong_dept', 'up_user')
|
|
queryset = queryset.prefetch_related('files',)
|
|
return queryset
|
|
|
|
class RecordCreateSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Record
|
|
fields = ['content', 'files', 'noteb']
|
|
|
|
|
|
class TaksDetailSerializer(serializers.ModelSerializer):
|
|
create_by_ = UserSimpleSerializer(source='create_by', read_only = True)
|
|
belong_dept_ = OrganizationSimpleSerializer(source='belong_dept', read_only=True)
|
|
class Meta:
|
|
model = Task
|
|
fields = '__all__'
|
|
|
|
class TaskDeptSerializer(serializers.ModelSerializer):
|
|
task_ = TaskListSerializer(source='task', read_only=True)
|
|
dept_ = OrganizationSimpleSerializer(source='dept', read_only=True)
|
|
|
|
class Meta:
|
|
model = TaskDept
|
|
fields = '__all__'
|
|
|
|
@staticmethod
|
|
def setup_eager_loading(queryset):
|
|
queryset = queryset.select_related('task', 'dept')
|
|
return queryset |