vbv/server/vbv_lernwelt/completion/views.py

55 lines
1.6 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.filter(
user=request.user,
circle_key=circle_key,
)
if ucc.count() > 0:
return Response(status=200, data=UserCircleCompletionSerializer(ucc.first()).data)
else:
return Response(status=200, 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,
)
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=200, data=UserCircleCompletionSerializer(ucc).data)