Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
    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