Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
793f9167
Commit
793f9167
authored
Jan 26, 2016
by
Awais Jibran
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
TNL-4049
Specific user cannot access studio.edge.edx.org/home
parent
aed41b15
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
36 additions
and
9 deletions
+36
-9
cms/djangoapps/contentstore/tests/test_course_listing.py
+33
-6
cms/djangoapps/contentstore/views/course.py
+3
-3
No files found.
cms/djangoapps/contentstore/tests/test_course_listing.py
View file @
793f9167
...
@@ -13,7 +13,7 @@ from xmodule.course_module import CourseSummary
...
@@ -13,7 +13,7 @@ from xmodule.course_module import CourseSummary
from
contentstore.views.course
import
(
_accessible_courses_list
,
_accessible_courses_list_from_groups
,
from
contentstore.views.course
import
(
_accessible_courses_list
,
_accessible_courses_list_from_groups
,
AccessListFallback
,
get_courses_accessible_to_user
,
AccessListFallback
,
get_courses_accessible_to_user
,
_
staff_accessible_course
_list
)
_
accessible_courses_summary
_list
)
from
contentstore.utils
import
delete_course_and_groups
from
contentstore.utils
import
delete_course_and_groups
from
contentstore.tests.utils
import
AjaxEnabledTestClient
from
contentstore.tests.utils
import
AjaxEnabledTestClient
from
student.tests.factories
import
UserFactory
from
student.tests.factories
import
UserFactory
...
@@ -83,9 +83,13 @@ class TestCourseListing(ModuleStoreTestCase):
...
@@ -83,9 +83,13 @@ class TestCourseListing(ModuleStoreTestCase):
courses_list
,
__
=
_accessible_courses_list
(
self
.
request
)
courses_list
,
__
=
_accessible_courses_list
(
self
.
request
)
self
.
assertEqual
(
len
(
courses_list
),
1
)
self
.
assertEqual
(
len
(
courses_list
),
1
)
courses_summary_list
,
__
=
_accessible_courses_summary_list
(
self
.
request
)
self
.
assertEqual
(
len
(
courses_summary_list
),
1
)
# get courses by reversing group name formats
# get courses by reversing group name formats
courses_list_by_groups
,
__
=
_accessible_courses_list_from_groups
(
self
.
request
)
courses_list_by_groups
,
__
=
_accessible_courses_list_from_groups
(
self
.
request
)
self
.
assertEqual
(
len
(
courses_list_by_groups
),
1
)
self
.
assertEqual
(
len
(
courses_list_by_groups
),
1
)
# check both course lists have same courses
# check both course lists have same courses
self
.
assertEqual
(
courses_list
,
courses_list_by_groups
)
self
.
assertEqual
(
courses_list
,
courses_list_by_groups
)
...
@@ -145,7 +149,7 @@ class TestCourseListing(ModuleStoreTestCase):
...
@@ -145,7 +149,7 @@ class TestCourseListing(ModuleStoreTestCase):
# Now count the db queries for staff
# Now count the db queries for staff
with
check_mongo_calls
(
mongo_calls
):
with
check_mongo_calls
(
mongo_calls
):
_
staff_accessible_course
_list
(
self
.
request
)
_
accessible_courses_summary
_list
(
self
.
request
)
@ddt.data
(
@ddt.data
(
(
ModuleStoreEnum
.
Type
.
split
,
'xmodule.modulestore.split_mongo.split_mongo_kvs.SplitMongoKVS'
),
(
ModuleStoreEnum
.
Type
.
split
,
'xmodule.modulestore.split_mongo.split_mongo_kvs.SplitMongoKVS'
),
...
@@ -189,10 +193,18 @@ class TestCourseListing(ModuleStoreTestCase):
...
@@ -189,10 +193,18 @@ class TestCourseListing(ModuleStoreTestCase):
courses_list
,
__
=
_accessible_courses_list
(
self
.
request
)
courses_list
,
__
=
_accessible_courses_list
(
self
.
request
)
self
.
assertEqual
(
len
(
courses_list
),
1
)
self
.
assertEqual
(
len
(
courses_list
),
1
)
courses_summary_list
,
__
=
_accessible_courses_summary_list
(
self
.
request
)
# Verify fetched accessible courses list is a list of CourseSummery instances and only one course
# is returned
self
.
assertTrue
(
all
(
isinstance
(
course
,
CourseSummary
)
for
course
in
courses_summary_list
))
self
.
assertEqual
(
len
(
courses_summary_list
),
1
)
# get courses by reversing group name formats
# get courses by reversing group name formats
courses_list_by_groups
,
__
=
_accessible_courses_list_from_groups
(
self
.
request
)
courses_list_by_groups
,
__
=
_accessible_courses_list_from_groups
(
self
.
request
)
self
.
assertEqual
(
len
(
courses_list_by_groups
),
1
)
self
.
assertEqual
(
len
(
courses_list_by_groups
),
1
)
# check both course lists have same courses
# check course lists have same courses
self
.
assertEqual
(
courses_list
,
courses_list_by_groups
)
self
.
assertEqual
(
courses_list
,
courses_list_by_groups
)
# now delete this course and re-add user to instructor group of this course
# now delete this course and re-add user to instructor group of this course
...
@@ -200,9 +212,20 @@ class TestCourseListing(ModuleStoreTestCase):
...
@@ -200,9 +212,20 @@ class TestCourseListing(ModuleStoreTestCase):
CourseInstructorRole
(
course_key
)
.
add_users
(
self
.
user
)
CourseInstructorRole
(
course_key
)
.
add_users
(
self
.
user
)
#
test that get courses through iterating all courses now returns no course
#
Get courses through iterating all courses
courses_list
,
__
=
_accessible_courses_list
(
self
.
request
)
courses_list
,
__
=
_accessible_courses_list
(
self
.
request
)
self
.
assertEqual
(
len
(
courses_list
),
0
)
# Get course summaries by iterating all courses
courses_summary_list
,
__
=
_accessible_courses_summary_list
(
self
.
request
)
# Get courses by reversing group name formats
courses_list_by_groups
,
__
=
_accessible_courses_list_from_groups
(
self
.
request
)
# Test that course list returns no course
self
.
assertEqual
(
[
len
(
courses_list
),
len
(
courses_list_by_groups
),
len
(
courses_summary_list
)],
[
0
,
0
,
0
]
)
@ddt.data
(
@ddt.data
(
(
ModuleStoreEnum
.
Type
.
split
,
150
,
505
),
(
ModuleStoreEnum
.
Type
.
split
,
150
,
505
),
...
@@ -308,8 +331,12 @@ class TestCourseListing(ModuleStoreTestCase):
...
@@ -308,8 +331,12 @@ class TestCourseListing(ModuleStoreTestCase):
with
self
.
assertRaises
(
AccessListFallback
):
with
self
.
assertRaises
(
AccessListFallback
):
_accessible_courses_list_from_groups
(
self
.
request
)
_accessible_courses_list_from_groups
(
self
.
request
)
courses_list
,
__
=
_accessible_courses_list
(
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
# course count is returned
self
.
assertEqual
(
len
(
courses_list
),
2
)
self
.
assertEqual
(
len
(
courses_list
),
2
)
self
.
assertTrue
(
all
(
isinstance
(
course
,
CourseSummary
)
for
course
in
courses_list
))
def
test_course_listing_with_actions_in_progress
(
self
):
def
test_course_listing_with_actions_in_progress
(
self
):
sourse_course_key
=
CourseLocator
(
'source-Org'
,
'source-Course'
,
'source-Run'
)
sourse_course_key
=
CourseLocator
(
'source-Org'
,
'source-Course'
,
'source-Run'
)
...
...
cms/djangoapps/contentstore/views/course.py
View file @
793f9167
...
@@ -358,7 +358,7 @@ def get_in_process_course_actions(request):
...
@@ -358,7 +358,7 @@ def get_in_process_course_actions(request):
]
]
def
_
staff_accessible_course
_list
(
request
):
def
_
accessible_courses_summary
_list
(
request
):
"""
"""
List all courses available to the logged in user by iterating through all the courses
List all courses available to the logged in user by iterating through all the courses
"""
"""
...
@@ -621,14 +621,14 @@ def get_courses_accessible_to_user(request):
...
@@ -621,14 +621,14 @@ def get_courses_accessible_to_user(request):
"""
"""
if
GlobalStaff
()
.
has_user
(
request
.
user
):
if
GlobalStaff
()
.
has_user
(
request
.
user
):
# user has global access so no need to get courses from django groups
# user has global access so no need to get courses from django groups
courses
,
in_process_course_actions
=
_
staff_accessible_course
_list
(
request
)
courses
,
in_process_course_actions
=
_
accessible_courses_summary
_list
(
request
)
else
:
else
:
try
:
try
:
courses
,
in_process_course_actions
=
_accessible_courses_list_from_groups
(
request
)
courses
,
in_process_course_actions
=
_accessible_courses_list_from_groups
(
request
)
except
AccessListFallback
:
except
AccessListFallback
:
# user have some old groups or there was some error getting courses from django groups
# user have some old groups or there was some error getting courses from django groups
# so fallback to iterating through all courses
# so fallback to iterating through all courses
courses
,
in_process_course_actions
=
_accessible_courses_list
(
request
)
courses
,
in_process_course_actions
=
_accessible_courses_
summary_
list
(
request
)
return
courses
,
in_process_course_actions
return
courses
,
in_process_course_actions
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment