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
cd13fc88
Commit
cd13fc88
authored
Nov 17, 2014
by
Clinton Blackburn
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #40 from edx/mode-merge
Merging Audit and Honor Enrollment Modes
parents
9b23fed0
e5cb1b99
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
21 additions
and
5 deletions
+21
-5
analytics_data_api/v0/serializers.py
+5
-2
analytics_data_api/v0/tests/test_views.py
+12
-3
analytics_data_api/v0/views/courses.py
+4
-0
No files found.
analytics_data_api/v0/serializers.py
View file @
cd13fc88
...
@@ -3,6 +3,9 @@ from rest_framework import serializers
...
@@ -3,6 +3,9 @@ from rest_framework import serializers
from
analytics_data_api.constants
import
enrollment_modes
,
genders
from
analytics_data_api.constants
import
enrollment_modes
,
genders
from
analytics_data_api.v0
import
models
from
analytics_data_api.v0
import
models
# Below are the enrollment modes supported by this API. The audit and honor enrollment modes are merged into honor.
ENROLLMENT_MODES
=
[
enrollment_modes
.
HONOR
,
enrollment_modes
.
PROFESSIONAL
,
enrollment_modes
.
VERIFIED
]
class
CourseActivityByWeekSerializer
(
serializers
.
ModelSerializer
):
class
CourseActivityByWeekSerializer
(
serializers
.
ModelSerializer
):
"""
"""
...
@@ -110,7 +113,7 @@ class CourseEnrollmentModeDailySerializer(BaseCourseEnrollmentModelSerializer):
...
@@ -110,7 +113,7 @@ class CourseEnrollmentModeDailySerializer(BaseCourseEnrollmentModelSerializer):
fields
=
super
(
CourseEnrollmentModeDailySerializer
,
self
)
.
get_default_fields
()
fields
=
super
(
CourseEnrollmentModeDailySerializer
,
self
)
.
get_default_fields
()
# Create a field for each enrollment mode
# Create a field for each enrollment mode
for
mode
in
enrollment_modes
.
ALL
:
for
mode
in
ENROLLMENT_MODES
:
fields
[
mode
]
=
serializers
.
IntegerField
(
required
=
True
,
default
=
0
)
fields
[
mode
]
=
serializers
.
IntegerField
(
required
=
True
,
default
=
0
)
# Create a transform method for each field
# Create a transform method for each field
...
@@ -125,7 +128,7 @@ class CourseEnrollmentModeDailySerializer(BaseCourseEnrollmentModelSerializer):
...
@@ -125,7 +128,7 @@ class CourseEnrollmentModeDailySerializer(BaseCourseEnrollmentModelSerializer):
model
=
models
.
CourseEnrollmentDaily
model
=
models
.
CourseEnrollmentDaily
# Declare the dynamically-created fields here as well so that they will be picked up by Swagger.
# 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
.
ALL
fields
=
[
'course_id'
,
'date'
,
'count'
,
'created'
]
+
ENROLLMENT_MODES
class
CountrySerializer
(
serializers
.
Serializer
):
class
CountrySerializer
(
serializers
.
Serializer
):
...
...
analytics_data_api/v0/tests/test_views.py
View file @
cd13fc88
...
@@ -459,6 +459,10 @@ class CourseEnrollmentModeViewTests(CourseEnrollmentViewTestCaseMixin, DefaultFi
...
@@ -459,6 +459,10 @@ class CourseEnrollmentModeViewTests(CourseEnrollmentViewTestCaseMixin, DefaultFi
G
(
self
.
model
,
course_id
=
course_id
,
date
=
self
.
date
,
mode
=
mode
)
G
(
self
.
model
,
course_id
=
course_id
,
date
=
self
.
date
,
mode
=
mode
)
def
serialize_enrollment
(
self
,
enrollment
):
def
serialize_enrollment
(
self
,
enrollment
):
# Treat audit as honor
if
enrollment
.
mode
is
enrollment_modes
.
AUDIT
:
enrollment
.
mode
=
enrollment_modes
.
HONOR
return
{
return
{
u'course_id'
:
enrollment
.
course_id
,
u'course_id'
:
enrollment
.
course_id
,
u'date'
:
enrollment
.
date
.
strftime
(
settings
.
DATE_FORMAT
),
u'date'
:
enrollment
.
date
.
strftime
(
settings
.
DATE_FORMAT
),
...
@@ -475,6 +479,10 @@ class CourseEnrollmentModeViewTests(CourseEnrollmentViewTestCaseMixin, DefaultFi
...
@@ -475,6 +479,10 @@ class CourseEnrollmentModeViewTests(CourseEnrollmentViewTestCaseMixin, DefaultFi
total
+=
ce
.
count
total
+=
ce
.
count
response
[
ce
.
mode
]
=
ce
.
count
response
[
ce
.
mode
]
=
ce
.
count
# Merge the honor and audit modes
response
[
enrollment_modes
.
HONOR
]
+=
response
[
enrollment_modes
.
AUDIT
]
del
response
[
enrollment_modes
.
AUDIT
]
response
[
u'count'
]
=
total
response
[
u'count'
]
=
total
return
[
response
]
return
[
response
]
...
@@ -489,12 +497,13 @@ class CourseEnrollmentModeViewTests(CourseEnrollmentViewTestCaseMixin, DefaultFi
...
@@ -489,12 +497,13 @@ class CourseEnrollmentModeViewTests(CourseEnrollmentViewTestCaseMixin, DefaultFi
modes
=
list
(
enrollment_modes
.
ALL
)
modes
=
list
(
enrollment_modes
.
ALL
)
modes
.
remove
(
enrollment_modes
.
AUDIT
)
modes
.
remove
(
enrollment_modes
.
AUDIT
)
expected
=
self
.
serialize_enrollment
(
enrollment
)
expected
=
{}
expected
[
u'count'
]
=
1
for
mode
in
modes
:
for
mode
in
modes
:
expected
[
mode
]
=
0
expected
[
mode
]
=
0
expected
.
update
(
self
.
serialize_enrollment
(
enrollment
))
expected
[
u'count'
]
=
1
expected
=
[
expected
]
expected
=
[
expected
]
self
.
assertViewReturnsExpectedData
(
expected
)
self
.
assertViewReturnsExpectedData
(
expected
)
...
...
analytics_data_api/v0/views/courses.py
View file @
cd13fc88
...
@@ -9,6 +9,7 @@ from django.http import Http404
...
@@ -9,6 +9,7 @@ from django.http import Http404
from
django.utils.timezone
import
make_aware
,
utc
from
django.utils.timezone
import
make_aware
,
utc
from
rest_framework
import
generics
from
rest_framework
import
generics
from
opaque_keys.edx.keys
import
CourseKey
from
opaque_keys.edx.keys
import
CourseKey
from
analytics_data_api.constants
import
enrollment_modes
from
analytics_data_api.v0
import
models
,
serializers
from
analytics_data_api.v0
import
models
,
serializers
...
@@ -381,6 +382,9 @@ class CourseEnrollmentModeView(BaseCourseEnrollmentView):
...
@@ -381,6 +382,9 @@ class CourseEnrollmentModeView(BaseCourseEnrollmentView):
item
[
u'created'
]
=
max
(
enrollment
.
created
,
item
[
u'created'
])
if
item
[
u'created'
]
else
enrollment
.
created
item
[
u'created'
]
=
max
(
enrollment
.
created
,
item
[
u'created'
])
if
item
[
u'created'
]
else
enrollment
.
created
total
+=
enrollment
.
count
total
+=
enrollment
.
count
# Merge audit and honor
item
[
enrollment_modes
.
HONOR
]
=
item
.
get
(
enrollment_modes
.
HONOR
,
0
)
+
item
.
pop
(
enrollment_modes
.
AUDIT
,
0
)
item
[
u'count'
]
=
total
item
[
u'count'
]
=
total
formatted_data
.
append
(
item
)
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