Skip to content
This repository has been archived by the owner on Feb 27, 2024. It is now read-only.

Commit

Permalink
Filtered users with admin roles for relevant courses. (#58)
Browse files Browse the repository at this point in the history
  • Loading branch information
sohaibaslam authored Jun 29, 2020
1 parent 95d666a commit ba3e8b3
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 18 deletions.
34 changes: 17 additions & 17 deletions edx_solutions_organizations/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -318,29 +318,29 @@ def courses(self, request, pk): # pylint: disable=W0613
"""
exclude_admins = str2bool(request.query_params.get('exclude_admins'))
organization = self.get_object()
organization_courses = []
organization_course_ids = []
roles_to_exclude = []

course_access_roles = {}
if exclude_admins:
organization_courses = CourseEnrollment.objects\
.filter(user__organizations=organization, is_active=True)\
.order_by('course_id').distinct().values_list('course_id', flat=True)
for course_id in organization_courses:
organization_course_ids.append(course_id.to_deprecated_string())
organization_courses = map(get_course_key, filter(None, organization_course_ids))
roles_to_exclude = [CourseInstructorRole.ROLE, CourseStaffRole.ROLE, CourseObserverRole.ROLE, CourseAssistantRole.ROLE]
roles_to_exclude = [CourseInstructorRole.ROLE, CourseStaffRole.ROLE, CourseObserverRole.ROLE,
CourseAssistantRole.ROLE]

for course_access in CourseAccessRole.objects.filter(role__in=roles_to_exclude,
user__organizations=organization):
if not course_access_roles.get(course_access.user_id):
course_access_roles[course_access.user_id] = [course_access.course_id]

enrollment_qs = CourseEnrollment.objects\
.filter(user__organizations=organization, is_active=True)\
.exclude(
user_id__in=CourseAccessRole.objects.filter(
course_id__in=organization_courses, role__in=roles_to_exclude
).values_list('user_id', flat=True)
).values_list('course_id', 'user_id')
course_access_roles[course_access.user_id] += [course_access.course_id]

enrollment_qs = CourseEnrollment.objects.filter(
user__organizations=organization, is_active=True
).values_list('course_id', 'user_id')

enrollments = {}
course_ids = []
for (course_id, user_id) in enrollment_qs:
if course_id in course_access_roles.get(user_id, []):
continue

enrollments.setdefault(course_id.to_deprecated_string(), []).append(user_id)
if course_id.to_deprecated_string() not in course_ids:
course_ids.append(course_id.to_deprecated_string())
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

setup(
name='organizations-edx-platform-extensions',
version='2.0.1',
version='2.0.2',
description='Organization management extension for edX platform',
long_description=open('README.rst').read(),
author='edX',
Expand Down

0 comments on commit ba3e8b3

Please sign in to comment.