File size: 1,351 Bytes
fafd0bb |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
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__'
|