vbv/server/vbv_lernwelt/completion/views.py

59 lines
1.9 KiB
Python

from datetime import datetime
import structlog
from rest_framework.decorators import api_view
from rest_framework.response import Response
from vbv_lernwelt.completion.models import LearningContentCompletion, UserCircleCompletion
from vbv_lernwelt.completion.serializers import UserCircleCompletionSerializer
from vbv_lernwelt.learnpath.models import LearningContent
logger = structlog.get_logger(__name__)
@api_view(['GET'])
def request_user_circle_completion(request, circle_key):
ucc = UserCircleCompletion.objects.get(
user=request.user,
circle_key=circle_key,
)
return Response(status=200, data=UserCircleCompletionSerializer(ucc).data)
@api_view(['POST'])
def complete_learning_content(request):
learning_content_key = request.data.get('learning_content_key')
learning_content = LearningContent.objects.get(translation_key=learning_content_key)
circle_key = learning_content.get_parent().translation_key
LearningContentCompletion.objects.get_or_create(
user=request.user,
learning_content_key=learning_content_key,
circle_key=circle_key,
)
ucc, created = UserCircleCompletion.objects.get_or_create(
user=request.user,
circle_key=circle_key,
)
completed_learning_contents = ucc.json_data.get('completed_learning_contents', {})
completed_learning_contents[learning_content_key] = {
'learning_content_key': learning_content_key,
'created_at': datetime.now().isoformat(),
}
ucc.json_data['completed_learning_contents'] = completed_learning_contents
ucc.save()
logger.debug(
'learning content completed',
label='completion_api',
circle_key=circle_key,
learning_content_key=learning_content_key,
user_id=request.user.id,
)
return Response(status=201, data=UserCircleCompletionSerializer(ucc).data)