Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
course-discovery
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
course-discovery
Commits
50dc697a
Commit
50dc697a
authored
Dec 14, 2016
by
Waheed Ahmed
Committed by
GitHub
Dec 14, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #481 from edx/waheed/ecom-6298-list-published-course-permissions
Added permissions on published course runs tab.
parents
fea4a3f0
2c74cb6b
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
41 additions
and
4 deletions
+41
-4
course_discovery/apps/publisher/tests/test_views.py
+34
-1
course_discovery/apps/publisher/views.py
+7
-3
No files found.
course_discovery/apps/publisher/tests/test_views.py
View file @
50dc697a
...
...
@@ -23,7 +23,7 @@ from course_discovery.apps.core.tests.helpers import make_image_file
from
course_discovery.apps.course_metadata.tests
import
toggle_switch
from
course_discovery.apps.course_metadata.tests.factories
import
OrganizationFactory
from
course_discovery.apps.publisher.choices
import
PublisherUserRole
from
course_discovery.apps.publisher.constants
import
INTERNAL_USER_GROUP_NAME
from
course_discovery.apps.publisher.constants
import
INTERNAL_USER_GROUP_NAME
,
ADMIN_GROUP_NAME
from
course_discovery.apps.publisher.models
import
Course
,
CourseRun
,
Seat
,
State
from
course_discovery.apps.publisher.tests
import
factories
,
JSON_CONTENT_TYPE
from
course_discovery.apps.publisher.tests.utils
import
create_non_staff_user_and_login
...
...
@@ -1118,6 +1118,39 @@ class DashboardTests(TestCase):
self
.
assertContains
(
response
,
self
.
table_class
.
format
(
id
=
'published'
))
self
.
assertContains
(
response
,
'The list below contains all course runs published in the past 30 days'
)
def
test_published_course_runs_as_user_role
(
self
):
"""
Verify that user can see all published course runs as a user in a role for a course.
"""
internal_user
=
UserFactory
()
internal_user
.
groups
.
add
(
Group
.
objects
.
get
(
name
=
INTERNAL_USER_GROUP_NAME
))
self
.
client
.
login
(
username
=
internal_user
.
username
,
password
=
USER_PASSWORD
)
# Verify that user cannot see any published course run
response
=
self
.
assert_dashboard_response
()
self
.
assertEqual
(
len
(
response
.
context
[
'published_course_runs'
]),
0
)
# assign user course role
factories
.
CourseUserRoleFactory
(
course
=
self
.
course_run_3
.
course
,
user
=
internal_user
,
role
=
PublisherUserRole
.
PartnerCoordinator
)
# Verify that user can see 1 published course run
response
=
self
.
assert_dashboard_response
()
self
.
assertEqual
(
len
(
response
.
context
[
'published_course_runs'
]),
1
)
def
test_published_course_runs_as_admin
(
self
):
"""
Verify that publisher admin can see all published course runs.
"""
publisher_admin
=
UserFactory
()
publisher_admin
.
groups
.
add
(
Group
.
objects
.
get
(
name
=
ADMIN_GROUP_NAME
))
self
.
client
.
login
(
username
=
publisher_admin
.
username
,
password
=
USER_PASSWORD
)
factories
.
CourseRunFactory
(
state
=
factories
.
StateFactory
(
name
=
State
.
PUBLISHED
))
response
=
self
.
assert_dashboard_response
()
self
.
assertEqual
(
len
(
response
.
context
[
'published_course_runs'
]),
2
)
def
test_with_preview_ready_course_runs
(
self
):
""" Verify that preview ready tabs loads the course runs list. """
self
.
course_run_2
.
change_state
(
target
=
State
.
NEEDS_FINAL_APPROVAL
)
...
...
course_discovery/apps/publisher/views.py
View file @
50dc697a
...
...
@@ -27,7 +27,7 @@ from course_discovery.apps.publisher.models import (
Course
,
CourseRun
,
Seat
,
State
,
UserAttributes
)
from
course_discovery.apps.publisher.serializers
import
UpdateCourseKeySerializer
from
course_discovery.apps.publisher.utils
import
is_internal_user
,
get_internal_users
from
course_discovery.apps.publisher.utils
import
is_internal_user
,
get_internal_users
,
is_publisher_admin
from
course_discovery.apps.publisher.wrappers
import
CourseRunWrapper
logger
=
logging
.
getLogger
(
__name__
)
...
...
@@ -49,10 +49,14 @@ class Dashboard(mixins.LoginRequiredMixin, ListView):
default_published_days
=
30
def
get_queryset
(
self
):
if
self
.
request
.
user
.
is_staff
:
user
=
self
.
request
.
user
if
is_publisher_admin
(
user
):
course_runs
=
CourseRun
.
objects
.
select_related
(
'course'
)
.
all
()
elif
is_internal_user
(
user
):
internal_user_courses
=
Course
.
objects
.
filter
(
course_user_roles__user
=
user
)
course_runs
=
CourseRun
.
objects
.
filter
(
course__in
=
internal_user_courses
)
.
select_related
(
'course'
)
.
all
()
else
:
courses
=
get_objects_for_user
(
self
.
request
.
user
,
Course
.
VIEW_PERMISSION
,
Course
)
courses
=
get_objects_for_user
(
user
,
Course
.
VIEW_PERMISSION
,
Course
)
course_runs
=
CourseRun
.
objects
.
filter
(
course__in
=
courses
)
.
select_related
(
'course'
)
.
all
()
return
course_runs
...
...
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