Commit b857f029 by Dennis Jen Committed by Daniel Friedman

Return null for empty learner fields.

parent a068da24
...@@ -332,6 +332,14 @@ class LearnerSerializer(serializers.Serializer, DefaultIfNoneMixin): ...@@ -332,6 +332,14 @@ class LearnerSerializer(serializers.Serializer, DefaultIfNoneMixin):
enrollment_date = serializers.DateField(source='enrollment_date', format=settings.DATE_FORMAT) enrollment_date = serializers.DateField(source='enrollment_date', format=settings.DATE_FORMAT)
cohort = serializers.CharField(source='cohort') cohort = serializers.CharField(source='cohort')
def transform_segments(self, _obj, value):
# returns null instead of empty strings
return value or []
def transform_cohort(self, _obj, value):
# returns null instead of empty strings
return value or None
def get_account_url(self, obj): def get_account_url(self, obj):
if settings.LMS_USER_ACCOUNT_BASE_URL: if settings.LMS_USER_ACCOUNT_BASE_URL:
return urljoin(settings.LMS_USER_ACCOUNT_BASE_URL, obj.username) return urljoin(settings.LMS_USER_ACCOUNT_BASE_URL, obj.username)
......
...@@ -118,25 +118,32 @@ class LearnerAPITestMixin(object): ...@@ -118,25 +118,32 @@ class LearnerAPITestMixin(object):
enrollment_date='2015-01-28', enrollment_date='2015-01-28',
): ):
"""Create a single learner roster entry in the elasticsearch index.""" """Create a single learner roster entry in the elasticsearch index."""
self._es.create( body = {
index=settings.ELASTICSEARCH_LEARNERS_INDEX,
doc_type='roster_entry',
body={
'username': username, 'username': username,
'course_id': course_id, 'course_id': course_id,
'name': name if name is not None else username, 'name': name if name is not None else username,
'email': email if email is not None else '{}@example.com'.format(username), 'email': email if email is not None else '{}@example.com'.format(username),
'enrollment_mode': enrollment_mode, 'enrollment_mode': enrollment_mode,
'segments': segments if segments is not None else list(),
'cohort': cohort,
'discussion_contributions': discussion_contributions, 'discussion_contributions': discussion_contributions,
'problems_attempted': problems_attempted, 'problems_attempted': problems_attempted,
'problems_completed': problems_completed, 'problems_completed': problems_completed,
'problem_attempts_per_completed': problem_attempts_per_completed,
'attempt_ratio_order': attempt_ratio_order, 'attempt_ratio_order': attempt_ratio_order,
'videos_viewed': videos_viewed, 'videos_viewed': videos_viewed,
'enrollment_date': enrollment_date, 'enrollment_date': enrollment_date,
} }
# leave null fields from being stored in the index. Otherwise, they will have
# an explicit null value and we want to test for the case when they're not returned
optional_fields = [('segments', segments), ('cohort', cohort),
('problem_attempts_per_completed', problem_attempts_per_completed)]
for optional_field in optional_fields:
if optional_field[1]:
body[optional_field[0]] = optional_field[1]
self._es.create(
index=settings.ELASTICSEARCH_LEARNERS_INDEX,
doc_type='roster_entry',
body=body
) )
def create_learners(self, learners): def create_learners(self, learners):
......
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