コード例 #1
0
ファイル: models.py プロジェクト: daelin/aurora
    def get_final_evaluation_top_level_tasks(course):
        # final_top_level_tasks = []
        # top_level_tasks = Elaboration.get_top_level_tasks(course)
        # for elaboration in top_level_tasks:
        #
        #     cache_key = str(elaboration.user.id) + '_submitted_points'
        #     if (cache.has_key(cache_key)):
        #         submitted_points = cache.get(cache_key)
        #     else:
        #         submitted_points = elaboration.user.total_points_submitted(course)
        #         cache.set(cache_key, submitted_points, 60*30)
        #
        #     if submitted_points >= 57:
        #         final_top_level_tasks.append(elaboration)
        #
        # return final_top_level_tasks

        from Challenge.models import Challenge

        final_challenge_ids = Challenge.get_course_final_challenge_ids(course)
        possible_user_ids = CourseUserRelation.objects.filter(
            course=course,
            positive_completion_possible=True).values_list('user_id',
                                                           flat=True)

        final_top_level_challenges = (Elaboration.objects.filter(
            challenge__id__in=final_challenge_ids,
            submission_time__isnull=False,
            user__is_staff=False,
            user_id__in=possible_user_ids).annotate(
                evaluated=Min('evaluation__submission_time')).filter(
                    evaluated=None).order_by('-submission_time'))

        return final_top_level_challenges
コード例 #2
0
ファイル: views.py プロジェクト: martflu/aurora
def final_tasks(course):
    final_task_ids = Challenge.get_course_final_challenge_ids(course)

    result = []
    for id in final_task_ids:
        data = {}
        data['id'] = id
        data['title'] = (
            Challenge.objects.get(pk=id).title
        )
        a = Challenge.objects.get(pk=id).get_stack()
        data['challenge'] = (
            Challenge.objects.get(pk=id).get_stack().title
        )
        data['evaluated'] = (
            Evaluation.objects
                .filter(submission__challenge__course=course)
                .filter(submission_time__isnull=False)
                .filter(submission__challenge__id=id)
                .count()
        )
        data['not_evaluated'] = (
            Elaboration.get_top_level_tasks(course)
                .filter(challenge__id=id)
                .count()
        )
        result.append(data)
    return result
コード例 #3
0
ファイル: models.py プロジェクト: aljaz/aurora
    def get_extra_reviews(user, course):
        from Challenge.models import Challenge

        user_submitted_challenge_ids = Elaboration.objects.filter(user_id=user.id, submission_time__isnull=False).values_list('challenge_id', flat=True)

        final_challenge_ids = Challenge.get_course_final_challenge_ids(course)
        already_written_review_elaboration_ids = Review.objects.filter(reviewer_id=user.id).values_list('elaboration_id', flat=True)

        missing_reviews = (
            Elaboration.objects
                .annotate(num_reviews=Count('review'))
                .filter(challenge__id__in=user_submitted_challenge_ids,
                        submission_time__isnull=False,
                        user__is_staff=False,
                        challenge__course=course,
                        num_reviews__lt=2)
                .exclude(challenge__id__in=final_challenge_ids)
                .exclude(id__in=already_written_review_elaboration_ids)
                .exclude(user=user)
                .order_by('num_reviews', 'submission_time')
        )

        missing_reviews = list(missing_reviews)
        missing_reviews.sort(key=lambda e: e.user.review_karma(course))

        # Add Open Reviews to top of list
        has_open_review = False
        open_reviews = Review.objects.filter(submission_time__isnull=True, reviewer=user)
        for review in open_reviews:
            print(review.id)
            has_open_review = True
            missing_reviews = [review.elaboration] + missing_reviews

        return { 'has_open_review': has_open_review, 'missing_reviews': missing_reviews[:7] }
コード例 #4
0
ファイル: models.py プロジェクト: martflu/aurora
    def get_final_evaluation_top_level_tasks(course):
        # final_top_level_tasks = []
        # top_level_tasks = Elaboration.get_top_level_tasks(course)
        # for elaboration in top_level_tasks:
        #
        #     cache_key = str(elaboration.user.id) + '_submitted_points'
        #     if (cache.has_key(cache_key)):
        #         submitted_points = cache.get(cache_key)
        #     else:
        #         submitted_points = elaboration.user.total_points_submitted(course)
        #         cache.set(cache_key, submitted_points, 60*30)
        #
        #     if submitted_points >= 57:
        #         final_top_level_tasks.append(elaboration)
        #
        # return final_top_level_tasks

        from Challenge.models import Challenge

        final_challenge_ids = Challenge.get_course_final_challenge_ids(course)
        possible_user_ids = CourseUserRelation.objects.filter(course=course, positive_completion_possible=True).values_list('user_id', flat=True)

        final_top_level_challenges = (
            Elaboration.objects
            .filter(challenge__id__in=final_challenge_ids, submission_time__isnull=False, user__is_staff=False, user_id__in=possible_user_ids)
            .annotate(evaluated=Min('evaluation__submission_time'))
            .filter(evaluated=None)
            .order_by('-submission_time')
        )

        return final_top_level_challenges
