38 lines
1.3 KiB
Python
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
|