Skip to content
Snippets Groups Projects
Commit 1dde5423 authored by florimondmanca's avatar florimondmanca
Browse files

update various serializers to use IDs instead of URLs

parent d3ee874b
Branches
No related tags found
No related merge requests found
...@@ -20,12 +20,6 @@ urlpatterns = [ ...@@ -20,12 +20,6 @@ urlpatterns = [
router = routers.DefaultRouter(trailing_slash=True) router = routers.DefaultRouter(trailing_slash=True)
# Visits views
router.register('visits', visits_views.VisitViewSet)
router.register('visit-participants', visits_views.VisitParticipantsViewSet,
base_name='visit-participants')
router.register('places', visits_views.PlaceViewSet)
# Users views # Users views
router.register('users', users_views.UserViewSet) router.register('users', users_views.UserViewSet)
router.register('tutors', users_views.TutorViewSet) router.register('tutors', users_views.TutorViewSet)
...@@ -33,14 +27,21 @@ router.register('students', users_views.StudentViewSet) ...@@ -33,14 +27,21 @@ router.register('students', users_views.StudentViewSet)
# Tutoring views # Tutoring views
router.register('schools', tutoring_views.SchoolViewSet) router.register('schools', tutoring_views.SchoolViewSet)
router.register('tutoring/groups', tutoring_views.TutoringGroupViewSet, router.register('groups', tutoring_views.TutoringGroupViewSet,
base_name='tutoring_group') base_name='tutoring_group')
router.register('tutoring/sessions', tutoring_views.TutoringSessionViewSet, router.register('sessions', tutoring_views.TutoringSessionViewSet,
base_name='tutoring_session') base_name='tutoring_session')
# Register views # Register views
router.register('registrations', register_views.RegistrationViewSet) router.register('registrations', register_views.RegistrationViewSet)
# Visits views
router.register('visits', visits_views.VisitViewSet)
router.register('visit-participants', visits_views.VisitParticipantsViewSet,
base_name='visit-participants')
router.register('places', visits_views.PlaceViewSet)
# Showcase site views # Showcase site views
router.register('articles', showcase_site_views.ArticleViewSet) router.register('articles', showcase_site_views.ArticleViewSet)
router.register('categories', showcase_site_views.CategoryViewSet) router.register('categories', showcase_site_views.CategoryViewSet)
......
...@@ -15,7 +15,7 @@ class DocumentSerializer(serializers.HyperlinkedModelSerializer): ...@@ -15,7 +15,7 @@ class DocumentSerializer(serializers.HyperlinkedModelSerializer):
class Meta: # noqa class Meta: # noqa
model = Document model = Document
fields = ('url', 'title', 'slug', 'content') fields = ('title', 'slug', 'content', 'url')
extra_kwargs = { extra_kwargs = {
'url': { 'url': {
'view_name': 'api:document-detail', 'view_name': 'api:document-detail',
......
...@@ -56,9 +56,9 @@ class ArticleSerializer(serializers.HyperlinkedModelSerializer): ...@@ -56,9 +56,9 @@ class ArticleSerializer(serializers.HyperlinkedModelSerializer):
class Meta: # noqa class Meta: # noqa
model = Article model = Article
fields = ('id', 'url', 'title', 'slug', 'introduction', fields = ('id', 'title', 'slug', 'introduction',
'content', 'published', 'modified', 'image', 'content', 'published', 'modified', 'image',
'display_image', 'pinned', 'categories',) 'display_image', 'pinned', 'categories', 'url',)
extra_kwargs = { extra_kwargs = {
'slug': {'read_only': True}, 'slug': {'read_only': True},
'url': {'view_name': 'api:article-detail'}, 'url': {'view_name': 'api:article-detail'},
......
...@@ -41,9 +41,9 @@ class TestArticleSerializer(SerializerTestCaseMixin, TestCase): ...@@ -41,9 +41,9 @@ class TestArticleSerializer(SerializerTestCaseMixin, TestCase):
factory_class = ArticleFactory factory_class = ArticleFactory
expected_fields = ( expected_fields = (
'id', 'url', 'title', 'slug', 'content', 'introduction', 'id', 'title', 'slug', 'content', 'introduction',
'published', 'modified', 'published', 'modified',
'image', 'display_image', 'pinned', 'categories', 'image', 'display_image', 'pinned', 'categories', 'url',
) )
def get_object(self): def get_object(self):
......
...@@ -33,7 +33,7 @@ class TutoringGroupTest(ModelTestCase): ...@@ -33,7 +33,7 @@ class TutoringGroupTest(ModelTestCase):
def test_get_absolute_url(self): def test_get_absolute_url(self):
self.client.force_login(UserFactory.create()) self.client.force_login(UserFactory.create())
response = self.client.get( response = self.client.get(
'/api/tutoring/groups/{}/'.format(self.obj.pk)) '/api/groups/{}/'.format(self.obj.pk))
self.assertEqual(200, response.status_code) self.assertEqual(200, response.status_code)
def test_tutors_many_to_many_relationship(self): def test_tutors_many_to_many_relationship(self):
......
...@@ -14,7 +14,7 @@ class TutoringGroupEndpointsTest(HyperlinkedAPITestCase): ...@@ -14,7 +14,7 @@ class TutoringGroupEndpointsTest(HyperlinkedAPITestCase):
serializer_class = TutoringGroupSerializer serializer_class = TutoringGroupSerializer
def perform_list(self): def perform_list(self):
url = '/api/tutoring/groups/' url = '/api/groups/'
response = self.client.get(url) response = self.client.get(url)
return response return response
...@@ -24,7 +24,7 @@ class TutoringGroupEndpointsTest(HyperlinkedAPITestCase): ...@@ -24,7 +24,7 @@ class TutoringGroupEndpointsTest(HyperlinkedAPITestCase):
def perform_retrieve(self): def perform_retrieve(self):
obj = self.factory.create() obj = self.factory.create()
url = '/api/tutoring/groups/{obj.pk}/'.format(obj=obj) url = '/api/groups/{obj.pk}/'.format(obj=obj)
response = self.client.get(url) response = self.client.get(url)
return response return response
......
...@@ -34,7 +34,7 @@ class TutoringSessionTest(ModelTestCase): ...@@ -34,7 +34,7 @@ class TutoringSessionTest(ModelTestCase):
self.obj = TutoringSessionFactory.create() self.obj = TutoringSessionFactory.create()
def test_get_absolute_url(self): def test_get_absolute_url(self):
url = '/api/tutoring/sessions/{}/'.format(self.obj.pk) url = '/api/sessions/{}/'.format(self.obj.pk)
response = self.client.get(url) response = self.client.get(url)
self.assertEqual(200, response.status_code) self.assertEqual(200, response.status_code)
......
...@@ -15,10 +15,9 @@ class SchoolSerializer(serializers.HyperlinkedModelSerializer): ...@@ -15,10 +15,9 @@ class SchoolSerializer(serializers.HyperlinkedModelSerializer):
""" """
address = AddressSerializer() address = AddressSerializer()
students = serializers.HyperlinkedRelatedField( students = serializers.PrimaryKeyRelatedField(
many=True, many=True,
queryset=Student.objects.all(), queryset=Student.objects.all(),
view_name='api:student-detail',
help_text='Lycéens inscrits à ce lycée', help_text='Lycéens inscrits à ce lycée',
) )
students_count = serializers.IntegerField(source='students.count', students_count = serializers.IntegerField(source='students.count',
...@@ -26,8 +25,8 @@ class SchoolSerializer(serializers.HyperlinkedModelSerializer): ...@@ -26,8 +25,8 @@ class SchoolSerializer(serializers.HyperlinkedModelSerializer):
class Meta: # noqa class Meta: # noqa
model = School model = School
fields = ('uai_code', 'url', 'name', 'address', 'students', fields = ('uai_code', 'name', 'address', 'students',
'students_count',) 'students_count', 'url',)
extra_kwargs = { extra_kwargs = {
'url': {'view_name': 'api:school-detail'}, 'url': {'view_name': 'api:school-detail'},
'uai_code': {'read_only': True}, 'uai_code': {'read_only': True},
...@@ -49,19 +48,16 @@ class SchoolSerializer(serializers.HyperlinkedModelSerializer): ...@@ -49,19 +48,16 @@ class SchoolSerializer(serializers.HyperlinkedModelSerializer):
class TutoringGroupSerializer(serializers.HyperlinkedModelSerializer): class TutoringGroupSerializer(serializers.HyperlinkedModelSerializer):
"""Serializer for TutoringGroup.""" """Serializer for TutoringGroup."""
tutors = serializers.HyperlinkedRelatedField( tutors = serializers.PrimaryKeyRelatedField(
many=True, many=True,
read_only=True, read_only=True,
view_name='api:tutor-detail',
) )
students = serializers.HyperlinkedRelatedField( students = serializers.PrimaryKeyRelatedField(
many=True, many=True,
read_only=True, read_only=True,
view_name='api:student-detail',
) )
school = serializers.HyperlinkedRelatedField( school = serializers.PrimaryKeyRelatedField(
read_only=True, read_only=True,
view_name='api:school-detail',
) )
students_count = serializers.IntegerField(source='students.count', students_count = serializers.IntegerField(source='students.count',
read_only=True) read_only=True)
...@@ -70,8 +66,8 @@ class TutoringGroupSerializer(serializers.HyperlinkedModelSerializer): ...@@ -70,8 +66,8 @@ class TutoringGroupSerializer(serializers.HyperlinkedModelSerializer):
class Meta: # noqa class Meta: # noqa
model = TutoringGroup model = TutoringGroup
fields = ('id', 'url', 'name', 'tutors', 'students', 'school', fields = ('id', 'name', 'tutors', 'students', 'school',
'students_count', 'tutors_count',) 'students_count', 'tutors_count', 'url',)
extra_kwargs = { extra_kwargs = {
'url': {'view_name': 'api:tutoring_group-detail'}, 'url': {'view_name': 'api:tutoring_group-detail'},
} }
...@@ -94,8 +90,8 @@ class TutoringSessionSerializer(serializers.HyperlinkedModelSerializer): ...@@ -94,8 +90,8 @@ class TutoringSessionSerializer(serializers.HyperlinkedModelSerializer):
class Meta: # noqa class Meta: # noqa
model = TutoringSession model = TutoringSession
fields = ('id', 'url', 'date', 'start_time', 'end_time', fields = ('id', 'date', 'start_time', 'end_time',
'tutoring_group',) 'tutoring_group', 'url',)
extra_kwargs = { extra_kwargs = {
'url': {'view_name': 'api:tutoring_session-detail'}, 'url': {'view_name': 'api:tutoring_session-detail'},
} }
...@@ -5,6 +5,7 @@ from rest_framework import serializers ...@@ -5,6 +5,7 @@ from rest_framework import serializers
from core.serializers import AddressSerializer from core.serializers import AddressSerializer
from tutoring.models import School, TutoringGroup from tutoring.models import School, TutoringGroup
from tutoring.serializers import TutoringGroupSerializer
from .models import Student, Tutor from .models import Student, Tutor
...@@ -32,19 +33,13 @@ class UserSerializer(serializers.HyperlinkedModelSerializer): ...@@ -32,19 +33,13 @@ class UserSerializer(serializers.HyperlinkedModelSerializer):
class TutorSerializer(serializers.HyperlinkedModelSerializer): class TutorSerializer(serializers.HyperlinkedModelSerializer):
"""Hyperlinked serializer for Tutor.""" """Hyperlinked serializer for Tutor."""
user = serializers.HyperlinkedRelatedField( user = UserSerializer()
queryset=User.objects.all(), tutoring_groups = serializers.PrimaryKeyRelatedField(
view_name='api:user-detail', many=True, read_only=True)
)
tutoring_groups = serializers.HyperlinkedRelatedField(
many=True,
read_only=True,
view_name='api:tutoring_group-detail',
)
class Meta: # noqa class Meta: # noqa
model = Tutor model = Tutor
fields = ('user_id', 'user', 'promotion', 'tutoring_groups', 'url',) fields = ('user', 'promotion', 'tutoring_groups', 'url',)
extra_kwargs = { extra_kwargs = {
'url': {'view_name': 'api:tutor-detail'}, 'url': {'view_name': 'api:tutor-detail'},
} }
...@@ -53,29 +48,23 @@ class TutorSerializer(serializers.HyperlinkedModelSerializer): ...@@ -53,29 +48,23 @@ class TutorSerializer(serializers.HyperlinkedModelSerializer):
class StudentSerializer(serializers.HyperlinkedModelSerializer): class StudentSerializer(serializers.HyperlinkedModelSerializer):
"""Hyperlinked serializer for Student.""" """Hyperlinked serializer for Student."""
user = serializers.HyperlinkedRelatedField( user = UserSerializer()
queryset=User.objects.all(), tutoring_group = serializers.PrimaryKeyRelatedField(
view_name='api:user-detail',
)
tutoring_group = serializers.HyperlinkedRelatedField(
queryset=TutoringGroup.objects.all(), queryset=TutoringGroup.objects.all(),
view_name='api:student-tutoringgroup',
) )
school = serializers.HyperlinkedRelatedField( school = serializers.PrimaryKeyRelatedField(
queryset=School.objects.all(), queryset=School.objects.all(),
view_name='api:school-detail',
) )
visits = serializers.HyperlinkedRelatedField( visits = serializers.PrimaryKeyRelatedField(
source='user.visit_set', source='user.visit_set',
many=True, many=True,
view_name='api:visit-detail',
read_only=True) read_only=True)
address = AddressSerializer() address = AddressSerializer()
class Meta: # noqa class Meta: # noqa
model = Student model = Student
fields = ('user_id', 'url', 'user', 'address', 'tutoring_group', fields = ('user_id', 'user', 'address', 'tutoring_group',
'school', 'visits',) 'school', 'visits', 'url',)
extra_kwargs = { extra_kwargs = {
'url': {'view_name': 'api:student-detail'}, 'url': {'view_name': 'api:student-detail'},
} }
...@@ -49,14 +49,15 @@ class VisitSerializer(serializers.HyperlinkedModelSerializer): ...@@ -49,14 +49,15 @@ class VisitSerializer(serializers.HyperlinkedModelSerializer):
class Meta: # noqa class Meta: # noqa
model = Visit model = Visit
fields = ('id', 'url', 'title', 'summary', 'description', 'place', fields = ('id', 'title', 'summary', 'description', 'place',
'date', 'passed', 'date', 'passed',
'deadline', 'registrations_open', 'deadline', 'registrations_open',
'participants', 'participants',
'organizers', 'organizers',
'attached_files', 'attached_files',
'image', 'image',
'fact_sheet',) 'fact_sheet',
'url',)
extra_kwargs = { extra_kwargs = {
'url': {'view_name': 'api:visit-detail'}, 'url': {'view_name': 'api:visit-detail'},
} }
...@@ -76,7 +77,7 @@ class VisitParticipantReadSerializer(serializers.HyperlinkedModelSerializer): ...@@ -76,7 +77,7 @@ class VisitParticipantReadSerializer(serializers.HyperlinkedModelSerializer):
class Meta: # noqa class Meta: # noqa
model = VisitParticipant model = VisitParticipant
fields = ('id', 'url', 'user', 'visit', 'present') fields = ('id', 'user', 'visit', 'present', 'url')
extra_kwargs = { extra_kwargs = {
'url': {'view_name': 'api:visit-participants-detail'}, 'url': {'view_name': 'api:visit-participants-detail'},
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment