diff --git a/ClassSearch/__pycache__/__init__.cpython-310.pyc b/ClassSearch/__pycache__/__init__.cpython-310.pyc index d4bac21..5f22230 100644 Binary files a/ClassSearch/__pycache__/__init__.cpython-310.pyc and b/ClassSearch/__pycache__/__init__.cpython-310.pyc differ diff --git a/ClassSearch/__pycache__/settings.cpython-310.pyc b/ClassSearch/__pycache__/settings.cpython-310.pyc index eb57bbc..3354b5a 100644 Binary files a/ClassSearch/__pycache__/settings.cpython-310.pyc and b/ClassSearch/__pycache__/settings.cpython-310.pyc differ diff --git a/ClassSearch/__pycache__/urls.cpython-310.pyc b/ClassSearch/__pycache__/urls.cpython-310.pyc index f68b8ab..69819da 100644 Binary files a/ClassSearch/__pycache__/urls.cpython-310.pyc and b/ClassSearch/__pycache__/urls.cpython-310.pyc differ diff --git a/ClassSearch/__pycache__/wsgi.cpython-310.pyc b/ClassSearch/__pycache__/wsgi.cpython-310.pyc index 2bb6c79..13334c6 100644 Binary files a/ClassSearch/__pycache__/wsgi.cpython-310.pyc and b/ClassSearch/__pycache__/wsgi.cpython-310.pyc differ diff --git a/api/__pycache__/__init__.cpython-310.pyc b/api/__pycache__/__init__.cpython-310.pyc index d0e0233..4cb42ba 100644 Binary files a/api/__pycache__/__init__.cpython-310.pyc and b/api/__pycache__/__init__.cpython-310.pyc differ diff --git a/api/__pycache__/admin.cpython-310.pyc b/api/__pycache__/admin.cpython-310.pyc index 4010cfe..83f92cb 100644 Binary files a/api/__pycache__/admin.cpython-310.pyc and b/api/__pycache__/admin.cpython-310.pyc differ diff --git a/api/__pycache__/apps.cpython-310.pyc b/api/__pycache__/apps.cpython-310.pyc index 47c45b7..87bcc2c 100644 Binary files a/api/__pycache__/apps.cpython-310.pyc and b/api/__pycache__/apps.cpython-310.pyc differ diff --git a/api/__pycache__/models.cpython-310.pyc b/api/__pycache__/models.cpython-310.pyc index 2d04664..0b57d4e 100644 Binary files a/api/__pycache__/models.cpython-310.pyc and b/api/__pycache__/models.cpython-310.pyc differ diff --git a/api/migrations/__pycache__/__init__.cpython-310.pyc b/api/migrations/__pycache__/__init__.cpython-310.pyc index 3435aa9..981e68f 100644 Binary files a/api/migrations/__pycache__/__init__.cpython-310.pyc and b/api/migrations/__pycache__/__init__.cpython-310.pyc differ diff --git a/classes/__pycache__/__init__.cpython-310.pyc b/classes/__pycache__/__init__.cpython-310.pyc index ff5f726..637457b 100644 Binary files a/classes/__pycache__/__init__.cpython-310.pyc and b/classes/__pycache__/__init__.cpython-310.pyc differ diff --git a/classes/__pycache__/admin.cpython-310.pyc b/classes/__pycache__/admin.cpython-310.pyc index fc494f5..1cdf29c 100644 Binary files a/classes/__pycache__/admin.cpython-310.pyc and b/classes/__pycache__/admin.cpython-310.pyc differ diff --git a/classes/__pycache__/apps.cpython-310.pyc b/classes/__pycache__/apps.cpython-310.pyc index fec778b..2facffa 100644 Binary files a/classes/__pycache__/apps.cpython-310.pyc and b/classes/__pycache__/apps.cpython-310.pyc differ diff --git a/classes/__pycache__/models.cpython-310.pyc b/classes/__pycache__/models.cpython-310.pyc index 8361b7a..6f53e3e 100644 Binary files a/classes/__pycache__/models.cpython-310.pyc and b/classes/__pycache__/models.cpython-310.pyc differ diff --git a/classes/__pycache__/serializers.cpython-310.pyc b/classes/__pycache__/serializers.cpython-310.pyc index ff5a357..173c126 100644 Binary files a/classes/__pycache__/serializers.cpython-310.pyc and b/classes/__pycache__/serializers.cpython-310.pyc differ diff --git a/classes/__pycache__/urls.cpython-310.pyc b/classes/__pycache__/urls.cpython-310.pyc index 1eaed11..28b3ab3 100644 Binary files a/classes/__pycache__/urls.cpython-310.pyc and b/classes/__pycache__/urls.cpython-310.pyc differ diff --git a/classes/__pycache__/views.cpython-310.pyc b/classes/__pycache__/views.cpython-310.pyc index dd1deb0..5a7d90f 100644 Binary files a/classes/__pycache__/views.cpython-310.pyc and b/classes/__pycache__/views.cpython-310.pyc differ diff --git a/classes/admin.py b/classes/admin.py index 86bda64..b5f4638 100644 --- a/classes/admin.py +++ b/classes/admin.py @@ -1,5 +1,7 @@ from django.contrib import admin -from .models import Classes +from .models import Classes, Subject, Teacher # Register your models here. -admin.site.register(Classes) \ No newline at end of file +admin.site.register(Classes) +admin.site.register(Subject) +admin.site.register(Teacher) \ No newline at end of file diff --git a/classes/migrations/0001_initial.py b/classes/migrations/0001_initial.py index c26f13a..b0db2f8 100644 --- a/classes/migrations/0001_initial.py +++ b/classes/migrations/0001_initial.py @@ -1,5 +1,6 @@ -# Generated by Django 5.0.1 on 2024-06-09 22:23 +# Generated by Django 5.0.6 on 2024-06-23 06:06 +import django.db.models.deletion from django.db import migrations, models @@ -11,6 +12,22 @@ class Migration(migrations.Migration): ] operations = [ + migrations.CreateModel( + name='Subject', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('acronym', models.CharField(max_length=200)), + ('full_name', models.CharField(max_length=200)), + ], + ), + migrations.CreateModel( + name='Teacher', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('First_Name', models.CharField(max_length=200)), + ('Last_Name', models.CharField(max_length=200)), + ], + ), migrations.CreateModel( name='Classes', fields=[ @@ -18,6 +35,9 @@ class Migration(migrations.Migration): ('MJC_Class_Name', models.CharField(max_length=200)), ('Common_Class_Name', models.CharField(max_length=200)), ('MJC_Units', models.IntegerField()), + ('Section_Number', models.CharField(max_length=200)), + ('In_Subject', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='Subject', to='classes.subject')), + ('Instructor', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='Teacher', to='classes.teacher')), ], ), ] diff --git a/classes/migrations/0002_remove_classes_instructor_classes_instructor.py b/classes/migrations/0002_remove_classes_instructor_classes_instructor.py new file mode 100644 index 0000000..1bc84dd --- /dev/null +++ b/classes/migrations/0002_remove_classes_instructor_classes_instructor.py @@ -0,0 +1,22 @@ +# Generated by Django 5.0.6 on 2024-06-23 06:10 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('classes', '0001_initial'), + ] + + operations = [ + migrations.RemoveField( + model_name='classes', + name='Instructor', + ), + migrations.AddField( + model_name='classes', + name='Instructor', + field=models.ManyToManyField(related_name='Teacher', to='classes.teacher'), + ), + ] diff --git a/classes/migrations/__pycache__/0001_initial.cpython-310.pyc b/classes/migrations/__pycache__/0001_initial.cpython-310.pyc index c9ed362..fbab214 100644 Binary files a/classes/migrations/__pycache__/0001_initial.cpython-310.pyc and b/classes/migrations/__pycache__/0001_initial.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0002_classes_instructor_classes_section_number.cpython-310.pyc b/classes/migrations/__pycache__/0002_classes_instructor_classes_section_number.cpython-310.pyc new file mode 100644 index 0000000..31178d8 Binary files /dev/null and b/classes/migrations/__pycache__/0002_classes_instructor_classes_section_number.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0002_remove_classes_instructor_classes_instructor.cpython-310.pyc b/classes/migrations/__pycache__/0002_remove_classes_instructor_classes_instructor.cpython-310.pyc new file mode 100644 index 0000000..3206afb Binary files /dev/null and b/classes/migrations/__pycache__/0002_remove_classes_instructor_classes_instructor.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0003_subject.cpython-310.pyc b/classes/migrations/__pycache__/0003_subject.cpython-310.pyc new file mode 100644 index 0000000..221b8ae Binary files /dev/null and b/classes/migrations/__pycache__/0003_subject.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0004_classes_in_subject.cpython-310.pyc b/classes/migrations/__pycache__/0004_classes_in_subject.cpython-310.pyc new file mode 100644 index 0000000..6498d20 Binary files /dev/null and b/classes/migrations/__pycache__/0004_classes_in_subject.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0005_teacher.cpython-310.pyc b/classes/migrations/__pycache__/0005_teacher.cpython-310.pyc new file mode 100644 index 0000000..140e0e8 Binary files /dev/null and b/classes/migrations/__pycache__/0005_teacher.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0006_rename_name_teacher_first_name_teacher_last_name.cpython-310.pyc b/classes/migrations/__pycache__/0006_rename_name_teacher_first_name_teacher_last_name.cpython-310.pyc new file mode 100644 index 0000000..4998c7f Binary files /dev/null and b/classes/migrations/__pycache__/0006_rename_name_teacher_first_name_teacher_last_name.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0007_alter_classes_instructor.cpython-310.pyc b/classes/migrations/__pycache__/0007_alter_classes_instructor.cpython-310.pyc new file mode 100644 index 0000000..26e9a37 Binary files /dev/null and b/classes/migrations/__pycache__/0007_alter_classes_instructor.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0008_rename_instructor_classes_minstructor.cpython-310.pyc b/classes/migrations/__pycache__/0008_rename_instructor_classes_minstructor.cpython-310.pyc new file mode 100644 index 0000000..1f1fcf5 Binary files /dev/null and b/classes/migrations/__pycache__/0008_rename_instructor_classes_minstructor.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0009_remove_classes_minstructor_classes_instructor.cpython-310.pyc b/classes/migrations/__pycache__/0009_remove_classes_minstructor_classes_instructor.cpython-310.pyc new file mode 100644 index 0000000..5228036 Binary files /dev/null and b/classes/migrations/__pycache__/0009_remove_classes_minstructor_classes_instructor.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0010_remove_classes_instructor_classes_mninstructor.cpython-310.pyc b/classes/migrations/__pycache__/0010_remove_classes_instructor_classes_mninstructor.cpython-310.pyc new file mode 100644 index 0000000..b7c5792 Binary files /dev/null and b/classes/migrations/__pycache__/0010_remove_classes_instructor_classes_mninstructor.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0011_rename_mninstructor_classes_instructor.cpython-310.pyc b/classes/migrations/__pycache__/0011_rename_mninstructor_classes_instructor.cpython-310.pyc new file mode 100644 index 0000000..7573b99 Binary files /dev/null and b/classes/migrations/__pycache__/0011_rename_mninstructor_classes_instructor.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0012_remove_classes_instructor_classes_minstructor.cpython-310.pyc b/classes/migrations/__pycache__/0012_remove_classes_instructor_classes_minstructor.cpython-310.pyc new file mode 100644 index 0000000..d48d3e8 Binary files /dev/null and b/classes/migrations/__pycache__/0012_remove_classes_instructor_classes_minstructor.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0013_remove_classes_minstructor_classes_instructor.cpython-310.pyc b/classes/migrations/__pycache__/0013_remove_classes_minstructor_classes_instructor.cpython-310.pyc new file mode 100644 index 0000000..d412dfe Binary files /dev/null and b/classes/migrations/__pycache__/0013_remove_classes_minstructor_classes_instructor.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0014_remove_classes_instructor_classes_minstructor.cpython-310.pyc b/classes/migrations/__pycache__/0014_remove_classes_instructor_classes_minstructor.cpython-310.pyc new file mode 100644 index 0000000..34d6709 Binary files /dev/null and b/classes/migrations/__pycache__/0014_remove_classes_instructor_classes_minstructor.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0015_remove_classes_minstructor.cpython-310.pyc b/classes/migrations/__pycache__/0015_remove_classes_minstructor.cpython-310.pyc new file mode 100644 index 0000000..deee868 Binary files /dev/null and b/classes/migrations/__pycache__/0015_remove_classes_minstructor.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0016_remove_classes_in_subject.cpython-310.pyc b/classes/migrations/__pycache__/0016_remove_classes_in_subject.cpython-310.pyc new file mode 100644 index 0000000..f2005c8 Binary files /dev/null and b/classes/migrations/__pycache__/0016_remove_classes_in_subject.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0017_classes_instructor.cpython-310.pyc b/classes/migrations/__pycache__/0017_classes_instructor.cpython-310.pyc new file mode 100644 index 0000000..67c8898 Binary files /dev/null and b/classes/migrations/__pycache__/0017_classes_instructor.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0018_remove_classes_instructor_classes_minstructor.cpython-310.pyc b/classes/migrations/__pycache__/0018_remove_classes_instructor_classes_minstructor.cpython-310.pyc new file mode 100644 index 0000000..435f52c Binary files /dev/null and b/classes/migrations/__pycache__/0018_remove_classes_instructor_classes_minstructor.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0019_alter_classes_minstructor.cpython-310.pyc b/classes/migrations/__pycache__/0019_alter_classes_minstructor.cpython-310.pyc new file mode 100644 index 0000000..b64ba79 Binary files /dev/null and b/classes/migrations/__pycache__/0019_alter_classes_minstructor.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0020_rename_minstructor_classes_instructor.cpython-310.pyc b/classes/migrations/__pycache__/0020_rename_minstructor_classes_instructor.cpython-310.pyc new file mode 100644 index 0000000..f500100 Binary files /dev/null and b/classes/migrations/__pycache__/0020_rename_minstructor_classes_instructor.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0021_alter_classes_instructor.cpython-310.pyc b/classes/migrations/__pycache__/0021_alter_classes_instructor.cpython-310.pyc new file mode 100644 index 0000000..98d6e5e Binary files /dev/null and b/classes/migrations/__pycache__/0021_alter_classes_instructor.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0022_alter_classes_instructor.cpython-310.pyc b/classes/migrations/__pycache__/0022_alter_classes_instructor.cpython-310.pyc new file mode 100644 index 0000000..69ba176 Binary files /dev/null and b/classes/migrations/__pycache__/0022_alter_classes_instructor.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/0023_alter_classes_instructor.cpython-310.pyc b/classes/migrations/__pycache__/0023_alter_classes_instructor.cpython-310.pyc new file mode 100644 index 0000000..1e3a886 Binary files /dev/null and b/classes/migrations/__pycache__/0023_alter_classes_instructor.cpython-310.pyc differ diff --git a/classes/migrations/__pycache__/__init__.cpython-310.pyc b/classes/migrations/__pycache__/__init__.cpython-310.pyc index 1dcf509..e1ae1d1 100644 Binary files a/classes/migrations/__pycache__/__init__.cpython-310.pyc and b/classes/migrations/__pycache__/__init__.cpython-310.pyc differ diff --git a/classes/models.py b/classes/models.py index ec9b7cc..70181f9 100644 --- a/classes/models.py +++ b/classes/models.py @@ -1,10 +1,28 @@ from django.db import models # Create your models here. + +class Subject(models.Model): + acronym = models.CharField(max_length=200) + full_name = models.CharField(max_length=200) + + def __str__(self) -> str: + return f"{self.pk} {self.acronym}: {self.full_name}" + +class Teacher(models.Model): + First_Name = models.CharField(max_length=200) + Last_Name = models.CharField(max_length=200) + + def __str__(self) -> str: + return f"{self.pk} {self.Last_Name}, {self.First_Name}" + class Classes(models.Model): MJC_Class_Name = models.CharField(max_length=200) Common_Class_Name = models.CharField(max_length=200) MJC_Units = models.IntegerField() + Section_Number = models.CharField(max_length=200) + Instructor = models.ManyToManyField(Teacher, related_name="Teacher") + In_Subject = models.ForeignKey(Subject, related_name="Subject", on_delete=models.DO_NOTHING) def __str__(self) -> str: return self.MJC_Class_Name \ No newline at end of file diff --git a/db.sqlite3 b/db.sqlite3 index eabade8..93997f5 100644 Binary files a/db.sqlite3 and b/db.sqlite3 differ diff --git a/student/__pycache__/__init__.cpython-310.pyc b/student/__pycache__/__init__.cpython-310.pyc index 4247aaa..8ec391f 100644 Binary files a/student/__pycache__/__init__.cpython-310.pyc and b/student/__pycache__/__init__.cpython-310.pyc differ diff --git a/student/__pycache__/admin.cpython-310.pyc b/student/__pycache__/admin.cpython-310.pyc index cd589ce..cd28a14 100644 Binary files a/student/__pycache__/admin.cpython-310.pyc and b/student/__pycache__/admin.cpython-310.pyc differ diff --git a/student/__pycache__/apps.cpython-310.pyc b/student/__pycache__/apps.cpython-310.pyc index 9709683..b7deeb4 100644 Binary files a/student/__pycache__/apps.cpython-310.pyc and b/student/__pycache__/apps.cpython-310.pyc differ diff --git a/student/__pycache__/models.cpython-310.pyc b/student/__pycache__/models.cpython-310.pyc index 23b8a88..4099192 100644 Binary files a/student/__pycache__/models.cpython-310.pyc and b/student/__pycache__/models.cpython-310.pyc differ diff --git a/student/__pycache__/serializers.cpython-310.pyc b/student/__pycache__/serializers.cpython-310.pyc index 67007f7..3766b37 100644 Binary files a/student/__pycache__/serializers.cpython-310.pyc and b/student/__pycache__/serializers.cpython-310.pyc differ diff --git a/student/__pycache__/urls.cpython-310.pyc b/student/__pycache__/urls.cpython-310.pyc index 5e50c92..b5d0ef5 100644 Binary files a/student/__pycache__/urls.cpython-310.pyc and b/student/__pycache__/urls.cpython-310.pyc differ diff --git a/student/__pycache__/views.cpython-310.pyc b/student/__pycache__/views.cpython-310.pyc index 93e3676..36f406a 100644 Binary files a/student/__pycache__/views.cpython-310.pyc and b/student/__pycache__/views.cpython-310.pyc differ diff --git a/student/migrations/0001_initial.py b/student/migrations/0001_initial.py index 5ca284c..068a6b4 100644 --- a/student/migrations/0001_initial.py +++ b/student/migrations/0001_initial.py @@ -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)), ], ), diff --git a/student/migrations/0002_remove_student_classes_student_classes.py b/student/migrations/0002_remove_student_classes_student_classes.py deleted file mode 100644 index 3073fe5..0000000 --- a/student/migrations/0002_remove_student_classes_student_classes.py +++ /dev/null @@ -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'), - ), - ] diff --git a/student/migrations/__pycache__/0001_initial.cpython-310.pyc b/student/migrations/__pycache__/0001_initial.cpython-310.pyc index 7992896..ae455b1 100644 Binary files a/student/migrations/__pycache__/0001_initial.cpython-310.pyc and b/student/migrations/__pycache__/0001_initial.cpython-310.pyc differ diff --git a/student/migrations/__pycache__/0002_remove_student_classes_student_classes.cpython-310.pyc b/student/migrations/__pycache__/0002_remove_student_classes_student_classes.cpython-310.pyc index 56c2b0e..e70f22b 100644 Binary files a/student/migrations/__pycache__/0002_remove_student_classes_student_classes.cpython-310.pyc and b/student/migrations/__pycache__/0002_remove_student_classes_student_classes.cpython-310.pyc differ diff --git a/student/migrations/__pycache__/0003_student_desired_university_student_major.cpython-310.pyc b/student/migrations/__pycache__/0003_student_desired_university_student_major.cpython-310.pyc new file mode 100644 index 0000000..dd62b58 Binary files /dev/null and b/student/migrations/__pycache__/0003_student_desired_university_student_major.cpython-310.pyc differ diff --git a/student/migrations/__pycache__/__init__.cpython-310.pyc b/student/migrations/__pycache__/__init__.cpython-310.pyc index 5263f8e..9a4ef23 100644 Binary files a/student/migrations/__pycache__/__init__.cpython-310.pyc and b/student/migrations/__pycache__/__init__.cpython-310.pyc differ diff --git a/student/models.py b/student/models.py index ac35ead..d5f0788 100644 --- a/student/models.py +++ b/student/models.py @@ -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() \ No newline at end of file diff --git a/student/serializers.py b/student/serializers.py index 68b4ba2..aa79073 100644 --- a/student/serializers.py +++ b/student/serializers.py @@ -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"] \ No newline at end of file + fields = ["id", "user", "w_number", "classes"] + +class RecommendedClasses(serializers.ModelSerializer): + class Meta: + model = Classes + fields = ["id", "MJC_Class_Name", "Common_Class_Name", "MJC_Units"] \ No newline at end of file diff --git a/student/urls.py b/student/urls.py index 4380f87..a307cac 100644 --- a/student/urls.py +++ b/student/urls.py @@ -4,4 +4,5 @@ from . import views urlpatterns = [ path("all_students/", views.StudentListCreate.as_view(), name="student-view-createlist"), path("/", views.StudentRetrieveUpdateDestroy.as_view(), name="update"), + path("/recommended_classes", views.RecommendedClassesView.as_view(), name="recommended"), ] \ No newline at end of file diff --git a/student/views.py b/student/views.py index 830b172..9c64bab 100644 --- a/student/views.py +++ b/student/views.py @@ -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" \ No newline at end of file + 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 + diff --git a/university/__pycache__/__init__.cpython-310.pyc b/university/__pycache__/__init__.cpython-310.pyc index f206977..286320f 100644 Binary files a/university/__pycache__/__init__.cpython-310.pyc and b/university/__pycache__/__init__.cpython-310.pyc differ diff --git a/university/__pycache__/admin.cpython-310.pyc b/university/__pycache__/admin.cpython-310.pyc index b87efd5..57e6810 100644 Binary files a/university/__pycache__/admin.cpython-310.pyc and b/university/__pycache__/admin.cpython-310.pyc differ diff --git a/university/__pycache__/apps.cpython-310.pyc b/university/__pycache__/apps.cpython-310.pyc index 82cdc0d..4dba8bc 100644 Binary files a/university/__pycache__/apps.cpython-310.pyc and b/university/__pycache__/apps.cpython-310.pyc differ diff --git a/university/__pycache__/models.cpython-310.pyc b/university/__pycache__/models.cpython-310.pyc index 36272f1..8f0d108 100644 Binary files a/university/__pycache__/models.cpython-310.pyc and b/university/__pycache__/models.cpython-310.pyc differ diff --git a/university/__pycache__/serializers.cpython-310.pyc b/university/__pycache__/serializers.cpython-310.pyc index 5a52583..fd53b04 100644 Binary files a/university/__pycache__/serializers.cpython-310.pyc and b/university/__pycache__/serializers.cpython-310.pyc differ diff --git a/university/__pycache__/urls.cpython-310.pyc b/university/__pycache__/urls.cpython-310.pyc index a3dafdb..071bba6 100644 Binary files a/university/__pycache__/urls.cpython-310.pyc and b/university/__pycache__/urls.cpython-310.pyc differ diff --git a/university/__pycache__/views.cpython-310.pyc b/university/__pycache__/views.cpython-310.pyc index 151fd3d..2a27c43 100644 Binary files a/university/__pycache__/views.cpython-310.pyc and b/university/__pycache__/views.cpython-310.pyc differ diff --git a/university/migrations/0001_initial.py b/university/migrations/0001_initial.py index 5885812..834742e 100644 --- a/university/migrations/0001_initial.py +++ b/university/migrations/0001_initial.py @@ -1,5 +1,6 @@ -# Generated by Django 5.0.1 on 2024-06-10 02:49 +# Generated by Django 5.0.6 on 2024-06-23 06:06 +import django.db.models.deletion from django.db import migrations, models @@ -13,19 +14,10 @@ class Migration(migrations.Migration): operations = [ migrations.CreateModel( - name='Sections', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('area_name', models.CharField(max_length=200)), - ('classes', models.ManyToManyField(to='classes.classes')), - ], - ), - migrations.CreateModel( - name='Agreements', + name='Agreement', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('major', models.CharField(max_length=200)), - ('sections', models.ManyToManyField(to='university.sections')), ], ), migrations.CreateModel( @@ -33,7 +25,21 @@ class Migration(migrations.Migration): fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=200)), - ('agreements', models.ManyToManyField(to='university.agreements')), ], ), + migrations.CreateModel( + name='Section', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('area_name', models.CharField(max_length=200)), + ('number_of_required_courses', models.IntegerField()), + ('agreement', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='sections', to='university.agreement')), + ('classes', models.ManyToManyField(related_name='classes', to='classes.classes')), + ], + ), + migrations.AddField( + model_name='agreement', + name='university', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='agreements', to='university.university'), + ), ] diff --git a/university/migrations/0002_rename_agreements_agreement_rename_sections_section.py b/university/migrations/0002_rename_agreements_agreement_rename_sections_section.py deleted file mode 100644 index 018022e..0000000 --- a/university/migrations/0002_rename_agreements_agreement_rename_sections_section.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 5.0.1 on 2024-06-10 02:52 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('classes', '0001_initial'), - ('university', '0001_initial'), - ] - - operations = [ - migrations.RenameModel( - old_name='Agreements', - new_name='Agreement', - ), - migrations.RenameModel( - old_name='Sections', - new_name='Section', - ), - ] diff --git a/university/migrations/0003_section_number_of_required_courses.py b/university/migrations/0003_section_number_of_required_courses.py deleted file mode 100644 index 76f7a07..0000000 --- a/university/migrations/0003_section_number_of_required_courses.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 5.0.1 on 2024-06-10 03:42 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('university', '0002_rename_agreements_agreement_rename_sections_section'), - ] - - operations = [ - migrations.AddField( - model_name='section', - name='number_of_required_courses', - field=models.IntegerField(default=1), - preserve_default=False, - ), - ] diff --git a/university/migrations/0004_remove_agreement_sections_and_more.py b/university/migrations/0004_remove_agreement_sections_and_more.py deleted file mode 100644 index 8793447..0000000 --- a/university/migrations/0004_remove_agreement_sections_and_more.py +++ /dev/null @@ -1,34 +0,0 @@ -# Generated by Django 5.0.6 on 2024-06-18 21:20 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('university', '0003_section_number_of_required_courses'), - ] - - operations = [ - migrations.RemoveField( - model_name='agreement', - name='sections', - ), - migrations.RemoveField( - model_name='university', - name='agreements', - ), - migrations.AddField( - model_name='agreement', - name='university', - field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='university.university'), - preserve_default=False, - ), - migrations.AddField( - model_name='section', - name='agreement', - field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='university.agreement'), - preserve_default=False, - ), - ] diff --git a/university/migrations/__pycache__/0001_initial.cpython-310.pyc b/university/migrations/__pycache__/0001_initial.cpython-310.pyc index 8e132d6..a4d2452 100644 Binary files a/university/migrations/__pycache__/0001_initial.cpython-310.pyc and b/university/migrations/__pycache__/0001_initial.cpython-310.pyc differ diff --git a/university/migrations/__pycache__/0002_rename_agreements_agreement_rename_sections_section.cpython-310.pyc b/university/migrations/__pycache__/0002_rename_agreements_agreement_rename_sections_section.cpython-310.pyc deleted file mode 100644 index 8efd9a1..0000000 Binary files a/university/migrations/__pycache__/0002_rename_agreements_agreement_rename_sections_section.cpython-310.pyc and /dev/null differ diff --git a/university/migrations/__pycache__/0003_section_number_of_required_courses.cpython-310.pyc b/university/migrations/__pycache__/0003_section_number_of_required_courses.cpython-310.pyc deleted file mode 100644 index 197ca2a..0000000 Binary files a/university/migrations/__pycache__/0003_section_number_of_required_courses.cpython-310.pyc and /dev/null differ diff --git a/university/migrations/__pycache__/0004_remove_agreement_sections_and_more.cpython-310.pyc b/university/migrations/__pycache__/0004_remove_agreement_sections_and_more.cpython-310.pyc deleted file mode 100644 index 43c58c5..0000000 Binary files a/university/migrations/__pycache__/0004_remove_agreement_sections_and_more.cpython-310.pyc and /dev/null differ diff --git a/university/migrations/__pycache__/__init__.cpython-310.pyc b/university/migrations/__pycache__/__init__.cpython-310.pyc index 9166133..6db1925 100644 Binary files a/university/migrations/__pycache__/__init__.cpython-310.pyc and b/university/migrations/__pycache__/__init__.cpython-310.pyc differ diff --git a/university/models.py b/university/models.py index 5dc7597..21fec37 100644 --- a/university/models.py +++ b/university/models.py @@ -12,16 +12,16 @@ class University(models.Model): class Agreement(models.Model): major = models.CharField(max_length=200) - university = models.ForeignKey(University, on_delete=models.CASCADE) + university = models.ForeignKey(University, related_name="agreements", on_delete=models.CASCADE) def __str__(self) -> str: - return self.major + return f"{self.major} {self.university.name}" class Section(models.Model): area_name = models.CharField(max_length=200) number_of_required_courses = models.IntegerField() - classes = models.ManyToManyField(Classes) - agreement = models.ForeignKey(Agreement, on_delete=models.CASCADE) + classes = models.ManyToManyField(Classes, related_name="classes") + agreement = models.ForeignKey(Agreement, related_name="sections", on_delete=models.CASCADE) def __str__(self) -> str: - return self.area_name \ No newline at end of file + return f"{self.area_name} {self.agreement.major} {self.agreement.university}" \ No newline at end of file diff --git a/university/serializers.py b/university/serializers.py index 053fb90..ae5f195 100644 --- a/university/serializers.py +++ b/university/serializers.py @@ -1,24 +1,6 @@ from rest_framework import serializers from .models import University, Agreement, Section -class UniversitySerializer(serializers.ModelSerializer): - - class Meta: - model = University - fields = ["name"] - -class AgreementsSerializer(serializers.ModelSerializer): - - # sections = serializers.SlugRelatedField( - # many = True, - # read_only = True, - # slug_field = "area_name" - # ) - - class Meta: - model = Agreement - fields = ["major", "university"] - class SectionsSerializer(serializers.ModelSerializer): classes = serializers.SlugRelatedField( @@ -29,4 +11,19 @@ class SectionsSerializer(serializers.ModelSerializer): class Meta: model = Section - fields = ["area_name", "number_of_required_courses", "classes", "agreement"] \ No newline at end of file + fields = ["area_name", "number_of_required_courses", "classes", "agreement"] + + +class AgreementsSerializer(serializers.ModelSerializer): + sections = SectionsSerializer(many=True) + + class Meta: + model = Agreement + fields = ["major", "university", "sections"] + +class UniversitySerializer(serializers.ModelSerializer): + agreements = AgreementsSerializer(many=True) + + class Meta: + model = University + fields = ["id", "name", "agreements"] \ No newline at end of file