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
b7e2d3be
Commit
b7e2d3be
authored
Mar 27, 2017
by
Waheed Ahmed
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
After MKT has reviewed a COURSE, any CT edits doesn't have to be approved by MKT again.
ECOM-7538
parent
e32f2f15
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
44 additions
and
13 deletions
+44
-13
course_discovery/apps/publisher/api/tests/test_views.py
+3
-1
course_discovery/apps/publisher/models.py
+6
-11
course_discovery/apps/publisher/tests/test_views.py
+30
-0
course_discovery/apps/publisher/views.py
+5
-1
No files found.
course_discovery/apps/publisher/api/tests/test_views.py
View file @
b7e2d3be
...
@@ -441,7 +441,7 @@ class ChangeCourseStateViewTests(TestCase):
...
@@ -441,7 +441,7 @@ class ChangeCourseStateViewTests(TestCase):
def
test_change_course_state
(
self
):
def
test_change_course_state
(
self
):
"""
"""
Verify that if marketing user change course
workflow
state, owner role will be changed to `CourseTeam`.
Verify that if marketing user change course state, owner role will be changed to `CourseTeam`.
"""
"""
self
.
assertNotEqual
(
self
.
course_state
.
name
,
CourseStateChoices
.
Review
)
self
.
assertNotEqual
(
self
.
course_state
.
name
,
CourseStateChoices
.
Review
)
factories
.
CourseUserRoleFactory
(
factories
.
CourseUserRoleFactory
(
...
@@ -465,6 +465,8 @@ class ChangeCourseStateViewTests(TestCase):
...
@@ -465,6 +465,8 @@ class ChangeCourseStateViewTests(TestCase):
self
.
assertEqual
(
self
.
course_state
.
name
,
CourseStateChoices
.
Review
)
self
.
assertEqual
(
self
.
course_state
.
name
,
CourseStateChoices
.
Review
)
self
.
assertEqual
(
self
.
course_state
.
owner_role
,
PublisherUserRole
.
CourseTeam
)
self
.
assertEqual
(
self
.
course_state
.
owner_role
,
PublisherUserRole
.
CourseTeam
)
# Verify that course is marked as reviewed by marketing.
self
.
assertTrue
(
self
.
course_state
.
marketing_reviewed
)
subject
=
'Changes to {title} are ready for review'
.
format
(
title
=
self
.
course
.
title
)
subject
=
'Changes to {title} are ready for review'
.
format
(
title
=
self
.
course
.
title
)
self
.
_assert_email_sent
(
course_team_user
,
subject
)
self
.
_assert_email_sent
(
course_team_user
,
subject
)
...
...
course_discovery/apps/publisher/models.py
View file @
b7e2d3be
...
@@ -522,11 +522,10 @@ class CourseState(TimeStampedModel, ChangedByMixin):
...
@@ -522,11 +522,10 @@ class CourseState(TimeStampedModel, ChangedByMixin):
elif
state
==
CourseStateChoices
.
Review
:
elif
state
==
CourseStateChoices
.
Review
:
user_role
=
self
.
course
.
course_user_roles
.
get
(
user
=
user
)
user_role
=
self
.
course
.
course_user_roles
.
get
(
user
=
user
)
if
user_role
.
role
==
PublisherUserRole
.
MarketingReviewer
:
if
user_role
.
role
==
PublisherUserRole
.
MarketingReviewer
:
self
.
owner_role
=
PublisherUserRole
.
CourseTeam
self
.
change_owner_role
(
PublisherUserRole
.
CourseTeam
)
self
.
owner_role_modified
=
timezone
.
now
()
self
.
marketing_reviewed
=
True
elif
user_role
.
role
==
PublisherUserRole
.
CourseTeam
:
elif
user_role
.
role
==
PublisherUserRole
.
CourseTeam
:
self
.
owner_role
=
PublisherUserRole
.
MarketingReviewer
self
.
change_owner_role
(
PublisherUserRole
.
MarketingReviewer
)
self
.
owner_role_modified
=
timezone
.
now
()
self
.
review
()
self
.
review
()
...
@@ -536,7 +535,6 @@ class CourseState(TimeStampedModel, ChangedByMixin):
...
@@ -536,7 +535,6 @@ class CourseState(TimeStampedModel, ChangedByMixin):
elif
state
==
CourseStateChoices
.
Approved
:
elif
state
==
CourseStateChoices
.
Approved
:
user_role
=
self
.
course
.
course_user_roles
.
get
(
user
=
user
)
user_role
=
self
.
course
.
course_user_roles
.
get
(
user
=
user
)
self
.
approved_by_role
=
user_role
.
role
self
.
approved_by_role
=
user_role
.
role
self
.
owner_role_modified
=
timezone
.
now
()
self
.
approved
()
self
.
approved
()
if
waffle
.
switch_is_active
(
'enable_publisher_email_notifications'
):
if
waffle
.
switch_is_active
(
'enable_publisher_email_notifications'
):
...
@@ -618,11 +616,9 @@ class CourseRunState(TimeStampedModel, ChangedByMixin):
...
@@ -618,11 +616,9 @@ class CourseRunState(TimeStampedModel, ChangedByMixin):
elif
state
==
CourseRunStateChoices
.
Review
:
elif
state
==
CourseRunStateChoices
.
Review
:
user_role
=
self
.
course_run
.
course
.
course_user_roles
.
get
(
user
=
user
)
user_role
=
self
.
course_run
.
course
.
course_user_roles
.
get
(
user
=
user
)
if
user_role
.
role
==
PublisherUserRole
.
ProjectCoordinator
:
if
user_role
.
role
==
PublisherUserRole
.
ProjectCoordinator
:
self
.
owner_role
=
PublisherUserRole
.
CourseTeam
self
.
change_owner_role
(
PublisherUserRole
.
CourseTeam
)
self
.
owner_role_modified
=
timezone
.
now
()
elif
user_role
.
role
==
PublisherUserRole
.
CourseTeam
:
elif
user_role
.
role
==
PublisherUserRole
.
CourseTeam
:
self
.
owner_role
=
PublisherUserRole
.
ProjectCoordinator
self
.
change_owner_role
(
PublisherUserRole
.
ProjectCoordinator
)
self
.
owner_role_modified
=
timezone
.
now
()
self
.
review
()
self
.
review
()
...
@@ -632,8 +628,7 @@ class CourseRunState(TimeStampedModel, ChangedByMixin):
...
@@ -632,8 +628,7 @@ class CourseRunState(TimeStampedModel, ChangedByMixin):
elif
state
==
CourseRunStateChoices
.
Approved
:
elif
state
==
CourseRunStateChoices
.
Approved
:
user_role
=
self
.
course_run
.
course
.
course_user_roles
.
get
(
user
=
user
)
user_role
=
self
.
course_run
.
course
.
course_user_roles
.
get
(
user
=
user
)
self
.
approved_by_role
=
user_role
.
role
self
.
approved_by_role
=
user_role
.
role
self
.
owner_role
=
PublisherUserRole
.
Publisher
self
.
change_owner_role
(
PublisherUserRole
.
Publisher
)
self
.
owner_role_modified
=
timezone
.
now
()
self
.
approved
()
self
.
approved
()
if
waffle
.
switch_is_active
(
'enable_publisher_email_notifications'
):
if
waffle
.
switch_is_active
(
'enable_publisher_email_notifications'
):
...
...
course_discovery/apps/publisher/tests/test_views.py
View file @
b7e2d3be
...
@@ -2068,6 +2068,36 @@ class CourseEditViewTests(TestCase):
...
@@ -2068,6 +2068,36 @@ class CourseEditViewTests(TestCase):
self
.
assertEqual
(
course_state
.
name
,
CourseStateChoices
.
Draft
)
self
.
assertEqual
(
course_state
.
name
,
CourseStateChoices
.
Draft
)
self
.
assertEqual
(
course_state
.
owner_role
,
PublisherUserRole
.
CourseTeam
)
self
.
assertEqual
(
course_state
.
owner_role
,
PublisherUserRole
.
CourseTeam
)
def
test_edit_course_with_marketing_reviewed
(
self
):
"""
Verify that if marketing already reviewed the course and then course team editing the course,
state does not change to `Draft` and ownership remains to `CourseTeam`.
"""
self
.
client
.
logout
()
self
.
client
.
login
(
username
=
self
.
course_team_role
.
user
.
username
,
password
=
USER_PASSWORD
)
self
.
_assign_permissions
(
self
.
organization_extension
)
self
.
course
.
course_state
.
name
=
CourseStateChoices
.
Review
self
.
course
.
course_state
.
owner_role
=
PublisherUserRole
.
CourseTeam
self
.
course
.
course_state
.
marketing_reviewed
=
True
self
.
course
.
course_state
.
save
()
post_data
=
self
.
_post_data
(
self
.
organization_extension
)
post_data
[
'team_admin'
]
=
self
.
course_team_role
.
user
.
id
response
=
self
.
client
.
post
(
self
.
edit_page_url
,
data
=
post_data
)
self
.
assertRedirects
(
response
,
expected_url
=
reverse
(
'publisher:publisher_course_detail'
,
kwargs
=
{
'pk'
:
self
.
course
.
id
}),
status_code
=
302
,
target_status_code
=
200
)
course_state
=
CourseState
.
objects
.
get
(
id
=
self
.
course
.
course_state
.
id
)
self
.
assertEqual
(
course_state
.
name
,
CourseStateChoices
.
Review
)
self
.
assertEqual
(
course_state
.
owner_role
,
PublisherUserRole
.
CourseTeam
)
@ddt.ddt
@ddt.ddt
class
CourseRunEditViewTests
(
TestCase
):
class
CourseRunEditViewTests
(
TestCase
):
...
...
course_discovery/apps/publisher/views.py
View file @
b7e2d3be
...
@@ -365,11 +365,15 @@ class CourseEditView(mixins.PublisherPermissionMixin, UpdateView):
...
@@ -365,11 +365,15 @@ class CourseEditView(mixins.PublisherPermissionMixin, UpdateView):
course_admin_role
.
user
=
team_admin
course_admin_role
.
user
=
team_admin
course_admin_role
.
save
()
course_admin_role
.
save
()
user_role
=
self
.
object
.
course_user_roles
.
get
(
user
=
user
)
# Change course state to draft if marketing not yet reviewed or
# if marketing person updating the course.
if
not
self
.
object
.
course_state
.
marketing_reviewed
or
user_role
.
role
==
PublisherUserRole
.
MarketingReviewer
:
if
self
.
object
.
course_state
.
name
!=
CourseStateChoices
.
Draft
:
if
self
.
object
.
course_state
.
name
!=
CourseStateChoices
.
Draft
:
self
.
object
.
course_state
.
change_state
(
state
=
CourseStateChoices
.
Draft
,
user
=
user
)
self
.
object
.
course_state
.
change_state
(
state
=
CourseStateChoices
.
Draft
,
user
=
user
)
# Change ownership if user role not equal to owner role.
# Change ownership if user role not equal to owner role.
user_role
=
self
.
object
.
course_user_roles
.
get
(
user
=
user
)
if
self
.
object
.
course_state
.
owner_role
!=
user_role
.
role
:
if
self
.
object
.
course_state
.
owner_role
!=
user_role
.
role
:
self
.
object
.
course_state
.
change_owner_role
(
user_role
.
role
)
self
.
object
.
course_state
.
change_owner_role
(
user_role
.
role
)
...
...
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