Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-analytics-data-api
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-analytics-data-api
Commits
7ac299e2
Commit
7ac299e2
authored
Mar 12, 2015
by
Dennis Jen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added cumulative_count field to enrollment/mode endpoint.
parent
99f9c79f
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
17 additions
and
3 deletions
+17
-3
analytics_data_api/management/commands/generate_fake_course_data.py
+3
-1
analytics_data_api/v0/models.py
+1
-0
analytics_data_api/v0/serializers.py
+3
-1
analytics_data_api/v0/tests/views/test_courses.py
+6
-1
analytics_data_api/v0/views/courses.py
+4
-0
No files found.
analytics_data_api/management/commands/generate_fake_course_data.py
View file @
7ac299e2
...
...
@@ -91,6 +91,7 @@ class Command(BaseCommand):
# Create new data
daily_total
=
1500
date
=
start_date
cumulative_count
=
0
while
date
<=
end_date
:
daily_total
=
get_count
(
daily_total
)
...
...
@@ -98,8 +99,9 @@ class Command(BaseCommand):
for
mode
,
ratio
in
enrollment_mode_ratios
.
iteritems
():
count
=
int
(
ratio
*
daily_total
)
cumulative_count
=
max
(
cumulative_count
+
10
,
count
)
models
.
CourseEnrollmentModeDaily
.
objects
.
create
(
course_id
=
course_id
,
date
=
date
,
count
=
count
,
mode
=
mode
)
cumulative_count
=
cumulative_count
,
mode
=
mode
)
for
gender
,
ratio
in
gender_ratios
.
iteritems
():
count
=
int
(
ratio
*
daily_total
)
...
...
analytics_data_api/v0/models.py
View file @
7ac299e2
...
...
@@ -46,6 +46,7 @@ class CourseEnrollmentDaily(BaseCourseEnrollment):
class
CourseEnrollmentModeDaily
(
BaseCourseEnrollment
):
mode
=
models
.
CharField
(
max_length
=
255
)
cumulative_count
=
models
.
IntegerField
(
null
=
False
)
class
Meta
(
BaseCourseEnrollment
.
Meta
):
db_table
=
'course_enrollment_mode_daily'
...
...
analytics_data_api/v0/serializers.py
View file @
7ac299e2
...
...
@@ -198,6 +198,8 @@ class CourseEnrollmentModeDailySerializer(BaseCourseEnrollmentModelSerializer):
# Create a transform method for each field
setattr
(
self
,
'transform_
%
s'
%
mode
,
self
.
_transform_mode
)
fields
[
'cumulative_count'
]
=
serializers
.
IntegerField
(
required
=
True
,
default
=
0
)
return
fields
def
_transform_mode
(
self
,
_obj
,
value
):
...
...
@@ -207,7 +209,7 @@ class CourseEnrollmentModeDailySerializer(BaseCourseEnrollmentModelSerializer):
model
=
models
.
CourseEnrollmentDaily
# Declare the dynamically-created fields here as well so that they will be picked up by Swagger.
fields
=
[
'course_id'
,
'date'
,
'count'
,
'created'
]
+
ENROLLMENT_MODES
fields
=
[
'course_id'
,
'date'
,
'count'
,
'c
umulative_count'
,
'c
reated'
]
+
ENROLLMENT_MODES
class
CountrySerializer
(
serializers
.
Serializer
):
...
...
analytics_data_api/v0/tests/views/test_courses.py
View file @
7ac299e2
...
...
@@ -426,9 +426,11 @@ class CourseEnrollmentModeViewTests(CourseEnrollmentViewTestCaseMixin, DefaultFi
arg
=
args
[
0
]
response
=
self
.
serialize_enrollment
(
arg
)
total
=
0
cumulative
=
0
for
ce
in
args
:
total
+=
ce
.
count
cumulative
+=
ce
.
cumulative_count
response
[
ce
.
mode
]
=
ce
.
count
# Merge the honor and audit modes
...
...
@@ -439,6 +441,7 @@ class CourseEnrollmentModeViewTests(CourseEnrollmentViewTestCaseMixin, DefaultFi
del
response
[
enrollment_modes
.
PROFESSIONAL_NO_ID
]
response
[
u'count'
]
=
total
response
[
u'cumulative_count'
]
=
cumulative
return
[
response
]
...
...
@@ -446,7 +449,8 @@ class CourseEnrollmentModeViewTests(CourseEnrollmentViewTestCaseMixin, DefaultFi
self
.
destroy_data
()
# Create a single entry for a single enrollment mode
enrollment
=
G
(
self
.
model
,
course_id
=
self
.
course_id
,
date
=
self
.
date
,
mode
=
enrollment_modes
.
AUDIT
,
count
=
1
)
enrollment
=
G
(
self
.
model
,
course_id
=
self
.
course_id
,
date
=
self
.
date
,
mode
=
enrollment_modes
.
AUDIT
,
count
=
1
,
cumulative_count
=
100
)
# Create the expected data
modes
=
list
(
enrollment_modes
.
ALL
)
...
...
@@ -459,6 +463,7 @@ class CourseEnrollmentModeViewTests(CourseEnrollmentViewTestCaseMixin, DefaultFi
expected
.
update
(
self
.
serialize_enrollment
(
enrollment
))
expected
[
u'count'
]
=
1
expected
[
u'cumulative_count'
]
=
100
expected
=
[
expected
]
self
.
assertViewReturnsExpectedData
(
expected
)
...
...
analytics_data_api/v0/views/courses.py
View file @
7ac299e2
...
...
@@ -466,6 +466,7 @@ class CourseEnrollmentModeView(BaseCourseEnrollmentView):
* course_id: The ID of the course for which data is returned.
* date: The date for which the enrollment count was computed.
* count: The total count of enrolled users.
* cumulative_count: The cumulative count of users ever enrolled.
* created: The date the counts were computed.
* honor: The number of users enrolled in honor code mode.
* professional: The number of users enrolled in professional mode.
...
...
@@ -503,12 +504,14 @@ class CourseEnrollmentModeView(BaseCourseEnrollmentView):
}
total
=
0
cumulative_total
=
0
for
enrollment
in
group
:
mode
=
enrollment
.
mode
item
[
mode
]
=
enrollment
.
count
item
[
u'created'
]
=
max
(
enrollment
.
created
,
item
[
u'created'
])
if
item
[
u'created'
]
else
enrollment
.
created
total
+=
enrollment
.
count
cumulative_total
+=
enrollment
.
cumulative_count
# Merge audit and honor
item
[
enrollment_modes
.
HONOR
]
=
item
.
get
(
enrollment_modes
.
HONOR
,
0
)
+
item
.
pop
(
enrollment_modes
.
AUDIT
,
0
)
...
...
@@ -518,6 +521,7 @@ class CourseEnrollmentModeView(BaseCourseEnrollmentView):
item
.
get
(
enrollment_modes
.
PROFESSIONAL
,
0
)
+
item
.
pop
(
enrollment_modes
.
PROFESSIONAL_NO_ID
,
0
)
item
[
u'count'
]
=
total
item
[
u'cumulative_count'
]
=
cumulative_total
formatted_data
.
append
(
item
)
...
...
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