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
87c4a49c
Commit
87c4a49c
authored
Aug 26, 2016
by
Tyler Hallada
Committed by
Dennis Jen
Aug 29, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Default gender counts to 0, removed unused imports, fixed linting errors
parent
3809ba5b
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
22 additions
and
7 deletions
+22
-7
analytics_data_api/v0/serializers.py
+9
-0
analytics_data_api/v0/views/courses.py
+7
-3
analytics_data_api/v0/views/learners.py
+2
-2
analytics_data_api/v0/views/problems.py
+1
-1
analytics_data_api/v0/views/utils.py
+1
-0
analytics_data_api/v0/views/videos.py
+2
-1
No files found.
analytics_data_api/v0/serializers.py
View file @
87c4a49c
...
...
@@ -47,6 +47,7 @@ class ModelSerializerWithCreatedField(serializers.ModelSerializer):
created
=
serializers
.
DateTimeField
(
format
=
settings
.
DATETIME_FORMAT
)
# pylint: disable=abstract-method
class
ProblemSerializer
(
serializers
.
Serializer
):
"""
Serializer for problems.
...
...
@@ -59,6 +60,7 @@ class ProblemSerializer(serializers.Serializer):
created
=
serializers
.
DateTimeField
(
format
=
settings
.
DATETIME_FORMAT
)
# pylint: disable=abstract-method
class
ProblemsAndTagsSerializer
(
serializers
.
Serializer
):
"""
Serializer for problems and tags.
...
...
@@ -231,6 +233,7 @@ class CourseEnrollmentModeDailySerializer(BaseCourseEnrollmentModelSerializer):
fields
=
[
'course_id'
,
'date'
,
'count'
,
'cumulative_count'
,
'created'
]
+
ENROLLMENT_MODES
# pylint: disable=abstract-method
class
CountrySerializer
(
serializers
.
Serializer
):
"""
Serialize country to an object with fields for the complete country name
...
...
@@ -329,10 +332,12 @@ class VideoTimelineSerializer(ModelSerializerWithCreatedField):
)
# pylint: disable=abstract-method
class
LastUpdatedSerializer
(
serializers
.
Serializer
):
last_updated
=
serializers
.
DateTimeField
(
source
=
'date'
,
format
=
settings
.
DATE_FORMAT
)
# pylint: disable=abstract-method
class
LearnerSerializer
(
serializers
.
Serializer
):
username
=
serializers
.
CharField
()
enrollment_mode
=
serializers
.
CharField
()
...
...
@@ -407,6 +412,7 @@ class EdxPaginationSerializer(pagination.PageNumberPagination):
]))
# pylint: disable=abstract-method
class
EngagementDaySerializer
(
serializers
.
Serializer
):
date
=
serializers
.
DateField
(
format
=
settings
.
DATE_FORMAT
)
problems_attempted
=
serializers
.
SerializerMethodField
()
...
...
@@ -427,11 +433,13 @@ class EngagementDaySerializer(serializers.Serializer):
return
obj
.
get
(
'videos_viewed'
,
0
)
# pylint: disable=abstract-method
class
DateRangeSerializer
(
serializers
.
Serializer
):
start
=
serializers
.
DateTimeField
(
source
=
'start_date'
,
format
=
settings
.
DATE_FORMAT
)
end
=
serializers
.
DateTimeField
(
source
=
'end_date'
,
format
=
settings
.
DATE_FORMAT
)
# pylint: disable=abstract-method
class
EnagementRangeMetricSerializer
(
serializers
.
Serializer
):
"""
Serializes ModuleEngagementMetricRanges ('bottom', 'average', and 'top') into
...
...
@@ -456,6 +464,7 @@ class EnagementRangeMetricSerializer(serializers.Serializer):
return
[
metric_range
.
low_value
,
metric_range
.
high_value
]
if
metric_range
else
None
# pylint: disable=abstract-method
class
CourseLearnerMetadataSerializer
(
serializers
.
Serializer
):
enrollment_modes
=
serializers
.
ReadOnlyField
(
source
=
'es_data.enrollment_modes'
)
segments
=
serializers
.
ReadOnlyField
(
source
=
'es_data.segments'
)
...
...
analytics_data_api/v0/views/courses.py
View file @
87c4a49c
...
...
@@ -15,7 +15,7 @@ from analytics_data_api.constants import enrollment_modes
from
analytics_data_api.utils
import
dictfetchall
from
analytics_data_api.v0
import
models
,
serializers
from
utils
import
raise_404_if_none
from
analytics_data_api.v0.views.
utils
import
raise_404_if_none
class
BaseCourseView
(
generics
.
ListAPIView
):
...
...
@@ -242,7 +242,7 @@ class CourseActivityMostRecentWeekView(generics.RetrieveAPIView):
return
activity_type
def
get_object
(
self
,
queryset
=
None
):
def
get_object
(
self
):
"""Select the activity report for the given course and activity type."""
warnings
.
warn
(
'CourseActivityMostRecentWeekView has been deprecated! Use CourseActivityWeeklyView instead.'
,
...
...
@@ -403,7 +403,11 @@ class CourseEnrollmentByGenderView(BaseCourseEnrollmentView):
item
=
{
u'course_id'
:
key
[
0
],
u'date'
:
key
[
1
],
u'created'
:
None
u'created'
:
None
,
u'male'
:
0
,
u'female'
:
0
,
u'other'
:
0
,
u'unknown'
:
0
}
for
enrollment
in
group
:
...
...
analytics_data_api/v0/views/learners.py
View file @
87c4a49c
...
...
@@ -103,7 +103,7 @@ class LearnerView(LastUpdateMixin, CourseViewMixin, generics.RetrieveAPIView):
def
get_queryset
(
self
):
return
RosterEntry
.
get_course_user
(
self
.
course_id
,
self
.
username
)
def
get_object
(
self
,
queryset
=
None
):
def
get_object
(
self
):
queryset
=
self
.
get_queryset
()
if
len
(
queryset
)
==
1
:
return
queryset
[
0
]
...
...
@@ -362,7 +362,7 @@ class CourseLearnerMetadata(CourseViewMixin, generics.RetrieveAPIView):
"""
serializer_class
=
CourseLearnerMetadataSerializer
def
get_object
(
self
,
queryset
=
None
):
def
get_object
(
self
):
# Because we're serializing data from both Elasticsearch and MySQL into
# the same JSON object, we have to pass both sources of data in a dict
# to our custom course metadata serializer.
...
...
analytics_data_api/v0/views/problems.py
View file @
87c4a49c
...
...
@@ -22,7 +22,7 @@ from analytics_data_api.v0.serializers import (
)
from
analytics_data_api.utils
import
matching_tuple
from
utils
import
raise_404_if_none
from
analytics_data_api.v0.views.
utils
import
raise_404_if_none
class
ProblemResponseAnswerDistributionView
(
generics
.
ListAPIView
):
...
...
analytics_data_api/v0/views/utils.py
View file @
87c4a49c
...
...
@@ -12,6 +12,7 @@ def split_query_argument(argument):
else
:
return
None
def
raise_404_if_none
(
func
):
"""
Decorator for raiseing Http404 if function evaulation is falsey (e.g. empty queryset).
...
...
analytics_data_api/v0/views/videos.py
View file @
87c4a49c
...
...
@@ -7,7 +7,8 @@ from rest_framework import generics
from
analytics_data_api.v0.models
import
VideoTimeline
from
analytics_data_api.v0.serializers
import
VideoTimelineSerializer
from
utils
import
raise_404_if_none
from
analytics_data_api.v0.views.utils
import
raise_404_if_none
class
VideoTimelineView
(
generics
.
ListAPIView
):
"""
...
...
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