55 lines
1.6 KiB
Python
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)
|