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
115ccf87
Commit
115ccf87
authored
Oct 08, 2013
by
Diana Huang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add in new hooks for the dashboard into the upgrade path.
parent
e13dd094
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
39 additions
and
17 deletions
+39
-17
common/djangoapps/course_modes/models.py
+10
-4
common/djangoapps/course_modes/tests/test_models.py
+10
-9
common/djangoapps/student/views.py
+2
-0
lms/templates/dashboard.html
+2
-1
lms/templates/dashboard/dashboard_course_listing.html
+15
-3
No files found.
common/djangoapps/course_modes/models.py
View file @
115ccf87
...
...
@@ -9,7 +9,7 @@ from collections import namedtuple
from
django.utils.translation
import
ugettext
as
_
from
django.db.models
import
Q
Mode
=
namedtuple
(
'Mode'
,
[
'slug'
,
'name'
,
'min_price'
,
'suggested_prices'
,
'currency'
])
Mode
=
namedtuple
(
'Mode'
,
[
'slug'
,
'name'
,
'min_price'
,
'suggested_prices'
,
'currency'
,
'expiration_date'
])
class
CourseMode
(
models
.
Model
):
...
...
@@ -39,7 +39,7 @@ class CourseMode(models.Model):
# turn this mode off after the given expiration date
expiration_date
=
models
.
DateField
(
default
=
None
,
null
=
True
,
blank
=
True
)
DEFAULT_MODE
=
Mode
(
'honor'
,
_
(
'Honor Code Certificate'
),
0
,
''
,
'usd'
)
DEFAULT_MODE
=
Mode
(
'honor'
,
_
(
'Honor Code Certificate'
),
0
,
''
,
'usd'
,
None
)
DEFAULT_MODE_SLUG
=
'honor'
class
Meta
:
...
...
@@ -57,8 +57,14 @@ class CourseMode(models.Model):
found_course_modes
=
cls
.
objects
.
filter
(
Q
(
course_id
=
course_id
)
&
(
Q
(
expiration_date__isnull
=
True
)
|
Q
(
expiration_date__gte
=
now
)))
modes
=
([
Mode
(
mode
.
mode_slug
,
mode
.
mode_display_name
,
mode
.
min_price
,
mode
.
suggested_prices
,
mode
.
currency
)
for
mode
in
found_course_modes
])
modes
=
([
Mode
(
mode
.
mode_slug
,
mode
.
mode_display_name
,
mode
.
min_price
,
mode
.
suggested_prices
,
mode
.
currency
,
mode
.
expiration_date
)
for
mode
in
found_course_modes
])
if
not
modes
:
modes
=
[
cls
.
DEFAULT_MODE
]
return
modes
...
...
common/djangoapps/course_modes/tests/test_models.py
View file @
115ccf87
...
...
@@ -49,7 +49,7 @@ class CourseModeModelTest(TestCase):
self
.
create_mode
(
'verified'
,
'Verified Certificate'
)
modes
=
CourseMode
.
modes_for_course
(
self
.
course_id
)
mode
=
Mode
(
u'verified'
,
u'Verified Certificate'
,
0
,
''
,
'usd'
)
mode
=
Mode
(
u'verified'
,
u'Verified Certificate'
,
0
,
''
,
'usd'
,
None
)
self
.
assertEqual
([
mode
],
modes
)
modes_dict
=
CourseMode
.
modes_for_course_dict
(
self
.
course_id
)
...
...
@@ -61,8 +61,8 @@ class CourseModeModelTest(TestCase):
"""
Finding the modes when there's multiple modes
"""
mode1
=
Mode
(
u'honor'
,
u'Honor Code Certificate'
,
0
,
''
,
'usd'
)
mode2
=
Mode
(
u'verified'
,
u'Verified Certificate'
,
0
,
''
,
'usd'
)
mode1
=
Mode
(
u'honor'
,
u'Honor Code Certificate'
,
0
,
''
,
'usd'
,
None
)
mode2
=
Mode
(
u'verified'
,
u'Verified Certificate'
,
0
,
''
,
'usd'
,
None
)
set_modes
=
[
mode1
,
mode2
]
for
mode
in
set_modes
:
self
.
create_mode
(
mode
.
slug
,
mode
.
name
,
mode
.
min_price
,
mode
.
suggested_prices
)
...
...
@@ -81,9 +81,9 @@ class CourseModeModelTest(TestCase):
self
.
assertEqual
(
0
,
CourseMode
.
min_course_price_for_currency
(
self
.
course_id
,
'usd'
))
# create some modes
mode1
=
Mode
(
u'honor'
,
u'Honor Code Certificate'
,
10
,
''
,
'usd'
)
mode2
=
Mode
(
u'verified'
,
u'Verified Certificate'
,
20
,
''
,
'usd'
)
mode3
=
Mode
(
u'honor'
,
u'Honor Code Certificate'
,
80
,
''
,
'cny'
)
mode1
=
Mode
(
u'honor'
,
u'Honor Code Certificate'
,
10
,
''
,
'usd'
,
None
)
mode2
=
Mode
(
u'verified'
,
u'Verified Certificate'
,
20
,
''
,
'usd'
,
None
)
mode3
=
Mode
(
u'honor'
,
u'Honor Code Certificate'
,
80
,
''
,
'cny'
,
None
)
set_modes
=
[
mode1
,
mode2
,
mode3
]
for
mode
in
set_modes
:
self
.
create_mode
(
mode
.
slug
,
mode
.
name
,
mode
.
min_price
,
mode
.
suggested_prices
,
mode
.
currency
)
...
...
@@ -98,14 +98,15 @@ class CourseModeModelTest(TestCase):
modes
=
CourseMode
.
modes_for_course
(
self
.
course_id
)
self
.
assertEqual
([
CourseMode
.
DEFAULT_MODE
],
modes
)
mode1
=
Mode
(
u'honor'
,
u'Honor Code Certificate'
,
0
,
''
,
'usd'
)
mode1
=
Mode
(
u'honor'
,
u'Honor Code Certificate'
,
0
,
''
,
'usd'
,
None
)
self
.
create_mode
(
mode1
.
slug
,
mode1
.
name
,
mode1
.
min_price
,
mode1
.
suggested_prices
)
modes
=
CourseMode
.
modes_for_course
(
self
.
course_id
)
self
.
assertEqual
([
mode1
],
modes
)
expired_mode
.
expiration_date
=
datetime
.
now
(
pytz
.
UTC
)
+
timedelta
(
days
=
1
)
expiration_date
=
datetime
.
now
(
pytz
.
UTC
)
+
timedelta
(
days
=
1
)
expired_mode
.
expiration_date
=
expiration_date
expired_mode
.
save
()
expired_mode_value
=
Mode
(
u'verified'
,
u'Verified Certificate'
,
0
,
''
,
'usd'
)
expired_mode_value
=
Mode
(
u'verified'
,
u'Verified Certificate'
,
0
,
''
,
'usd'
,
expiration_date
.
date
()
)
modes
=
CourseMode
.
modes_for_course
(
self
.
course_id
)
self
.
assertEqual
([
expired_mode_value
,
mode1
],
modes
)
...
...
common/djangoapps/student/views.py
View file @
115ccf87
...
...
@@ -300,6 +300,7 @@ def dashboard(request):
show_courseware_links_for
=
frozenset
(
course
.
id
for
course
,
_enrollment
in
courses
if
has_access
(
request
.
user
,
course
,
'load'
))
course_modes
=
{
course
.
id
:
CourseMode
.
modes_for_course_dict
(
course
.
id
)
for
course
,
_enrollment
in
courses
}
cert_statuses
=
{
course
.
id
:
cert_info
(
request
.
user
,
course
)
for
course
,
_enrollment
in
courses
}
# only show email settings for Mongo course and when bulk email is turned on
...
...
@@ -324,6 +325,7 @@ def dashboard(request):
'staff_access'
:
staff_access
,
'errored_courses'
:
errored_courses
,
'show_courseware_links_for'
:
show_courseware_links_for
,
'all_course_modes'
:
course_modes
,
'cert_statuses'
:
cert_statuses
,
'show_email_settings_for'
:
show_email_settings_for
,
}
...
...
lms/templates/dashboard.html
View file @
115ccf87
...
...
@@ -179,7 +179,8 @@
<
%
show_courseware_link =
(course.id
in
show_courseware_links_for
)
%
>
<
%
cert_status =
cert_statuses.get(course.id)
%
>
<
%
show_email_settings =
(course.id
in
show_email_settings_for
)
%
>
<
%
include
file=
'dashboard/dashboard_course_listing.html'
args=
"course=course, enrollment=enrollment, show_courseware_link=show_courseware_link, cert_status=cert_status, show_email_settings=show_email_settings"
/>
<
%
course_modes =
all_course_modes.get(course.id)
%
>
<
%
include
file=
'dashboard/dashboard_course_listing.html'
args=
"course=course, enrollment=enrollment, show_courseware_link=show_courseware_link, cert_status=cert_status, show_email_settings=show_email_settings, course_modes=course_modes"
/>
% endfor
</ul>
...
...
lms/templates/dashboard/dashboard_course_listing.html
View file @
115ccf87
<
%
page
args=
"course, enrollment, show_courseware_link, cert_status, show_email_settings"
/>
<
%
page
args=
"course, enrollment, show_courseware_link, cert_status, show_email_settings
, course_modes
"
/>
<
%!
from
django
.
utils
.
translation
import
ugettext
as
_
%
>
<
%!
from
django
.
core
.
urlresolvers
import
reverse
from
datetime
import
date
from
courseware
.
courses
import
course_image_url
,
get_course_about_section
import
waffle
%
>
...
...
@@ -116,8 +117,6 @@
% endif
% endif
<a
href=
"#unenroll-modal"
class=
"unenroll"
rel=
"leanModal"
data-course-id=
"${course.id}"
data-course-number=
"${course.number}"
>
${_('Unregister')}
</a>
% if show_email_settings:
...
...
@@ -125,5 +124,18 @@
% endif
</section>
%if enrollment.mode != 'verified' and 'verified' in course_modes:
<div>
<a
href=
"${reverse('course_modes_choose', kwargs={'course_id': course.id})}?upgrade=True"
>
${_("Get a verified certificate for this course!")}
</a>
%if course_modes['verified'].expiration_date:
<
%
days_left =
(course_modes['verified'].expiration_date
-
date
.
today
()).
days
%
>
<p>
${_('Only {days} days left!').format(days=days_left)}
</p>
%endif
</div>
%endif
</article>
</li>
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