AccroCBio/backend/education/serializers.py
Louis Mazin 7677667d0b nice
2026-10-13 18:32:32 +02:00

38 lines
1.3 KiB
Python

from rest_framework import serializers
from .models import Announcement, ContactMessage, Resource, Testimonial
class ResourceSerializer(serializers.ModelSerializer):
class Meta:
model = Resource
fields = ('id', 'title', 'description', 'category', 'kind', 'url')
class TestimonialSerializer(serializers.ModelSerializer):
class Meta:
model = Testimonial
fields = ('id', 'author', 'description', 'quote')
class AnnouncementSerializer(serializers.ModelSerializer):
class Meta:
model = Announcement
fields = ('id', 'title', 'body', 'cta_label')
class ContactSerializer(serializers.ModelSerializer):
# Champ honeypot : toujours vide dans les requêtes légitimes.
website = serializers.CharField(required=False, allow_blank=True, write_only=True)
accepted_privacy = serializers.BooleanField(required=True)
class Meta:
model = ContactMessage
fields = ('name', 'email', 'phone', 'level', 'message', 'accepted_privacy', 'website')
def validate(self, attrs):
if attrs.pop('website', ''):
raise serializers.ValidationError({'message': 'Message non accepté.'})
if not attrs.get('accepted_privacy'):
raise serializers.ValidationError({'accepted_privacy': 'Le consentement est nécessaire.'})
return attrs