from rest_framework import serializers from apps.core.utils import HashIdService class HashIdField(serializers.Field): """ Serializer field that converts Integer ID to Hashid string and vice-versa. """ def __init__(self, **kwargs): self.source_field = kwargs.pop('source_field', None) super().__init__(**kwargs) def to_representation(self, value): if hasattr(value, 'pk'): return HashIdService.encode(value.pk) return HashIdService.encode(value) def to_internal_value(self, data): decoded = HashIdService.decode(data) if decoded is None: raise serializers.ValidationError("Invalid ID format") return decoded from .models import ImpactStat, LearningTool, Testimonial, SocialLink class ImpactStatSerializer(serializers.ModelSerializer): class Meta: model = ImpactStat fields = ['id', 'title', 'value', 'icon', 'description', 'order'] class LearningToolSerializer(serializers.ModelSerializer): class Meta: model = LearningTool fields = '__all__' class TestimonialSerializer(serializers.ModelSerializer): class Meta: model = Testimonial fields = '__all__' class SocialLinkSerializer(serializers.ModelSerializer): class Meta: model = SocialLink fields = '__all__'