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)