コード例 #5
0
ファイル: models.py プロジェクト: daelin/aurora
    def get_top_level_tasks(course):
        from Challenge.models import Challenge

        final_challenge_ids = Challenge.get_course_final_challenge_ids(course)
        top_level_challenges = (Elaboration.objects.filter(
            challenge__id__in=final_challenge_ids,
            submission_time__isnull=False,
            user__is_staff=False).annotate(
                evaluated=Min('evaluation__submission_time')).filter(
                    evaluated=None).order_by('-submission_time'))
        return top_level_challenges
コード例 #6
0
ファイル: models.py プロジェクト: bobschi/aurora
    def get_top_level_tasks(course):
        from Challenge.models import Challenge

        final_challenge_ids = Challenge.get_course_final_challenge_ids(course)
        top_level_challenges = (
            Elaboration.objects
            .filter(challenge__id__in=final_challenge_ids, submission_time__isnull=False, user__is_staff=False)
            .annotate(evaluated=Min('evaluation__submission_time'))
            .filter(evaluated=None)
            .order_by('-submission_time')
        )
        return top_level_challenges
コード例 #7
0
def final_tasks(course):
    final_task_ids = Challenge.get_course_final_challenge_ids(course)

    result = []
    for id in final_task_ids:
        data = {}
        data['id'] = id
        data['title'] = (Challenge.objects.get(pk=id).title)
        data['evaluated'] = (Evaluation.objects.filter(
            submission__challenge__course=course).filter(
                submission_time__isnull=False).filter(
                    submission__challenge__id=id).count())
        data['not_evaluated'] = (
            Elaboration.get_top_level_tasks(course).filter(
                challenge__id=id).count())
        result.append(data)
    return result
コード例 #8
0
ファイル: models.py プロジェクト: bobschi/aurora
    def get_missing_reviews(course):
        from Challenge.models import Challenge

        final_challenge_ids = Challenge.get_course_final_challenge_ids(course)
        missing_reviews = (
            Elaboration.objects
            .filter(submission_time__lte=datetime.now() - timedelta(days=1), user__is_staff=False,
                    challenge__course=course)
            .annotate(num_reviews=Count('review'))
            .exclude(challenge__id__in=final_challenge_ids)
        )
        final_elaborations = []
        for elaboration in missing_reviews:
            if elaboration.num_reviews < 2:
                final_elaborations.append(elaboration.id)
            else:
                if Review.objects.filter(elaboration=elaboration, submission_time__isnull=False).count() < 2:
                    final_elaborations.append(elaboration.id)

        missing_reviews = Elaboration.objects.filter(id__in=final_elaborations)
        return missing_reviews
コード例 #9
0
ファイル: models.py プロジェクト: daelin/aurora
    def get_extra_reviews(user, course):
        from Challenge.models import Challenge

        user_submitted_challenge_ids = Elaboration.objects.filter(
            user_id=user.id,
            submission_time__isnull=False).values_list('challenge_id',
                                                       flat=True)

        final_challenge_ids = Challenge.get_course_final_challenge_ids(course)
        already_written_review_elaboration_ids = Review.objects.filter(
            reviewer_id=user.id).values_list('elaboration_id', flat=True)

        missing_reviews = (Elaboration.objects.annotate(
            num_reviews=Count('review')).filter(
                challenge__id__in=user_submitted_challenge_ids,
                submission_time__isnull=False,
                user__is_staff=False,
                challenge__course=course,
                num_reviews__lt=2).exclude(
                    challenge__id__in=final_challenge_ids).exclude(
                        id__in=already_written_review_elaboration_ids).exclude(
                            user=user).order_by('num_reviews',
                                                'submission_time'))

        missing_reviews = list(missing_reviews)
        missing_reviews.sort(key=lambda e: e.user.review_karma(course))

        # Add Open Reviews to top of list
        has_open_review = False
        open_reviews = Review.objects.filter(submission_time__isnull=True,
                                             reviewer=user)
        for review in open_reviews:
            print(review.id)
            has_open_review = True
            missing_reviews = [review.elaboration] + missing_reviews

        return {
            'has_open_review': has_open_review,
            'missing_reviews': missing_reviews[:7]
        }
コード例 #10
0
ファイル: models.py プロジェクト: daelin/aurora
    def get_missing_reviews(course):
        from Challenge.models import Challenge

        final_challenge_ids = Challenge.get_course_final_challenge_ids(course)
        missing_reviews = (Elaboration.objects.filter(
            submission_time__lte=datetime.now() - timedelta(days=1),
            user__is_staff=False,
            challenge__course=course).annotate(
                num_reviews=Count('review')).exclude(
                    challenge__id__in=final_challenge_ids))
        final_elaborations = []
        for elaboration in missing_reviews:
            if elaboration.num_reviews < 2:
                final_elaborations.append(elaboration.id)
            else:
                if Review.objects.filter(
                        elaboration=elaboration,
                        submission_time__isnull=False).count() < 2:
                    final_elaborations.append(elaboration.id)

        missing_reviews = Elaboration.objects.filter(id__in=final_elaborations)
        return missing_reviews