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
39d441e1
Commit
39d441e1
authored
Sep 13, 2013
by
John Jarvis
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #765 from edx/jarv/grade-dump
Jarv/grade dump
parents
b1a76f12
6ba85765
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
19 additions
and
4 deletions
+19
-4
common/djangoapps/student/management/commands/get_grades.py
+19
-4
No files found.
common/djangoapps/student/management/commands/get_grades.py
View file @
39d441e1
from
courseware
import
grades
,
courses
from
certificates.models
import
GeneratedCertificate
from
django.test.client
import
RequestFactory
from
django.core.management.base
import
BaseCommand
,
CommandError
import
os
...
...
@@ -28,6 +29,13 @@ class Command(BaseCommand):
Generate a list of grades for all students
that are enrolled in a course.
CSV will include the following:
- username
- email
- grade in the certificate table if it exists
- computed grade
- grade breakdown
Outputs grades to a csv file.
Example:
...
...
@@ -57,8 +65,7 @@ class Command(BaseCommand):
course_id
=
options
[
'course'
]
print
"Fetching enrolled students for {0}"
.
format
(
course_id
)
enrolled_students
=
User
.
objects
.
filter
(
courseenrollment__course_id
=
course_id
)
.
prefetch_related
(
"groups"
)
.
order_by
(
'username'
)
courseenrollment__course_id
=
course_id
)
factory
=
RequestMock
()
request
=
factory
.
get
(
'/'
)
...
...
@@ -69,6 +76,11 @@ class Command(BaseCommand):
start
=
datetime
.
datetime
.
now
()
rows
=
[]
header
=
None
print
"Fetching certificate data"
cert_grades
=
{
cert
.
user
.
username
:
cert
.
grade
for
cert
in
list
(
GeneratedCertificate
.
objects
.
filter
(
course_id
=
course_id
)
.
prefetch_related
(
'user'
))}
print
"Grading students"
for
count
,
student
in
enumerate
(
enrolled_students
):
count
+=
1
if
count
%
STATUS_INTERVAL
==
0
:
...
...
@@ -86,10 +98,13 @@ class Command(BaseCommand):
grade
=
grades
.
grade
(
student
,
request
,
course
)
if
not
header
:
header
=
[
section
[
'label'
]
for
section
in
grade
[
u'section_breakdown'
]]
rows
.
append
([
"email"
,
"username"
]
+
header
)
rows
.
append
([
"email"
,
"username"
,
"certificate-grade"
,
"grade"
]
+
header
)
percents
=
{
section
[
'label'
]:
section
[
'percent'
]
for
section
in
grade
[
u'section_breakdown'
]}
row_percents
=
[
percents
[
label
]
for
label
in
header
]
rows
.
append
([
student
.
email
,
student
.
username
]
+
row_percents
)
if
student
.
username
in
cert_grades
:
rows
.
append
([
student
.
email
,
student
.
username
,
cert_grades
[
student
.
username
],
grade
[
'percent'
]]
+
row_percents
)
else
:
rows
.
append
([
student
.
email
,
student
.
username
,
"N/A"
,
grade
[
'percent'
]]
+
row_percents
)
with
open
(
options
[
'output'
],
'wb'
)
as
f
:
writer
=
csv
.
writer
(
f
)
writer
.
writerows
(
rows
)
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