def test_shared_timetable_serialization(self): timetable = SharedTimetable.objects.create(semester=self.sem, school='uoft', has_conflict=False) timetable.courses.add(self.course) timetable.sections.add(self.section) display = DisplayTimetable.from_model(timetable) self.assertEqual(len(display.slots), 1) self.assertIsInstance(display.slots[0].course, Course) serialized = DisplayTimetableSerializer(display).data self.assertEqual(len(serialized['slots']), 1) self.assertIsInstance(serialized['slots'][0]['course'], int) self.assertEqual(len(serialized['events']), 0)
def test_personal_timetable_serialization(self): timetable = PersonalTimetable.objects.create(semester=self.sem, school="uoft", has_conflict=False, student=self.student) timetable.courses.add(self.course) timetable.sections.add(self.section) timetable.events.add(self.event) display = DisplayTimetable.from_model(timetable) self.assertEqual(len(display.slots), 1) self.assertIsInstance(display.slots[0].course, Course) serialized = DisplayTimetableSerializer(display).data self.assertEqual(len(serialized["slots"]), 1) self.assertIsInstance(serialized["slots"][0]["course"], int) self.assertEqual(len(serialized["events"]), 1)
def from_model(cls, timetable, **kwargs): if kwargs.get('many') is True: timetables = [DisplayTimetable.from_model(tt) for tt in timetable] return DisplayTimetableSerializer(timetables, **kwargs) return DisplayTimetableSerializer(DisplayTimetable.from_model(timetable), **kwargs)
def from_model(cls, timetable, **kwargs): if kwargs.get('many') is True: timetables = [DisplayTimetable.from_model(tt) for tt in timetable] return DisplayTimetableSerializer(timetables, **kwargs) return DisplayTimetableSerializer( DisplayTimetable.from_model(timetable), **kwargs)