Initializing Database
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,4 +1,4 @@
|
||||
# Generated by Django 5.0.6 on 2024-06-09 21:50
|
||||
# Generated by Django 5.0.6 on 2024-06-23 06:06
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
@@ -10,6 +10,8 @@ class Migration(migrations.Migration):
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('classes', '0001_initial'),
|
||||
('university', '0001_initial'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
@@ -19,7 +21,9 @@ class Migration(migrations.Migration):
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('w_number', models.IntegerField()),
|
||||
('classes', models.CharField(max_length=200)),
|
||||
('classes', models.ManyToManyField(to='classes.classes')),
|
||||
('desired_university', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='university', to='university.university')),
|
||||
('major', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='student_major', to='university.agreement')),
|
||||
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
# Generated by Django 5.0.1 on 2024-06-09 22:26
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('classes', '0001_initial'),
|
||||
('student', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='student',
|
||||
name='classes',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='student',
|
||||
name='classes',
|
||||
field=models.ManyToManyField(to='classes.classes'),
|
||||
),
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,12 +1,15 @@
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import User
|
||||
from classes.models import Classes
|
||||
from university.models import University, Agreement
|
||||
|
||||
# Create your models here.
|
||||
class Student(models.Model):
|
||||
w_number = models.IntegerField()
|
||||
user = models.OneToOneField(User, on_delete=models.CASCADE)
|
||||
classes = models.ManyToManyField(Classes)
|
||||
desired_university = models.ForeignKey(University, related_name="university", on_delete=models.DO_NOTHING)
|
||||
major = models.ForeignKey(Agreement, related_name="student_major", on_delete=models.DO_NOTHING)
|
||||
|
||||
def __str__(self):
|
||||
return self.user.username.capitalize()
|
||||
@@ -1,7 +1,20 @@
|
||||
from rest_framework import serializers
|
||||
from .models import Student
|
||||
from classes.models import Classes
|
||||
|
||||
class StudentSerializer(serializers.ModelSerializer):
|
||||
|
||||
classes = serializers.SlugRelatedField(
|
||||
many = True,
|
||||
read_only = True,
|
||||
slug_field = "MJC_Class_Name"
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = Student
|
||||
fields = ["id", "user", "w_number", "classes"]
|
||||
fields = ["id", "user", "w_number", "classes"]
|
||||
|
||||
class RecommendedClasses(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Classes
|
||||
fields = ["id", "MJC_Class_Name", "Common_Class_Name", "MJC_Units"]
|
||||
@@ -4,4 +4,5 @@ from . import views
|
||||
urlpatterns = [
|
||||
path("all_students/", views.StudentListCreate.as_view(), name="student-view-createlist"),
|
||||
path("<int:w_number>/", views.StudentRetrieveUpdateDestroy.as_view(), name="update"),
|
||||
path("<int:w_number>/recommended_classes", views.RecommendedClassesView.as_view(), name="recommended"),
|
||||
]
|
||||
@@ -1,7 +1,10 @@
|
||||
from typing import Any
|
||||
from django.shortcuts import render
|
||||
from rest_framework import generics
|
||||
from rest_framework import generics, viewsets
|
||||
from .models import Student
|
||||
from .serializers import StudentSerializer
|
||||
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):
|
||||
@@ -11,4 +14,67 @@ class StudentListCreate(generics.ListCreateAPIView):
|
||||
class StudentRetrieveUpdateDestroy(generics.RetrieveUpdateDestroyAPIView):
|
||||
queryset = Student.objects.all()
|
||||
serializer_class = StudentSerializer
|
||||
lookup_field = "w_number"
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user