Exemple #1
0
    def check_complete(self, user):
        """Checks if a lesson is complete, and if it is, marks it complete in the database."""

        # Get lesson progress
        lesson_progress = self.progress_for_user(user)

        # Get all task progress for this lesson
        tp_qs = TaskProgress.objects.filter(user=user, task__lesson=self).all()
        # Convert the queryset to a list so we can do cached operations
        tp_list = list(tp_qs)

        # Assume lesson complete until we reach a task that isn't complete
        lesson_complete = True
        for task in self.task_set.all():
            task_progress = utils.find_using_property(tp_list, task, 'task')
            # If task progress was not found, or if task progress completed is False,
            # the lesson isn't complete.
            if not task_progress or not task_progress.completed:
                lesson_complete = False

        if lesson_complete:
            lesson_progress.complete()
            # Log the lesson is complete
            CourseLog.complete_lesson(user)

        self.course.check_complete(user)
Exemple #2
0
    def calc_progress(self, user):
        """Calculates the percentage complete for a course and saves to percentage_complete."""

        # Get all tasks for a course
        tp_qs = TaskProgress.objects.filter(user=user, task__lesson__course=self.course).all()
        # Convert the queryset to a list so we can do cached operations
        tp_list = list(tp_qs)

        total_tasks = 0
        completed_tasks = 0
        # Loop through all lessons and tasks while keeping track of total_tasks and completed_tasks
        for lesson in self.course.lesson_set.all():
            for task in lesson.task_set.all():
                total_tasks += 1
                task_progress = utils.find_using_property(tp_list, task, 'task')
                if task_progress and task_progress.completed:
                    completed_tasks += 1

        # Calculate the percentage completed and save to the database
        self.percentage_complete = round(completed_tasks / float(total_tasks) * 100)
        self.save()
Exemple #3
0
    def check_complete(self, user):
        """Checks if a course is complete, and if it is, marks it complete in the database."""

        # Get course progress
        course_progress = self.progress_for_user(user)

        # Get all lesson progress for this course
        lp_qs = LessonProgress.objects.filter(user=user, lesson__course=self).all()
        # Convert the queryset to a list so we can do cached operations
        lp_list = list(lp_qs)

        # Assume course complete until we reach a task that isn't complete
        course_complete = True
        for lesson in self.lesson_set.all():
            lesson_progress = utils.find_using_property(lp_list, lesson, 'lesson')
            # If lesson progress was not found, or if lesson progress completed is False,
            # the course isn't complete.
            if not lesson_progress or not lesson_progress.completed:
                course_complete = False

        if course_complete:
            course_progress.complete()
            # Log course complete
            CourseLog.complete_course(user)