HH/apps/standards/serializers.py
ismail c5f76b3855
Some checks are pending
Build and Push Docker Image / build (push) Waiting to run
updates
2026-05-11 14:45:30 +03:00

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 ""