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