fix: LI-10, improve home studio performance.
Improving Studio homepage performance for users with course access role with no course_id Fixing unit tests Added create CourseOverviewFactory after creating course to course listing test Fix order import for `from openedx.core.djangoapps.content.course_overviews.tests.factories import CourseOverviewFactory ` (cherry picked from commit 997a0ff770744309f0ee84f3c0696a80310c5f2d)
This commit is contained in:
@@ -315,24 +315,24 @@ class TestCourseListing(ModuleStoreTestCase):
|
||||
all of them.
|
||||
"""
|
||||
org_course_one = self.store.make_course_key('AwesomeOrg', 'Course1', 'RunBabyRun')
|
||||
CourseFactory.create(
|
||||
course_1 = CourseFactory.create(
|
||||
org=org_course_one.org,
|
||||
number=org_course_one.course,
|
||||
run=org_course_one.run
|
||||
)
|
||||
CourseOverviewFactory.create(id=course_1.id, org='AwesomeOrg')
|
||||
|
||||
org_course_two = self.store.make_course_key('AwesomeOrg', 'Course2', 'RunBabyRun')
|
||||
CourseFactory.create(
|
||||
course_2 = CourseFactory.create(
|
||||
org=org_course_two.org,
|
||||
number=org_course_two.course,
|
||||
run=org_course_two.run
|
||||
)
|
||||
CourseOverviewFactory.create(id=course_2.id, org='AwesomeOrg')
|
||||
|
||||
# Two types of org-wide roles have edit permissions: staff and instructor. We test both
|
||||
role.add_users(self.user)
|
||||
|
||||
with self.assertRaises(AccessListFallback):
|
||||
_accessible_courses_list_from_groups(self.request)
|
||||
courses_list, __ = get_courses_accessible_to_user(self.request)
|
||||
|
||||
# Verify fetched accessible courses list is a list of CourseSummery instances and test expacted
|
||||
@@ -340,6 +340,17 @@ class TestCourseListing(ModuleStoreTestCase):
|
||||
self.assertEqual(len(list(courses_list)), 2)
|
||||
self.assertTrue(all(isinstance(course, CourseOverview) for course in courses_list))
|
||||
|
||||
@ddt.data(OrgStaffRole(), OrgInstructorRole())
|
||||
def test_course_listing_org_permissions_exception(self, role):
|
||||
"""
|
||||
Create roles with no course_id neither org to make sure AccessListFallback is raised for
|
||||
platform-wide permissions
|
||||
"""
|
||||
role.add_users(self.user)
|
||||
|
||||
with self.assertRaises(AccessListFallback):
|
||||
_accessible_courses_list_from_groups(self.request)
|
||||
|
||||
def test_course_listing_with_actions_in_progress(self):
|
||||
sourse_course_key = CourseLocator('source-Org', 'source-Course', 'source-Run')
|
||||
|
||||
|
||||
@@ -483,10 +483,20 @@ def _accessible_courses_list_from_groups(request):
|
||||
courses_list = []
|
||||
course_keys = {}
|
||||
|
||||
user_global_orgs = set()
|
||||
for course_access in all_courses:
|
||||
if course_access.course_id is None:
|
||||
if course_access.course_id is not None:
|
||||
course_keys[course_access.course_id] = course_access.course_id
|
||||
elif course_access.org:
|
||||
user_global_orgs.add(course_access.org)
|
||||
else:
|
||||
raise AccessListFallback
|
||||
course_keys[course_access.course_id] = course_access.course_id
|
||||
|
||||
if user_global_orgs:
|
||||
# Getting courses from user global orgs
|
||||
overviews = CourseOverview.get_all_courses(orgs=list(user_global_orgs))
|
||||
overviews_course_keys = {overview.id: overview.id for overview in overviews}
|
||||
course_keys.update(overviews_course_keys)
|
||||
|
||||
course_keys = list(course_keys.values())
|
||||
|
||||
|
||||
Reference in New Issue
Block a user