Source code for student.serializers

# Copyright (C) 2017 Semester.ly Technologies, LLC
#
# Semester.ly is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Semester.ly is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

from rest_framework import serializers

from courses.serializers import CourseSerializer
from timetable.serializers import DisplayTimetableSerializer
from student.models import Student


[docs]def get_student_dict(school, student, semester): """ Return serialized representation of a student. """ user_dict = {'timeAcceptedTos': None, 'isLoggedIn': False, 'timetables': [], 'courses': []} if student is not None: user_dict = dict(user_dict, **StudentSerializer(student).data) user_dict['isLoggedIn'] = True timetables = student.personaltimetable_set.filter( school=school, semester=semester).order_by('-last_updated') courses = {course for timetable in timetables for course in timetable.courses.all()} context = {'semester': semester, 'school': school, 'student': student} user_dict['timetables'] = DisplayTimetableSerializer.from_model(timetables, many=True).data user_dict['courses'] = CourseSerializer(courses, context=context, many=True).data return user_dict
class StudentSerializer(serializers.ModelSerializer): userFirstName = serializers.CharField(source='user.first_name') userLastName = serializers.CharField(source='user.last_name') # TODO: switch to camelCase FacebookSignedUp = serializers.BooleanField(source='is_signed_up_through_fb') GoogleSignedUp = serializers.BooleanField(source='is_signed_up_through_google') GoogleLoggedIn = serializers.BooleanField(source='is_logged_in_google') LoginToken = serializers.CharField(source='get_token') LoginHash = serializers.CharField(source='get_hash') timeAcceptedTos = serializers.DateTimeField(source='time_accepted_tos', format='iso-8601') class Meta: model = Student fields = ( 'class_year', 'img_url', 'fbook_uid', 'gender', 'major', 'social_courses', 'social_offerings', 'social_all', 'emails_enabled', 'school', 'integrations', 'userFirstName', 'userLastName', 'FacebookSignedUp', 'GoogleSignedUp', 'GoogleLoggedIn', 'LoginToken', 'LoginHash', 'timeAcceptedTos', )