Merge pull request #29689 from eduNEXT/staff-org-studio-fix-details

fix: Improve studio /settings/details page.
This commit is contained in:
Zia Fazal
2022-06-08 15:27:55 +05:00
committed by GitHub
2 changed files with 27 additions and 6 deletions

View File

@@ -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')

View File

@@ -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())