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
10a2fcd7
Commit
10a2fcd7
authored
Oct 18, 2017
by
attiyaishaque
Committed by
Attiya Ishaque
Oct 24, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Filters/SearchQuery returns correct results in Course Tab.
parent
24ca8d5a
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
56 additions
and
8 deletions
+56
-8
course_discovery/apps/publisher/models.py
+18
-7
course_discovery/apps/publisher/tests/test_views.py
+24
-0
course_discovery/apps/publisher/views.py
+14
-1
No files found.
course_discovery/apps/publisher/models.py
View file @
10a2fcd7
...
...
@@ -606,6 +606,17 @@ class CourseState(TimeStampedModel, ChangedByMixin):
history
=
HistoricalRecords
()
# course team status
Draft
=
_
(
'Draft'
)
SubmittedForMarketingReview
=
_
(
'Submitted for Marketing Review'
)
ApprovedByCourseTeam
=
_
(
'Approved by Course Team'
)
AwaitingCourseTeamReview
=
_
(
'Awaiting Course Team Review'
)
# internal user status
NotAvailable
=
_
(
'N/A'
)
AwaitingMarketingReview
=
_
(
'Awaiting Marketing Review'
)
ApprovedByMarketing
=
_
(
'Approved by Marketing'
)
def
__str__
(
self
):
return
self
.
get_name_display
()
...
...
@@ -699,22 +710,22 @@ class CourseState(TimeStampedModel, ChangedByMixin):
@property
def
course_team_status
(
self
):
if
self
.
is_draft
and
self
.
owner_role
==
PublisherUserRole
.
CourseTeam
and
not
self
.
marketing_reviewed
:
return
_
(
'Draft'
)
return
self
.
Draft
elif
self
.
owner_role
==
PublisherUserRole
.
MarketingReviewer
:
return
_
(
'Submitted for Marketing Review'
)
return
self
.
SubmittedForMarketingReview
elif
self
.
owner_role
==
PublisherUserRole
.
CourseTeam
and
self
.
is_approved
:
return
_
(
'Approved by Course Team'
)
return
self
.
ApprovedByCourseTeam
elif
self
.
marketing_reviewed
and
self
.
owner_role
==
PublisherUserRole
.
CourseTeam
:
return
_
(
'Awaiting Course Team Review'
)
return
self
.
AwaitingCourseTeamReview
@property
def
internal_user_status
(
self
):
if
self
.
is_draft
and
self
.
owner_role
==
PublisherUserRole
.
CourseTeam
:
return
_
(
'N/A'
)
return
self
.
NotAvailable
elif
self
.
owner_role
==
PublisherUserRole
.
MarketingReviewer
and
(
self
.
is_in_review
or
self
.
is_draft
):
return
_
(
'Awaiting Marketing Review'
)
return
self
.
AwaitingMarketingReview
elif
self
.
marketing_reviewed
:
return
_
(
'Approved by Marketing'
)
return
self
.
ApprovedByMarketing
class
CourseRunState
(
TimeStampedModel
,
ChangedByMixin
):
...
...
course_discovery/apps/publisher/tests/test_views.py
View file @
10a2fcd7
...
...
@@ -1633,6 +1633,7 @@ class PaginationMixin(object):
return
json
.
loads
(
response
.
context_data
[
'courses'
]
.
decode
(
'utf-8'
))
@ddt.ddt
class
CourseListViewTests
(
SiteMixin
,
PaginationMixin
,
TestCase
):
""" Tests for `CourseListView` """
...
...
@@ -1724,6 +1725,29 @@ class CourseListViewTests(SiteMixin, PaginationMixin, TestCase):
response
=
self
.
client
.
get
(
self
.
courses_url
)
self
.
assertContains
(
response
,
'Edit'
)
@ddt.data
(
{
'search_text'
:
'N/A'
,
'expected'
:
1
,
'owner_role'
:
PublisherUserRole
.
CourseTeam
},
{
'search_text'
:
'awaiting'
,
'expected'
:
11
,
'owner_role'
:
PublisherUserRole
.
MarketingReviewer
},
{
'search_text'
:
'approved'
,
'expected'
:
1
,
'owner_role'
:
PublisherUserRole
.
CourseTeam
,
'marketing_reviewed'
:
True
},
)
@ddt.unpack
def
test_search_with_internal_user_status
(
self
,
search_text
,
expected
,
owner_role
,
marketing_reviewed
=
False
):
"""
Verify that search returns the correct data on course list page
"""
self
.
user
.
groups
.
add
(
Group
.
objects
.
get
(
name
=
ADMIN_GROUP_NAME
))
self
.
course_state
=
factories
.
CourseStateFactory
(
owner_role
=
owner_role
)
self
.
course_state
.
marketing_reviewed
=
marketing_reviewed
self
.
course_state
.
save
()
# Total number of courses without search
self
.
assert_course_list_page
(
course_count
=
11
)
response
=
self
.
client
.
get
(
self
.
courses_url
,
{
'searchText'
:
search_text
})
courses
=
json
.
loads
(
response
.
context_data
[
'courses'
]
.
decode
(
'utf-8'
))
self
.
assertEqual
(
len
(
courses
),
expected
)
@ddt.ddt
@mock.patch
(
'course_discovery.apps.publisher.views.COURSES_DEFAULT_PAGE_SIZE'
,
2
)
...
...
course_discovery/apps/publisher/views.py
View file @
10a2fcd7
...
...
@@ -897,10 +897,23 @@ class CourseListView(mixins.LoginRequiredMixin, ListView):
query_filters
=
[]
keywords_filter
=
None
internal_user_status_query
=
Q
()
for
keyword
in
keywords
:
keyword_lower
=
keyword
.
lower
()
if
keyword_lower
in
str
(
CourseState
.
ApprovedByMarketing
)
.
lower
():
internal_user_status_query
=
internal_user_status_query
|
Q
(
course_state__marketing_reviewed
=
True
)
if
keyword_lower
in
str
(
CourseState
.
AwaitingMarketingReview
)
.
lower
():
internal_user_status_query
=
internal_user_status_query
|
(
Q
(
course_state__owner_role
=
PublisherUserRole
.
MarketingReviewer
)
&
(
Q
(
course_state__name
=
CourseStateChoices
.
Review
)
|
Q
(
course_state__name
=
CourseStateChoices
.
Draft
)))
elif
keyword_lower
==
str
(
CourseState
.
NotAvailable
)
.
lower
():
internal_user_status_query
=
internal_user_status_query
|
(
Q
(
course_state__name
=
CourseStateChoices
.
Draft
)
&
Q
(
course_state__owner_role
=
PublisherUserRole
.
CourseTeam
))
keyword_filter
=
Q
(
title__icontains
=
keyword
)
|
Q
(
organizations__key__icontains
=
keyword
)
|
Q
(
number__icontains
=
keyword
)
number__icontains
=
keyword
)
|
internal_user_status_query
keywords_filter
=
(
keyword_filter
&
keywords_filter
)
if
bool
(
keywords_filter
)
else
keyword_filter
if
keywords_filter
:
...
...
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