Skip to content
Snippets Groups Projects
Commit 9a5a377c authored by florimondmanca's avatar florimondmanca
Browse files

add form in edition serializer

parent cdf2f5ff
No related branches found
No related tags found
No related merge requests found
......@@ -17,10 +17,11 @@ class TutorSerializer(serializers.HyperlinkedModelSerializer):
user = UserSerializer()
tutoring_groups = serializers.PrimaryKeyRelatedField(
many=True, read_only=True)
address = AddressSerializer()
class Meta: # noqa
model = Tutor
fields = ('user', 'promotion', 'tutoring_groups', 'url',)
fields = ('user', 'address', 'promotion', 'tutoring_groups', 'url',)
extra_kwargs = {
'url': {'view_name': 'api:tutor-detail'},
}
......
......@@ -105,6 +105,7 @@ class EditionForm(models.Model):
edition = models.OneToOneField(
'Edition',
on_delete=models.CASCADE,
related_name='edition_form',
verbose_name='édition')
form = models.OneToOneField(
......
......@@ -5,8 +5,10 @@ from rest_framework import serializers
from core.fields import MarkdownField
from users.fields import UserField
from users.serializers import UserSerializer
from profiles.serializers import TutorSerializer
from dynamicforms.serializers import FormDetailSerializer
from .models import Edition, Participation, Project
from .models import Edition, Participation, Project, EditionForm
class ProjectSerializer(serializers.HyperlinkedModelSerializer):
......@@ -48,7 +50,7 @@ class EditionListSerializer(serializers.HyperlinkedModelSerializer):
"""List serializer for Edition objects."""
description = MarkdownField()
project = ProjectSerializer()
project = serializers.PrimaryKeyRelatedField(read_only=True)
organizers = serializers.SerializerMethodField()
participations = serializers.SerializerMethodField()
......@@ -69,8 +71,32 @@ class EditionListSerializer(serializers.HyperlinkedModelSerializer):
}
class EditionFormSerializer(serializers.ModelSerializer):
"""Serializer for edition form objects."""
form = FormDetailSerializer()
edition = serializers.PrimaryKeyRelatedField(read_only=True)
recipient = TutorSerializer()
class Meta: # noqa
model = EditionForm
fields = ('id', 'edition', 'deadline', 'recipient', 'form')
class EditionDetailSerializer(EditionListSerializer):
"""Detail serializer for Edition objects."""
organizers = UserSerializer(many=True)
participations = ParticipationSerializer(many=True)
edition_form = EditionFormSerializer()
class Meta(EditionListSerializer.Meta): # noqa
fields = EditionListSerializer.Meta.fields + ('edition_form',)
class ProjectDetailSerializer(ProjectSerializer):
editions = EditionListSerializer(many=True)
class Meta(ProjectSerializer.Meta): # noqa
fields = ProjectSerializer.Meta.fields + ('editions',)
"""Projects views."""
from rest_framework import mixins, permissions, viewsets
from django_filters import rest_framework as filters
from rest_framework import mixins, viewsets, permissions
from .models import Edition, Participation, Project
from .serializers import (EditionDetailSerializer, EditionListSerializer,
ParticipationSerializer, ProjectSerializer)
ParticipationSerializer, ProjectDetailSerializer,
ProjectSerializer)
class ProjectViewSet(viewsets.ReadOnlyModelViewSet):
......@@ -51,9 +53,13 @@ class ProjectViewSet(viewsets.ReadOnlyModelViewSet):
"""
queryset = Project.objects.all()
serializer_class = ProjectSerializer
permission_classes = (permissions.IsAuthenticated,)
def get_serializer_class(self):
if self.action == 'retrieve':
return ProjectDetailSerializer
return ProjectSerializer
class EditionViewSet(viewsets.ReadOnlyModelViewSet):
"""List and retrieve project editions.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment