from typing import Any from django.shortcuts import render from rest_framework import generics, viewsets from .models import Student from university.models import University, Agreement, Section from .serializers import StudentSerializer, RecommendedClasses from classes.serializers import ClassesSerializer # Create your views here. class StudentListCreate(generics.ListCreateAPIView): queryset = Student.objects.all() serializer_class = StudentSerializer class StudentRetrieveUpdateDestroy(generics.RetrieveUpdateDestroyAPIView): queryset = Student.objects.all() serializer_class = StudentSerializer lookup_field = "w_number" class RecommendedClassesView(generics.ListCreateAPIView): university = None classes = [] serializer_class = ClassesSerializer lookup_field = "w_number" def myGuy(self, user): # Grabs student and appends their classes into Classes array for e in Student.objects.all(): for mClass in e.classes.all(): self.classes.append(mClass) # Grabs student, desired university, and desired major agreement from university # Finally grabs the sections from said agreement student = Student.objects.filter(user=user)[0] print(student) self.university = University.objects.filter(name=student.desired_university) agreement = Agreement.objects.filter(university=student.desired_university, major=student.major.major) section = Section.objects.filter(agreement=agreement.first()) print(section) return self.compareSectionsToStudent(sections=section, student=student) def compareSectionsToStudent(self, sections, student): mClasses = [] requiredAmount = 0 print(f"WOAHHH {sections[0]}") # Grabs every section inside of the Agreement for section in sections: # print(f"\n Section Name{section.area_name} \n") requiredAmount = section.number_of_required_courses amount_added = 0 # Grabs every course inside of section for mClass in section.classes.all(): if mClass in student.classes.all(): amount_added += 1 elif amount_added < requiredAmount: mClasses.append(mClass) # for student_course in student.classes.all(): # if(student_course == mClass and added_classes < requiredAmount): # print(f"Match {student_course}") # else: # if (mClass not in mClasses): # mClasses.append(mClass) # added_classes+= 1 return mClasses # self.queryset = self.classes def get_queryset(self): user = self.request.user return self.myGuy(user=user) # for agreements in self.university