Files
Class_Search/student/views.py
2024-06-22 23:12:18 -07:00

81 lines
2.9 KiB
Python

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