def add(request): try: selected_course = Course.objects.get(courseID=request.POST['course']) except (KeyError, Course.DoesNotExist): error_message = "That course does not exist." return student(request, error_message) else: now = TIMEZONE.localize(datetime.datetime.now()) if not (REGSTART <= now <= REGEND): error_message = "It is not time to enroll." return student(request, error_message) selected_student = Student.objects.get(netID=request.user) ss_courses = selected_student.course_set.all() # Can't enroll in a class we're already in if selected_course in ss_courses: error_message = "Already enrolled in "+selected_course.title return student(request, error_message) # Can't enroll in a full class if selected_course.is_full(): error_message = selected_course.title+" is at maximum capacity." return student(request, error_message) # Can't enroll in a cancelled class if selected_course.cancelled: error_message = selected_course.title+" is cancelled." return student(request, error_message) # Can't enroll in two section of same class if selected_course.other_section.count() != 0: other_sections = selected_course.other_section.all() my_courses = selected_student.course_set.all() for course in my_courses: for section in other_sections: if course.courseID == section.courseID: error_message = "You are already in "+section.courseID+", which is an alternative section of "+course.title return student(request, error_message) # Can't enroll in a class with time conflicts ssb = selected_student.blocks() overlap = False for blk in selected_course.blocks: if blk in ssb: overlap = True break if overlap: for course in selected_student.course_set.all(): for blk in course.blocks: if blk in selected_course.blocks: error_message = selected_course.title \ +" conflicts with "+course.title+" at " \ +decode(blk) return student(request, error_message) # If we've made it to here, we can enroll #for item in selected_course.blocks: # selected_student.blocks.append(item) #selected_student.save() Registration(student=selected_student, course=selected_course).save() error_message = selected_course.title+" successfully added." return student(request, error_message)
def add(request): try: selected_course = Course.objects.get(courseID=request.POST['course']) except (KeyError, Course.DoesNotExist): error_message = "That course does not exist." return student(request, error_message) else: today = datetime.date.today() if not (REGSTART <= today <= REGEND): error_message = "It is not time to enroll." return student(request, error_message) selected_student = Student.objects.get(netID=request.user) ss_courses = selected_student.course_set.all() # Can't enroll in a class we're already in if selected_course in ss_courses: error_message = "Already enrolled in " + selected_course.title return student(request, error_message) # Can't enroll in a full class if selected_course.is_full(): error_message = selected_course.title + " is at maximum capacity." return student(request, error_message) # Can't enroll in a cancelled class if selected_course.cancelled: error_message = selected_course.title + " is cancelled." return student(request, error_message) # Can't enroll in two section of same class if selected_course.other_section.count() != 0: other_sections = selected_course.other_section.all() my_courses = selected_student.course_set.all() for course in my_courses: for section in other_sections: if course.courseID == section.courseID: error_message = "You are already in " + section.courseID + ", which is an alternative section of " + course.title return student(request, error_message) # Can't enroll in a class with time conflicts ssb = selected_student.blocks() overlap = False for blk in selected_course.blocks: if blk in ssb: overlap = True break if overlap: for course in selected_student.course_set.all(): for blk in course.blocks: if blk in selected_course.blocks: error_message = selected_course.title \ +" conflicts with "+course.title+" at " \ +decode(blk) return student(request, error_message) # If we've made it to here, we can enroll #for item in selected_course.blocks: # selected_student.blocks.append(item) #selected_student.save() Registration(student=selected_student, course=selected_course).save() error_message = selected_course.title + " successfully added." return student(request, error_message)
def create(self, request, *args, **kwargs): error_message = None try: selected_course = Course.objects.get(id=request.DATA['section']) except (KeyError, Course.DoesNotExist): error_message = "That course does not exist." else: now = TIMEZONE.localize(datetime.datetime.now()) if not (views.REGSTART <= now <= views.REGEND): error_message = "It is not time to enroll." selected_student = Student.objects.get(netID=request.user) ss_courses = selected_student.course_set.all() # Can't enroll in a class we're already in if selected_course in ss_courses: error_message = "Already enrolled in "+selected_course.title # Can't enroll in a full class if selected_course.is_full(): error_message = selected_course.title+" is at maximum capacity." # Can't enroll in a cancelled class if selected_course.cancelled: error_message = selected_course.title+" is cancelled." # Can't enroll in two section of same class if selected_course.other_section.count() != 0: other_sections = selected_course.other_section.all() my_courses = selected_student.course_set.all() for course in my_courses: for section in other_sections: if course.courseID == section.courseID: error_message = "You are already in "+section.courseID+", which is an alternative section of "+course.title # Can't enroll in a class with time conflicts ssb = selected_student.blocks() overlap = False for blk in selected_course.blocks: if blk in ssb: overlap = True break if overlap: for course in selected_student.course_set.all(): for blk in course.blocks: if blk in selected_course.blocks: error_message = selected_course.title \ +" conflicts with "+course.title+" at " \ +decode(blk) if error_message is not None: return Response({'error': error_message}, status=status.HTTP_400_BAD_REQUEST) # If we've made it to here, we can enroll return super(RegistrationViewSet, self).create(request, *args, **kwargs)