67 lines
2.2 KiB
Python
67 lines
2.2 KiB
Python
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, LearningContentCompletionSerializer
|
|
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,
|
|
)
|
|
|
|
response_data = {}
|
|
if ucc.count() > 0:
|
|
response_data = UserCircleCompletionSerializer(ucc.first()).data
|
|
|
|
response_data['completed_learning_contents'] = LearningContentCompletionSerializer(
|
|
LearningContentCompletion.objects.filter(circle_key=circle_key, user=request.user),
|
|
many=True
|
|
).data
|
|
|
|
return Response(status=200, data=response_data)
|
|
|
|
|
|
@api_view(['POST'])
|
|
def complete_learning_content(request):
|
|
learning_content_key = request.data.get('learning_content_key')
|
|
completed = request.data.get('completed', True)
|
|
learning_content = LearningContent.objects.get(translation_key=learning_content_key)
|
|
|
|
circle_key = learning_content.get_parent().translation_key
|
|
|
|
lcc, created = LearningContentCompletion.objects.get_or_create(
|
|
user=request.user,
|
|
learning_content_key=learning_content_key,
|
|
circle_key=circle_key,
|
|
)
|
|
lcc.completed = completed
|
|
lcc.save()
|
|
|
|
ucc, created = UserCircleCompletion.objects.get_or_create(
|
|
user=request.user,
|
|
circle_key=circle_key,
|
|
)
|
|
|
|
response_data = UserCircleCompletionSerializer(ucc).data
|
|
response_data['completed_learning_contents'] = LearningContentCompletionSerializer(
|
|
LearningContentCompletion.objects.filter(circle_key=circle_key, user=request.user),
|
|
many=True
|
|
).data
|
|
|
|
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=response_data)
|