Commit 31adeb0c by Zia Fazal Committed by Jonathan Piacenti

fixed duplicates when user is enrolled in more than one course

parent 03e0bf7d
......@@ -1738,6 +1738,7 @@ class CoursesApiTests(ModuleStoreTestCase):
for user in users:
CourseEnrollmentFactory.create(user=user, course_id=course.id)
CourseEnrollmentFactory.create(user=user, course_id=self.course.id)
test_course_id = unicode(course.id)
completion_uri = '{}/{}/completions/'.format(self.base_courses_uri, test_course_id)
......
......@@ -1453,7 +1453,9 @@ class CoursesMetricsGradesList(SecureListAPIView):
course_key = get_course_key(course_id)
exclude_users = _get_aggregate_exclusion_user_ids(course_key)
queryset = StudentGradebook.objects.filter(course_id__exact=course_key,
user__courseenrollment__is_active=True)\
user__is_active=True,
user__courseenrollment__is_active=True,
user__courseenrollment__course_id__exact=course_key)\
.exclude(user__in=exclude_users)
upper_bound = getattr(settings, 'API_LOOKUP_UPPER_BOUND', 200)
......@@ -1592,21 +1594,25 @@ class CoursesTimeSeriesMetrics(SecureAPIView):
exclude_users = _get_aggregate_exclusion_user_ids(course_key)
grade_complete_match_range = getattr(settings, 'GRADEBOOK_GRADE_COMPLETE_PROFORMA_MATCH_RANGE', 0.01)
grades_qs = StudentGradebook.objects.filter(course_id__exact=course_key, user__is_active=True,
user__courseenrollment__is_active=True).\
user__courseenrollment__is_active=True,
user__courseenrollment__course_id__exact=course_key).\
exclude(user_id__in=exclude_users)
grades_complete_qs = grades_qs.filter(proforma_grade__lte=F('grade') + grade_complete_match_range,
proforma_grade__gt=0)
enrolled_qs = CourseEnrollment.objects.filter(course_id__exact=course_key, user__is_active=True,
is_active=True).exclude(user_id__in=exclude_users)
users_started_qs = StudentProgressHistory.objects.filter(course_id__exact=course_key, user__is_active=True,
user__courseenrollment__is_active=True)\
user__courseenrollment__is_active=True,
user__courseenrollment__course_id__exact=course_key)\
.exclude(user_id__in=exclude_users)
modules_completed_qs = CourseModuleCompletion.get_actual_completions().filter(course_id__exact=course_key,
user__courseenrollment__is_active=True,
user__courseenrollment__course_id__exact=course_key,
user__is_active=True)\
.exclude(user_id__in=exclude_users)
active_users_qs = StudentModule.objects.filter(course_id__exact=course_key, student__is_active=True,
student__courseenrollment__is_active=True)\
student__courseenrollment__is_active=True,
student__courseenrollment__course_id__exact=course_key)\
.exclude(student_id__in=exclude_users)
organization = request.QUERY_PARAMS.get('organization', None)
......
......@@ -45,7 +45,8 @@ class OrganizationsViewSet(viewsets.ModelViewSet):
courses = []
for course_string in courses_filter:
courses.append(get_course_key(course_string))
org_user_grades = org_user_grades.filter(course_id__in=courses)
org_user_grades = org_user_grades.filter(course_id__in=courses,
user__courseenrollment__course_id__in=courses)
users_grade_average = org_user_grades.aggregate(Avg('grade'))
if users_grade_average['grade__avg']:
......
......@@ -70,6 +70,7 @@ class StudentGradebook(TimeStampedModel):
# Generate the base data set we're going to work with
queryset = StudentGradebook.objects.select_related('user')\
.filter(course_id__exact=course_key, user__is_active=True, user__courseenrollment__is_active=True,
user__courseenrollment__course_id__exact=course_key,
user__in=enrolled_users_not_excluded)
gradebook_user_count = len(queryset)
......
......@@ -30,7 +30,8 @@ class StudentProgress(TimeStampedModel):
Returns count of completions for a given course.
"""
queryset = cls.objects.filter(course_id__exact=course_key, user__is_active=True,
user__courseenrollment__is_active=True)\
user__courseenrollment__is_active=True,
user__courseenrollment__course_id__exact=course_key)\
.exclude(user__id__in=exclude_users)
if org_ids:
queryset = queryset.filter(user__organizations__in=org_ids)
......@@ -44,7 +45,8 @@ class StudentProgress(TimeStampedModel):
Returns count of users who completed at least one module.
"""
queryset = cls.objects.filter(course_id__exact=course_key, user__is_active=True,
user__courseenrollment__is_active=True)\
user__courseenrollment__is_active=True,
user__courseenrollment__course_id__exact=course_key)\
.exclude(user__id__in=exclude_users)
if org_ids:
queryset = queryset.filter(user__organizations__in=org_ids)
......@@ -89,7 +91,8 @@ class StudentProgress(TimeStampedModel):
"""
queryset = cls.objects\
.filter(course_id__exact=course_key, user__is_active=True, user__courseenrollment__is_active=True)\
.filter(course_id__exact=course_key, user__is_active=True, user__courseenrollment__is_active=True,
user__courseenrollment__course_id__exact=course_key)\
.exclude(user__id__in=exclude_users)
if org_ids:
queryset = queryset.filter(user__organizations__in=org_ids)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment