Add duedate to API

This commit is contained in:
Lorenz Padberg 2023-06-14 15:44:16 +02:00
parent f05d7b2279
commit cda7ae07a8
4 changed files with 36 additions and 0 deletions

View File

@ -7,6 +7,8 @@ from vbv_lernwelt.course.models import (
CourseCompletion,
CourseSession,
)
from vbv_lernwelt.duedate.models import DueDate
from vbv_lernwelt.duedate.serializers import DueDateSerializer
class CourseSerializer(serializers.ModelSerializer):
@ -50,6 +52,7 @@ class CourseSessionSerializer(serializers.ModelSerializer):
competence_url = serializers.SerializerMethodField()
media_library_url = serializers.SerializerMethodField()
documents = serializers.SerializerMethodField()
duedates = serializers.SerializerMethodField()
def get_course(self, obj):
return CourseSerializer(obj.course).data
@ -75,6 +78,11 @@ class CourseSessionSerializer(serializers.ModelSerializer):
)
return CircleDocumentSerializer(documents, many=True).data
def get_duedates(self, obj):
# TODO: Filter by user / userrole
duedates = DueDate.objects.filter(course_session=obj)
return DueDateSerializer(duedates, many=True).data
class Meta:
model = CourseSession
fields = [
@ -94,6 +102,7 @@ class CourseSessionSerializer(serializers.ModelSerializer):
"media_library_url",
"course_url",
"documents",
"duedates"
]

View File

@ -7,6 +7,7 @@ from vbv_lernwelt.core.models import User
from vbv_lernwelt.course.consts import COURSE_TEST_ID
from vbv_lernwelt.course.creators.test_course import create_test_course
from vbv_lernwelt.course.models import CourseSession, CourseSessionUser
from vbv_lernwelt.duedate.factories import DueDateFactory
class CourseCompletionApiTestCase(APITestCase):
@ -20,6 +21,7 @@ class CourseCompletionApiTestCase(APITestCase):
course_id=COURSE_TEST_ID,
title="Test Lehrgang Session",
)
DueDateFactory(course_session=self.course_session)
self.client.login(username="student", password="test")
@ -51,3 +53,4 @@ class CourseCompletionApiTestCase(APITestCase):
print(json.dumps(response.json(), indent=4))
self.assertEqual(response.json()[0]["id"], self.course_session.id)
self.assertNotEquals(response.json()[0]["duedates"], [])

View File

@ -0,0 +1,9 @@
from rest_framework import serializers
from vbv_lernwelt.duedate.models import DueDate
class DueDateSerializer(serializers.ModelSerializer):
class Meta:
model = DueDate
fields = '__all__'

View File

@ -0,0 +1,15 @@
from django.test import TestCase
from vbv_lernwelt.duedate.factories import DueDateFactory
from vbv_lernwelt.duedate.models import DueDate
from vbv_lernwelt.duedate.serializers import DueDateSerializer
class TestDueDatetSerializer(TestCase):
def test_duedate_serializer(self):
DueDateFactory()
assert DueDate.objects.count() == 1
duedates = DueDate.objects.all()
result = DueDateSerializer(duedates, many=True).data
assert result[0]['title'] == 'Prüfung Versicherungsvermittler/-in'