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
b2740155
Commit
b2740155
authored
Nov 04, 2014
by
Dennis Jen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Feature flagged enrollment counts on instructor dashboard.
* enrollments counts removed from legacy dashboard
parent
688d4c96
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
45 additions
and
37 deletions
+45
-37
lms/djangoapps/instructor/views/instructor_dashboard.py
+28
-13
lms/djangoapps/instructor/views/legacy.py
+3
-4
lms/envs/common.py
+4
-1
lms/templates/courseware/instructor_dashboard.html
+0
-16
lms/templates/instructor/instructor_dashboard_2/course_info.html
+10
-3
No files found.
lms/djangoapps/instructor/views/instructor_dashboard.py
View file @
b2740155
...
@@ -91,11 +91,7 @@ def instructor_dashboard_2(request, course_id):
...
@@ -91,11 +91,7 @@ def instructor_dashboard_2(request, course_id):
if
course_mode_has_price
:
if
course_mode_has_price
:
sections
.
append
(
_section_e_commerce
(
course
,
access
))
sections
.
append
(
_section_e_commerce
(
course
,
access
))
enrollment_count
=
sections
[
0
][
'enrollment_count'
][
'total'
]
disable_buttons
=
not
_is_small_course
(
course_key
)
disable_buttons
=
False
max_enrollment_for_buttons
=
settings
.
FEATURES
.
get
(
"MAX_ENROLLMENT_INSTR_BUTTONS"
)
if
max_enrollment_for_buttons
is
not
None
:
disable_buttons
=
enrollment_count
>
max_enrollment_for_buttons
analytics_dashboard_message
=
None
analytics_dashboard_message
=
None
if
settings
.
ANALYTICS_DASHBOARD_URL
:
if
settings
.
ANALYTICS_DASHBOARD_URL
:
...
@@ -217,12 +213,19 @@ def _section_course_info(course, access):
...
@@ -217,12 +213,19 @@ def _section_course_info(course, access):
'access'
:
access
,
'access'
:
access
,
'course_id'
:
course_key
,
'course_id'
:
course_key
,
'course_display_name'
:
course
.
display_name
,
'course_display_name'
:
course
.
display_name
,
'enrollment_count'
:
CourseEnrollment
.
enrollment_counts
(
course_key
),
'has_started'
:
course
.
has_started
(),
'has_started'
:
course
.
has_started
(),
'has_ended'
:
course
.
has_ended
(),
'has_ended'
:
course
.
has_ended
(),
'list_instructor_tasks_url'
:
reverse
(
'list_instructor_tasks'
,
kwargs
=
{
'course_id'
:
course_key
.
to_deprecated_string
()}),
'list_instructor_tasks_url'
:
reverse
(
'list_instructor_tasks'
,
kwargs
=
{
'course_id'
:
course_key
.
to_deprecated_string
()}),
}
}
if
settings
.
FEATURES
.
get
(
'DISPLAY_ANALYTICS_ENROLLMENTS'
):
section_data
[
'enrollment_count'
]
=
CourseEnrollment
.
enrollment_counts
(
course_key
)
if
settings
.
ANALYTICS_DASHBOARD_URL
:
dashboard_link
=
_get_dashboard_link
(
course_key
)
message
=
_
(
"Enrollment data is now available in {dashboard_link}."
)
.
format
(
dashboard_link
=
dashboard_link
)
section_data
[
'enrollment_message'
]
=
message
try
:
try
:
advance
=
lambda
memo
,
(
letter
,
score
):
"{}: {}, "
.
format
(
letter
,
score
)
+
memo
advance
=
lambda
memo
,
(
letter
,
score
):
"{}: {}, "
.
format
(
letter
,
score
)
+
memo
section_data
[
'grade_cutoffs'
]
=
reduce
(
advance
,
course
.
grade_cutoffs
.
items
(),
""
)[:
-
2
]
section_data
[
'grade_cutoffs'
]
=
reduce
(
advance
,
course
.
grade_cutoffs
.
items
(),
""
)[:
-
2
]
...
@@ -259,14 +262,19 @@ def _section_membership(course, access):
...
@@ -259,14 +262,19 @@ def _section_membership(course, access):
return
section_data
return
section_data
def
_section_student_admin
(
course
,
access
):
def
_is_small_course
(
course_key
):
""" Provide data for the corresponding dashboard section """
course_key
=
course
.
id
is_small_course
=
False
is_small_course
=
False
enrollment_count
=
CourseEnrollment
.
num_enrolled_in
(
course_key
)
enrollment_count
=
CourseEnrollment
.
num_enrolled_in
(
course_key
)
max_enrollment_for_buttons
=
settings
.
FEATURES
.
get
(
"MAX_ENROLLMENT_INSTR_BUTTONS"
)
max_enrollment_for_buttons
=
settings
.
FEATURES
.
get
(
"MAX_ENROLLMENT_INSTR_BUTTONS"
)
if
max_enrollment_for_buttons
is
not
None
:
if
max_enrollment_for_buttons
is
not
None
:
is_small_course
=
enrollment_count
<=
max_enrollment_for_buttons
is_small_course
=
enrollment_count
<=
max_enrollment_for_buttons
return
is_small_course
def
_section_student_admin
(
course
,
access
):
""" Provide data for the corresponding dashboard section """
course_key
=
course
.
id
is_small_course
=
_is_small_course
(
course_key
)
section_data
=
{
section_data
=
{
'section_key'
:
'student_admin'
,
'section_key'
:
'student_admin'
,
...
@@ -354,6 +362,16 @@ def _section_send_email(course, access):
...
@@ -354,6 +362,16 @@ def _section_send_email(course, access):
return
section_data
return
section_data
def
_get_dashboard_link
(
course_key
):
# Construct a URL to the external analytics dashboard
link
=
None
if
settings
.
ANALYTICS_DASHBOARD_URL
:
analytics_dashboard_url
=
'{0}/courses/{1}'
.
format
(
settings
.
ANALYTICS_DASHBOARD_URL
,
unicode
(
course_key
))
link
=
"<a href=
\"
{0}
\"
target=
\"
_blank
\"
>{1}</a>"
.
format
(
analytics_dashboard_url
,
settings
.
ANALYTICS_DASHBOARD_NAME
)
return
link
def
_section_analytics
(
course
,
access
):
def
_section_analytics
(
course
,
access
):
""" Provide data for the corresponding dashboard section """
""" Provide data for the corresponding dashboard section """
course_key
=
course
.
id
course_key
=
course
.
id
...
@@ -366,10 +384,7 @@ def _section_analytics(course, access):
...
@@ -366,10 +384,7 @@ def _section_analytics(course, access):
}
}
if
settings
.
ANALYTICS_DASHBOARD_URL
:
if
settings
.
ANALYTICS_DASHBOARD_URL
:
# Construct a URL to the external analytics dashboard
dashboard_link
=
_get_dashboard_link
(
course_key
)
analytics_dashboard_url
=
'{0}/courses/{1}'
.
format
(
settings
.
ANALYTICS_DASHBOARD_URL
,
unicode
(
course_key
))
dashboard_link
=
"<a href=
\"
{0}
\"
target=
\"
_blank
\"
>{1}</a>"
.
format
(
analytics_dashboard_url
,
settings
.
ANALYTICS_DASHBOARD_NAME
)
message
=
_
(
"Demographic data is now available in {dashboard_link}."
)
.
format
(
dashboard_link
=
dashboard_link
)
message
=
_
(
"Demographic data is now available in {dashboard_link}."
)
.
format
(
dashboard_link
=
dashboard_link
)
section_data
[
'demographic_message'
]
=
message
section_data
[
'demographic_message'
]
=
message
...
...
lms/djangoapps/instructor/views/legacy.py
View file @
b2740155
...
@@ -134,8 +134,8 @@ def instructor_dashboard(request, course_id):
...
@@ -134,8 +134,8 @@ def instructor_dashboard(request, course_id):
'header'
:
[
'Statistic'
,
'Value'
],
'header'
:
[
'Statistic'
,
'Value'
],
'title'
:
_
(
'Course Statistics At A Glance'
),
'title'
:
_
(
'Course Statistics At A Glance'
),
}
}
data
=
[[
'# Enrolled'
,
enrollment_number
]]
data
+
=
[[
'Date'
,
timezone
.
now
()
.
isoformat
()]]
data
=
[[
'Date'
,
timezone
.
now
()
.
isoformat
()]]
data
+=
compute_course_stats
(
course
)
.
items
()
data
+=
compute_course_stats
(
course
)
.
items
()
if
request
.
user
.
is_staff
:
if
request
.
user
.
is_staff
:
for
field
in
course
.
fields
.
values
():
for
field
in
course
.
fields
.
values
():
...
@@ -938,11 +938,10 @@ def instructor_dashboard(request, course_id):
...
@@ -938,11 +938,10 @@ def instructor_dashboard(request, course_id):
"StudentsDailyActivity"
,
# active students by day
"StudentsDailyActivity"
,
# active students by day
"StudentsDropoffPerDay"
,
# active students dropoff by day
"StudentsDropoffPerDay"
,
# active students dropoff by day
# "OverallGradeDistribution", # overall point distribution for course
# "OverallGradeDistribution", # overall point distribution for course
"StudentsActive"
,
# num students active in time period (default = 1wk)
"StudentsEnrolled"
,
# num students enrolled
# "StudentsPerProblemCorrect", # foreach problem, num students correct
# "StudentsPerProblemCorrect", # foreach problem, num students correct
"ProblemGradeDistribution"
,
# foreach problem, grade distribution
"ProblemGradeDistribution"
,
# foreach problem, grade distribution
]
]
for
analytic_name
in
DASHBOARD_ANALYTICS
:
for
analytic_name
in
DASHBOARD_ANALYTICS
:
analytics_results
[
analytic_name
]
=
get_analytics_result
(
analytic_name
)
analytics_results
[
analytic_name
]
=
get_analytics_result
(
analytic_name
)
...
...
lms/envs/common.py
View file @
b2740155
...
@@ -286,7 +286,10 @@ FEATURES = {
...
@@ -286,7 +286,10 @@ FEATURES = {
'ALLOW_AUTOMATED_SIGNUPS'
:
False
,
'ALLOW_AUTOMATED_SIGNUPS'
:
False
,
# Display demographic data on the analytics tab in the instructor dashboard.
# Display demographic data on the analytics tab in the instructor dashboard.
'DISPLAY_ANALYTICS_DEMOGRAPHICS'
:
True
'DISPLAY_ANALYTICS_DEMOGRAPHICS'
:
True
,
# Enable display of enrollment counts in instructor and legacy analytics dashboard
'DISPLAY_ANALYTICS_ENROLLMENTS'
:
True
,
}
}
# Ignore static asset files on import which match this pattern
# Ignore static asset files on import which match this pattern
...
...
lms/templates/courseware/instructor_dashboard.html
View file @
b2740155
...
@@ -609,22 +609,6 @@ function goto( mode)
...
@@ -609,22 +609,6 @@ function goto( mode)
<p>
${_("No Analytics are available at this time.")}
</p>
<p>
${_("No Analytics are available at this time.")}
</p>
%endif
%endif
%if analytics_results.get("StudentsEnrolled"):
<p>
${_("Students enrolled (historical count, includes those who have since unenrolled):")}
${analytics_results["StudentsEnrolled"]['data'][0]['students']}
(${analytics_results["StudentsEnrolled"]['time']})
</p>
%endif
%if analytics_results.get("StudentsActive"):
<p>
${_("Students active in the last week:")}
${analytics_results["StudentsActive"]['data'][0]['active']}
(${analytics_results["StudentsActive"]['time']})
</p>
%endif
%if analytics_results.get("StudentsDropoffPerDay"):
%if analytics_results.get("StudentsDropoffPerDay"):
<p>
<p>
${_("Student activity day by day")}
${_("Student activity day by day")}
...
...
lms/templates/instructor/instructor_dashboard_2/course_info.html
View file @
b2740155
<
%!
from
django
.
utils
.
translation
import
ugettext
as
_
%
>
<
%!
from
django
.
utils
.
translation
import
ugettext
as
_
%
>
<
%
page
args=
"section_data"
/>
<
%
page
args=
"section_data"
/>
<div
class=
"enrollment-wrapper"
>
%if settings.FEATURES.get('DISPLAY_ANALYTICS_ENROLLMENTS') or section_data.get('enrollment_message'):
<div
class=
"enrollment-wrapper"
>
<h2>
${_("Enrollment Information")}
</h2>
<h2>
${_("Enrollment Information")}
</h2>
%if settings.FEATURES.get('DISPLAY_ANALYTICS_ENROLLMENTS'):
## Translators: 'track' refers to the enrollment type ('honor', 'verified', or 'audit')
## Translators: 'track' refers to the enrollment type ('honor', 'verified', or 'audit')
<span
class=
"tip"
>
${_("Number of enrollees (instructors, staff members, and students) by track")}
</span>
<span
class=
"tip"
>
${_("Number of enrollees (instructors, staff members, and students) by track")}
</span>
<br/><br/>
<br/><br/>
...
@@ -21,8 +24,12 @@
...
@@ -21,8 +24,12 @@
<td
style=
"padding-top:10px;"
><b>
${_("Total")}
</b></td><td
style=
"padding-top:10px;"
><b>
${modes['total']}
</b></td>
<td
style=
"padding-top:10px;"
><b>
${_("Total")}
</b></td><td
style=
"padding-top:10px;"
><b>
${modes['total']}
</b></td>
</tr>
</tr>
</table>
</table>
</div>
%elif section_data.get('enrollment_message'):
<hr>
<p>
${section_data['enrollment_message']}
</p>
%endif
</div>
<hr>
%endif
<div
class=
"basic-wrapper"
>
<div
class=
"basic-wrapper"
>
<h2>
${_("Basic Course Information")}
</h2>
<h2>
${_("Basic Course Information")}
</h2>
...
...
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