def quizzes(self, request, pk=None): concept = get_object_or_404(Concept, pk=pk) self.check_object_permissions(request=request, obj=concept.group.course) serializer = QuizSerializer(concept.quizzes.all(), many=True) _playlist = typed_playlist.to_array(concept.playlist) ordered_data = [] for elem in _playlist: if elem[2] == 1: ordered_data.append(serializer.data[elem[1]]) return Response(ordered_data)
def playlist_as_array(self, request, pk=None, with_history=False): """ Gets all the elements in the playlist """ concept = get_object_or_404(Concept, pk=pk) #videos_obj = concept.videos.all() videos_obj = [] for elem in json.loads(concept.playlist): if elem[2] == 0: videos_obj.append(Video.objects.get(pk=elem[0])) pages_obj = concept.pages.all() #pages_obj = [] #for elem in json.loads(concept.playlist): # if elem[2] == 2: # pages_obj.append(Document.objects.get(pk=elem[0])) quizzes_obj = concept.quizzes.all() videos = VideoSerializer(videos_obj, many=True) pages = [page.to_dict() for page in pages_obj] quizzes = QuizSerializer(quizzes_obj, many=True) _playlist = typed_playlist.to_array(concept.playlist) if with_history: videos_history = [] for video in videos_obj: videohistory = VideoHistory.objects.filter(video=video, user=request.user) if (len(videohistory) == 0): videohistory = VideoHistory(video=video, user=request.user) videohistory.save() else: videohistory = videohistory[0] videos_history.append( VideoHistorySerializer(videohistory).data) quizzes_history = [] for quiz in quizzes_obj: quizhistory = ConceptQuizHistory.objects.filter( quiz=quiz, user=request.user) if (len(quizhistory) == 0): quizhistory = ConceptQuizHistory(quiz=quiz, user=request.user) quizhistory.save() else: quizhistory = quizhistory[0] quizzes_history.append( ConceptQuizHistorySerializer(quizhistory).data) pages_history = [] for document in pages_obj: documenthistory = ConceptDocumentHistory.objects.filter( document=document, user=request.user) if (len(documenthistory) == 0): documenthistory = ConceptDocumentHistory(document=document, user=request.user) documenthistory.save() else: documenthistory = documenthistory[0] pages_history.append( ConceptDocumentHistorySerializer(documenthistory).data) ordered_data = [] for elem in _playlist: if elem[2] == 0: next_item = {'type': 'video', 'content': videos.data[elem[1]]} if with_history: next_item['history'] = videos_history[elem[1]] elif elem[2] == 1: next_item = {'type': 'quiz', 'content': quizzes.data[elem[1]]} if with_history: next_item['history'] = quizzes_history[elem[1]] elif elem[2] == 2: next_item = {'type': 'document', 'content': pages[elem[1]]} if with_history: next_item['history'] = pages_history[elem[1]] ordered_data.append(next_item) return ordered_data
def playlist_as_array(self, request, pk=None, with_history=False): """ Gets all the elements in the playlist """ concept = get_object_or_404(Concept, pk=pk) #videos_obj = concept.videos.all() videos_obj = [] for elem in json.loads(concept.playlist): if elem[2] == 0: videos_obj.append(Video.objects.get(pk=elem[0])) pages_obj = concept.pages.all() #pages_obj = [] #for elem in json.loads(concept.playlist): # if elem[2] == 2: # pages_obj.append(Document.objects.get(pk=elem[0])) quizzes_obj = concept.quizzes.all() videos = VideoSerializer(videos_obj, many=True) pages = [page.to_dict() for page in pages_obj] quizzes = QuizSerializer(quizzes_obj, many=True) _playlist = typed_playlist.to_array(concept.playlist) if with_history: videos_history = [] for video in videos_obj: videohistory = VideoHistory.objects.filter(video=video, user=request.user) if (len(videohistory) == 0): videohistory = VideoHistory(video=video, user=request.user) videohistory.save() else: videohistory = videohistory[0] videos_history.append( VideoHistorySerializer(videohistory).data) quizzes_history = [] for quiz in quizzes_obj: quizhistory = ConceptQuizHistory.objects.filter( quiz=quiz, user=request.user) if (len(quizhistory) == 0): quizhistory = ConceptQuizHistory( quiz=quiz, user=request.user) quizhistory.save() else: quizhistory = quizhistory[0] quizzes_history.append( ConceptQuizHistorySerializer(quizhistory).data) pages_history = [] for document in pages_obj: documenthistory = ConceptDocumentHistory.objects.filter( document=document, user=request.user) if (len(documenthistory) == 0): documenthistory = ConceptDocumentHistory( document=document, user=request.user) documenthistory.save() else: documenthistory = documenthistory[0] pages_history.append( ConceptDocumentHistorySerializer(documenthistory).data) ordered_data = [] for elem in _playlist: if elem[2] == 0: next_item = { 'type': 'video', 'content': videos.data[elem[1]] } if with_history: next_item['history'] = videos_history[elem[1]] elif elem[2] == 1: next_item = { 'type': 'quiz', 'content': quizzes.data[elem[1]] } if with_history: next_item['history'] = quizzes_history[elem[1]] elif elem[2] == 2: next_item = { 'type': 'document', 'content': pages[elem[1]] } if with_history: next_item['history'] = pages_history[elem[1]] ordered_data.append(next_item) return ordered_data