Commit 87c4a49c by Tyler Hallada Committed by Dennis Jen

Default gender counts to 0, removed unused imports, fixed linting errors

parent 3809ba5b
...@@ -47,6 +47,7 @@ class ModelSerializerWithCreatedField(serializers.ModelSerializer): ...@@ -47,6 +47,7 @@ class ModelSerializerWithCreatedField(serializers.ModelSerializer):
created = serializers.DateTimeField(format=settings.DATETIME_FORMAT) created = serializers.DateTimeField(format=settings.DATETIME_FORMAT)
# pylint: disable=abstract-method
class ProblemSerializer(serializers.Serializer): class ProblemSerializer(serializers.Serializer):
""" """
Serializer for problems. Serializer for problems.
...@@ -59,6 +60,7 @@ class ProblemSerializer(serializers.Serializer): ...@@ -59,6 +60,7 @@ class ProblemSerializer(serializers.Serializer):
created = serializers.DateTimeField(format=settings.DATETIME_FORMAT) created = serializers.DateTimeField(format=settings.DATETIME_FORMAT)
# pylint: disable=abstract-method
class ProblemsAndTagsSerializer(serializers.Serializer): class ProblemsAndTagsSerializer(serializers.Serializer):
""" """
Serializer for problems and tags. Serializer for problems and tags.
...@@ -231,6 +233,7 @@ class CourseEnrollmentModeDailySerializer(BaseCourseEnrollmentModelSerializer): ...@@ -231,6 +233,7 @@ class CourseEnrollmentModeDailySerializer(BaseCourseEnrollmentModelSerializer):
fields = ['course_id', 'date', 'count', 'cumulative_count', 'created'] + ENROLLMENT_MODES fields = ['course_id', 'date', 'count', 'cumulative_count', 'created'] + ENROLLMENT_MODES
# pylint: disable=abstract-method
class CountrySerializer(serializers.Serializer): class CountrySerializer(serializers.Serializer):
""" """
Serialize country to an object with fields for the complete country name Serialize country to an object with fields for the complete country name
...@@ -329,10 +332,12 @@ class VideoTimelineSerializer(ModelSerializerWithCreatedField): ...@@ -329,10 +332,12 @@ class VideoTimelineSerializer(ModelSerializerWithCreatedField):
) )
# pylint: disable=abstract-method
class LastUpdatedSerializer(serializers.Serializer): class LastUpdatedSerializer(serializers.Serializer):
last_updated = serializers.DateTimeField(source='date', format=settings.DATE_FORMAT) last_updated = serializers.DateTimeField(source='date', format=settings.DATE_FORMAT)
# pylint: disable=abstract-method
class LearnerSerializer(serializers.Serializer): class LearnerSerializer(serializers.Serializer):
username = serializers.CharField() username = serializers.CharField()
enrollment_mode = serializers.CharField() enrollment_mode = serializers.CharField()
...@@ -407,6 +412,7 @@ class EdxPaginationSerializer(pagination.PageNumberPagination): ...@@ -407,6 +412,7 @@ class EdxPaginationSerializer(pagination.PageNumberPagination):
])) ]))
# pylint: disable=abstract-method
class EngagementDaySerializer(serializers.Serializer): class EngagementDaySerializer(serializers.Serializer):
date = serializers.DateField(format=settings.DATE_FORMAT) date = serializers.DateField(format=settings.DATE_FORMAT)
problems_attempted = serializers.SerializerMethodField() problems_attempted = serializers.SerializerMethodField()
...@@ -427,11 +433,13 @@ class EngagementDaySerializer(serializers.Serializer): ...@@ -427,11 +433,13 @@ class EngagementDaySerializer(serializers.Serializer):
return obj.get('videos_viewed', 0) return obj.get('videos_viewed', 0)
# pylint: disable=abstract-method
class DateRangeSerializer(serializers.Serializer): class DateRangeSerializer(serializers.Serializer):
start = serializers.DateTimeField(source='start_date', format=settings.DATE_FORMAT) start = serializers.DateTimeField(source='start_date', format=settings.DATE_FORMAT)
end = serializers.DateTimeField(source='end_date', format=settings.DATE_FORMAT) end = serializers.DateTimeField(source='end_date', format=settings.DATE_FORMAT)
# pylint: disable=abstract-method
class EnagementRangeMetricSerializer(serializers.Serializer): class EnagementRangeMetricSerializer(serializers.Serializer):
""" """
Serializes ModuleEngagementMetricRanges ('bottom', 'average', and 'top') into Serializes ModuleEngagementMetricRanges ('bottom', 'average', and 'top') into
...@@ -456,6 +464,7 @@ class EnagementRangeMetricSerializer(serializers.Serializer): ...@@ -456,6 +464,7 @@ class EnagementRangeMetricSerializer(serializers.Serializer):
return [metric_range.low_value, metric_range.high_value] if metric_range else None return [metric_range.low_value, metric_range.high_value] if metric_range else None
# pylint: disable=abstract-method
class CourseLearnerMetadataSerializer(serializers.Serializer): class CourseLearnerMetadataSerializer(serializers.Serializer):
enrollment_modes = serializers.ReadOnlyField(source='es_data.enrollment_modes') enrollment_modes = serializers.ReadOnlyField(source='es_data.enrollment_modes')
segments = serializers.ReadOnlyField(source='es_data.segments') segments = serializers.ReadOnlyField(source='es_data.segments')
......
...@@ -15,7 +15,7 @@ from analytics_data_api.constants import enrollment_modes ...@@ -15,7 +15,7 @@ from analytics_data_api.constants import enrollment_modes
from analytics_data_api.utils import dictfetchall from analytics_data_api.utils import dictfetchall
from analytics_data_api.v0 import models, serializers 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): class BaseCourseView(generics.ListAPIView):
...@@ -242,7 +242,7 @@ class CourseActivityMostRecentWeekView(generics.RetrieveAPIView): ...@@ -242,7 +242,7 @@ class CourseActivityMostRecentWeekView(generics.RetrieveAPIView):
return activity_type return activity_type
def get_object(self, queryset=None): def get_object(self):
"""Select the activity report for the given course and activity type.""" """Select the activity report for the given course and activity type."""
warnings.warn('CourseActivityMostRecentWeekView has been deprecated! Use CourseActivityWeeklyView instead.', warnings.warn('CourseActivityMostRecentWeekView has been deprecated! Use CourseActivityWeeklyView instead.',
...@@ -403,7 +403,11 @@ class CourseEnrollmentByGenderView(BaseCourseEnrollmentView): ...@@ -403,7 +403,11 @@ class CourseEnrollmentByGenderView(BaseCourseEnrollmentView):
item = { item = {
u'course_id': key[0], u'course_id': key[0],
u'date': key[1], 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: for enrollment in group:
......
...@@ -103,7 +103,7 @@ class LearnerView(LastUpdateMixin, CourseViewMixin, generics.RetrieveAPIView): ...@@ -103,7 +103,7 @@ class LearnerView(LastUpdateMixin, CourseViewMixin, generics.RetrieveAPIView):
def get_queryset(self): def get_queryset(self):
return RosterEntry.get_course_user(self.course_id, self.username) return RosterEntry.get_course_user(self.course_id, self.username)
def get_object(self, queryset=None): def get_object(self):
queryset = self.get_queryset() queryset = self.get_queryset()
if len(queryset) == 1: if len(queryset) == 1:
return queryset[0] return queryset[0]
...@@ -362,7 +362,7 @@ class CourseLearnerMetadata(CourseViewMixin, generics.RetrieveAPIView): ...@@ -362,7 +362,7 @@ class CourseLearnerMetadata(CourseViewMixin, generics.RetrieveAPIView):
""" """
serializer_class = CourseLearnerMetadataSerializer serializer_class = CourseLearnerMetadataSerializer
def get_object(self, queryset=None): def get_object(self):
# Because we're serializing data from both Elasticsearch and MySQL into # 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 # the same JSON object, we have to pass both sources of data in a dict
# to our custom course metadata serializer. # to our custom course metadata serializer.
......
...@@ -22,7 +22,7 @@ from analytics_data_api.v0.serializers import ( ...@@ -22,7 +22,7 @@ from analytics_data_api.v0.serializers import (
) )
from analytics_data_api.utils import matching_tuple 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): class ProblemResponseAnswerDistributionView(generics.ListAPIView):
......
...@@ -12,6 +12,7 @@ def split_query_argument(argument): ...@@ -12,6 +12,7 @@ def split_query_argument(argument):
else: else:
return None return None
def raise_404_if_none(func): def raise_404_if_none(func):
""" """
Decorator for raiseing Http404 if function evaulation is falsey (e.g. empty queryset). Decorator for raiseing Http404 if function evaulation is falsey (e.g. empty queryset).
......
...@@ -7,7 +7,8 @@ from rest_framework import generics ...@@ -7,7 +7,8 @@ from rest_framework import generics
from analytics_data_api.v0.models import VideoTimeline from analytics_data_api.v0.models import VideoTimeline
from analytics_data_api.v0.serializers import VideoTimelineSerializer 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): class VideoTimelineView(generics.ListAPIView):
""" """
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment