84 lines
2.9 KiB
Python
84 lines
2.9 KiB
Python
from rest_framework import serializers
|
|
|
|
from apps.standards.models import (
|
|
StandardSource,
|
|
StandardCategory,
|
|
Standard,
|
|
StandardCompliance,
|
|
StandardAttachment,
|
|
ActivityType,
|
|
)
|
|
|
|
|
|
class StandardSourceSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = StandardSource
|
|
fields = '__all__'
|
|
read_only_fields = ['id', 'created_at', 'updated_at']
|
|
|
|
|
|
class StandardCategorySerializer(serializers.ModelSerializer):
|
|
source_name = serializers.CharField(source='source.name', read_only=True, default="")
|
|
|
|
class Meta:
|
|
model = StandardCategory
|
|
fields = '__all__'
|
|
read_only_fields = ['id', 'created_at', 'updated_at']
|
|
|
|
|
|
class ActivityTypeSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = ActivityType
|
|
fields = '__all__'
|
|
read_only_fields = ['id', 'created_at', 'updated_at']
|
|
|
|
|
|
class StandardSerializer(serializers.ModelSerializer):
|
|
source_name = serializers.CharField(source='source.name', read_only=True)
|
|
category_name = serializers.CharField(source='category.name', read_only=True)
|
|
department_names = serializers.SerializerMethodField()
|
|
activity_type_name = serializers.CharField(source='activity_type.name', read_only=True, default="")
|
|
parent_standard_code = serializers.CharField(source='parent_standard.code', read_only=True, default="")
|
|
|
|
class Meta:
|
|
model = Standard
|
|
fields = '__all__'
|
|
read_only_fields = ['id', 'created_at', 'updated_at']
|
|
|
|
def get_department_names(self, obj):
|
|
return [d.name for d in obj.departments.all()]
|
|
|
|
|
|
class StandardComplianceSerializer(serializers.ModelSerializer):
|
|
hospital_name = serializers.CharField(source='hospital.name_en', read_only=True, default="")
|
|
department_name = serializers.CharField(source='department.name', read_only=True, default="")
|
|
standard_code = serializers.CharField(source='standard.code', read_only=True)
|
|
standard_title = serializers.CharField(source='standard.title', read_only=True)
|
|
assessor_name = serializers.CharField(source='assessor.get_full_name', read_only=True, default="")
|
|
attachment_count = serializers.SerializerMethodField()
|
|
|
|
class Meta:
|
|
model = StandardCompliance
|
|
fields = '__all__'
|
|
read_only_fields = ['id', 'created_at', 'updated_at']
|
|
|
|
def get_attachment_count(self, obj):
|
|
return obj.attachments.count()
|
|
|
|
|
|
class StandardAttachmentSerializer(serializers.ModelSerializer):
|
|
uploaded_by_name = serializers.CharField(source='uploaded_by.get_full_name', read_only=True, default="")
|
|
standard_code = serializers.SerializerMethodField()
|
|
|
|
class Meta:
|
|
model = StandardAttachment
|
|
fields = '__all__'
|
|
read_only_fields = ['id', 'created_at', 'updated_at']
|
|
|
|
def get_standard_code(self, obj):
|
|
if obj.compliance:
|
|
return obj.compliance.standard.code
|
|
if obj.standard:
|
|
return obj.standard.code
|
|
return ""
|