From 2376dc74305326502cfcad97bbb4b6e26dda97ed Mon Sep 17 00:00:00 2001 From: Raffu Khondaker <2022rkhondak@tjhsst.edu> Date: Sat, 6 Jun 2020 18:06:03 -0400 Subject: [PATCH] api-attemp1 --- Website/api/maker.py | 139 ++++++++++++++++++ .../api/migrations/0009_auto_20200606_1859.py | 28 ++++ .../api/migrations/0010_auto_20200606_1910.py | 40 +++++ .../migrations/0011_classes_assignments.py | 19 +++ .../0012_remove_student_assignments.py | 17 +++ .../api/migrations/0013_auto_20200606_2004.py | 27 ++++ .../api/migrations/0014_auto_20200606_2005.py | 32 ++++ .../api/migrations/0015_auto_20200606_2023.py | 32 ++++ .../api/migrations/0016_classes_teachers.py | 19 +++ .../api/migrations/0017_auto_20200606_2101.py | 35 +++++ .../api/migrations/0018_auto_20200606_2107.py | 18 +++ .../api/migrations/0019_auto_20200606_2126.py | 31 ++++ Website/api/models.py | 45 +++--- Website/api/serializers.py | 20 +-- Website/skoolsite/urls.py | 5 +- 15 files changed, 470 insertions(+), 37 deletions(-) create mode 100644 Website/api/maker.py create mode 100644 Website/api/migrations/0009_auto_20200606_1859.py create mode 100644 Website/api/migrations/0010_auto_20200606_1910.py create mode 100644 Website/api/migrations/0011_classes_assignments.py create mode 100644 Website/api/migrations/0012_remove_student_assignments.py create mode 100644 Website/api/migrations/0013_auto_20200606_2004.py create mode 100644 Website/api/migrations/0014_auto_20200606_2005.py create mode 100644 Website/api/migrations/0015_auto_20200606_2023.py create mode 100644 Website/api/migrations/0016_classes_teachers.py create mode 100644 Website/api/migrations/0017_auto_20200606_2101.py create mode 100644 Website/api/migrations/0018_auto_20200606_2107.py create mode 100644 Website/api/migrations/0019_auto_20200606_2126.py diff --git a/Website/api/maker.py b/Website/api/maker.py new file mode 100644 index 0000000..eaea2c1 --- /dev/null +++ b/Website/api/maker.py @@ -0,0 +1,139 @@ +from api.models import Assignment, Student, Classes, Teacher +from datetime import datetime + +#students +raffu = Student( + first_name = "Raffu", + last_name = "Khondaker", + student_id = 1579460, + webmail = "2022rkhondak@tjhsst.edu", + grade = 10, +) +raffu.save() + +#teachers +ng = Teacher( + first_name = "Kim", + last_name = "Ng", +) + +ng.save() + +chao = Teacher( + first_name = "Susie", + last_name = "Lebryk-Chao", +) + +chao.save() + +#Assignments +A1 = Assignment( + name='Week1_HW', + due_date=datetime.now(), + +) +A1.save() + +A2 = Assignment( + name='Week2_HW', + due_date=datetime.now(), + +) +A2.save() + +A3 = Assignment( + name='Journal1', + due_date=datetime.now(), +) +A3.save() + +#classes +C1 = Classes( + name='Math5', + +) +C1.save() + +C2 = Classes( + name='English', +) +C2.save() + +C2.teachers = chao +C2.students.add(raffu) +C2.save() + +C1.teachers = ng +C1.students.add(raffu) +C1.save() + +################################################################################################################ +from api.models import Assignment, Student, Classes, Teacher +from datetime import datetime + +A1 = Assignment( + name='Week1_HW', + due_date=datetime.now(), + +) +A1.save() + +A2 = Assignment( + name='Week2_HW', + due_date=datetime.now(), + +) +A2.save() + +A3 = Assignment( + name='Journal1', + due_date=datetime.now(), +) +A3.save() + +#classes +math = Classes( + name='Math5', + +) +math.save() +math.assignments.add(A1) +math.assignments.add(A2) +math.save() + +english = Classes( + name='English', +) +english.save() +english.assignments.add(A3) +english.save() + +#students +raffu = Student( + first_name = "Raffu", + last_name = "Khondaker", + student_id = 1579460, + webmail = "2022rkhondak@tjhsst.edu", + grade = 10, +) +raffu.save() +raffu.classes.add(math) +raffu.classes.add(english) +raffu.save() + +#teachers +ng = Teacher( + first_name = "Kim", + last_name = "Ng", +) +ng.save() +ng.classes.add(math) +ng.save() + +chao = Teacher( + first_name = "Susie", + last_name = "Lebryk-Chao", +) +chao.save() +chao.classes.add(english) +chao.save() diff --git a/Website/api/migrations/0009_auto_20200606_1859.py b/Website/api/migrations/0009_auto_20200606_1859.py new file mode 100644 index 0000000..dd679fd --- /dev/null +++ b/Website/api/migrations/0009_auto_20200606_1859.py @@ -0,0 +1,28 @@ +# Generated by Django 3.0.7 on 2020-06-06 18:59 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('api', '0008_auto_20200606_1839'), + ] + + operations = [ + migrations.RemoveField( + model_name='classes', + name='teachers', + ), + migrations.AddField( + model_name='student', + name='assignments', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='api.Assignment'), + ), + migrations.AlterField( + model_name='student', + name='classes', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='api.Classes'), + ), + ] diff --git a/Website/api/migrations/0010_auto_20200606_1910.py b/Website/api/migrations/0010_auto_20200606_1910.py new file mode 100644 index 0000000..e437c74 --- /dev/null +++ b/Website/api/migrations/0010_auto_20200606_1910.py @@ -0,0 +1,40 @@ +# Generated by Django 3.0.7 on 2020-06-06 19:10 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('api', '0009_auto_20200606_1859'), + ] + + operations = [ + migrations.RemoveField( + model_name='assignment', + name='url', + ), + migrations.RemoveField( + model_name='classes', + name='url', + ), + migrations.RemoveField( + model_name='student', + name='url', + ), + migrations.RemoveField( + model_name='teacher', + name='url', + ), + migrations.AddField( + model_name='teacher', + name='classes', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='api.Classes'), + ), + migrations.AddField( + model_name='teacher', + name='students', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='api.Student'), + ), + ] diff --git a/Website/api/migrations/0011_classes_assignments.py b/Website/api/migrations/0011_classes_assignments.py new file mode 100644 index 0000000..e4f45ed --- /dev/null +++ b/Website/api/migrations/0011_classes_assignments.py @@ -0,0 +1,19 @@ +# Generated by Django 3.0.7 on 2020-06-06 19:16 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('api', '0010_auto_20200606_1910'), + ] + + operations = [ + migrations.AddField( + model_name='classes', + name='assignments', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='api.Assignment'), + ), + ] diff --git a/Website/api/migrations/0012_remove_student_assignments.py b/Website/api/migrations/0012_remove_student_assignments.py new file mode 100644 index 0000000..a3de13c --- /dev/null +++ b/Website/api/migrations/0012_remove_student_assignments.py @@ -0,0 +1,17 @@ +# Generated by Django 3.0.7 on 2020-06-06 19:47 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('api', '0011_classes_assignments'), + ] + + operations = [ + migrations.RemoveField( + model_name='student', + name='assignments', + ), + ] diff --git a/Website/api/migrations/0013_auto_20200606_2004.py b/Website/api/migrations/0013_auto_20200606_2004.py new file mode 100644 index 0000000..42c91fa --- /dev/null +++ b/Website/api/migrations/0013_auto_20200606_2004.py @@ -0,0 +1,27 @@ +# Generated by Django 3.0.7 on 2020-06-06 20:04 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('api', '0012_remove_student_assignments'), + ] + + operations = [ + migrations.RemoveField( + model_name='classes', + name='assignments', + ), + migrations.RemoveField( + model_name='teacher', + name='students', + ), + migrations.AddField( + model_name='assignment', + name='classes', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='api.Classes'), + ), + ] diff --git a/Website/api/migrations/0014_auto_20200606_2005.py b/Website/api/migrations/0014_auto_20200606_2005.py new file mode 100644 index 0000000..c292e87 --- /dev/null +++ b/Website/api/migrations/0014_auto_20200606_2005.py @@ -0,0 +1,32 @@ +# Generated by Django 3.0.7 on 2020-06-06 20:05 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('api', '0013_auto_20200606_2004'), + ] + + operations = [ + migrations.RemoveField( + model_name='student', + name='classes', + ), + migrations.RemoveField( + model_name='teacher', + name='classes', + ), + migrations.AddField( + model_name='classes', + name='students', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='api.Student'), + ), + migrations.AddField( + model_name='classes', + name='teachers', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='api.Teacher'), + ), + ] diff --git a/Website/api/migrations/0015_auto_20200606_2023.py b/Website/api/migrations/0015_auto_20200606_2023.py new file mode 100644 index 0000000..4d3c59c --- /dev/null +++ b/Website/api/migrations/0015_auto_20200606_2023.py @@ -0,0 +1,32 @@ +# Generated by Django 3.0.7 on 2020-06-06 20:23 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('api', '0014_auto_20200606_2005'), + ] + + operations = [ + migrations.RemoveField( + model_name='assignment', + name='classes', + ), + migrations.RemoveField( + model_name='classes', + name='teachers', + ), + migrations.AddField( + model_name='assignment', + name='students', + field=models.ManyToManyField(default='', through='api.Classes', to='api.Student'), + ), + migrations.AddField( + model_name='classes', + name='assignments', + field=models.ForeignKey(default='', on_delete=django.db.models.deletion.CASCADE, to='api.Assignment'), + ), + ] diff --git a/Website/api/migrations/0016_classes_teachers.py b/Website/api/migrations/0016_classes_teachers.py new file mode 100644 index 0000000..cf81601 --- /dev/null +++ b/Website/api/migrations/0016_classes_teachers.py @@ -0,0 +1,19 @@ +# Generated by Django 3.0.7 on 2020-06-06 20:24 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('api', '0015_auto_20200606_2023'), + ] + + operations = [ + migrations.AddField( + model_name='classes', + name='teachers', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='api.Teacher'), + ), + ] diff --git a/Website/api/migrations/0017_auto_20200606_2101.py b/Website/api/migrations/0017_auto_20200606_2101.py new file mode 100644 index 0000000..eb4c1d6 --- /dev/null +++ b/Website/api/migrations/0017_auto_20200606_2101.py @@ -0,0 +1,35 @@ +# Generated by Django 3.0.7 on 2020-06-06 21:01 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('api', '0016_classes_teachers'), + ] + + operations = [ + migrations.RemoveField( + model_name='assignment', + name='students', + ), + migrations.RemoveField( + model_name='classes', + name='assignments', + ), + migrations.AddField( + model_name='classes', + name='assignments', + field=models.ManyToManyField(default='', to='api.Assignment'), + ), + migrations.RemoveField( + model_name='classes', + name='students', + ), + migrations.AddField( + model_name='classes', + name='students', + field=models.ManyToManyField(null=True, to='api.Student'), + ), + ] diff --git a/Website/api/migrations/0018_auto_20200606_2107.py b/Website/api/migrations/0018_auto_20200606_2107.py new file mode 100644 index 0000000..e98cde3 --- /dev/null +++ b/Website/api/migrations/0018_auto_20200606_2107.py @@ -0,0 +1,18 @@ +# Generated by Django 3.0.7 on 2020-06-06 21:07 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('api', '0017_auto_20200606_2101'), + ] + + operations = [ + migrations.AlterField( + model_name='classes', + name='students', + field=models.ManyToManyField(default='', to='api.Student'), + ), + ] diff --git a/Website/api/migrations/0019_auto_20200606_2126.py b/Website/api/migrations/0019_auto_20200606_2126.py new file mode 100644 index 0000000..8348e92 --- /dev/null +++ b/Website/api/migrations/0019_auto_20200606_2126.py @@ -0,0 +1,31 @@ +# Generated by Django 3.0.7 on 2020-06-06 21:26 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('api', '0018_auto_20200606_2107'), + ] + + operations = [ + migrations.RemoveField( + model_name='classes', + name='students', + ), + migrations.RemoveField( + model_name='classes', + name='teachers', + ), + migrations.AddField( + model_name='student', + name='classes', + field=models.ManyToManyField(default='', to='api.Classes'), + ), + migrations.AddField( + model_name='teacher', + name='classes', + field=models.ManyToManyField(default='', to='api.Classes'), + ), + ] diff --git a/Website/api/models.py b/Website/api/models.py index 71e4135..e49af7f 100644 --- a/Website/api/models.py +++ b/Website/api/models.py @@ -1,36 +1,33 @@ from django.db import models +class Assignment(models.Model): + name=models.CharField(max_length=100) + due_date=models.DateTimeField() + def __str__(self): + return '%s' % (self.name) + +class Classes(models.Model): + name = models.CharField(max_length=100) + assignments = models.ManyToManyField(Assignment, default="") + def save(self, *args, **kwargs): + return super(Classes, self).save(*args, **kwargs) + +class Teacher(models.Model): + created = models.DateTimeField(auto_now_add=True) + first_name = models.CharField(max_length=100) + last_name = models.CharField(max_length=100) + classes = models.ManyToManyField(Classes, default="") + class Student(models.Model): - url = models.URLField() created = models.DateTimeField(auto_now_add=True) first_name = models.CharField(max_length=100) last_name = models.CharField(max_length=100) student_id = models.IntegerField(primary_key=True) webmail = models.EmailField(blank=True) grade = models.IntegerField() - classes = models.ForeignKey('Classes', on_delete=models.CASCADE,blank=True) - -class Teacher(models.Model): - url = models.URLField() - created = models.DateTimeField(auto_now_add=True) - first_name = models.CharField(max_length=100) - last_name = models.CharField(max_length=100) - #student_id = models.IntegerField(primary_key=True) - -class Classes(models.Model): - url = models.URLField() - name = models.CharField(max_length=100) - teachers = models.ForeignKey('Teacher', on_delete=models.CASCADE,null=True) - + classes = models.ManyToManyField(Classes, default="") def save(self, *args, **kwargs): - return super(Classes, self).save(*args, **kwargs) - -class Assignment(models.Model): - url = models.URLField() - name=models.CharField(max_length=100) - due_date=models.DateTimeField() - - def __str__(self): - return '%d' % (self.name) + return super(Student, self).save(*args, **kwargs) + diff --git a/Website/api/serializers.py b/Website/api/serializers.py index 1c0fa80..e6a3733 100644 --- a/Website/api/serializers.py +++ b/Website/api/serializers.py @@ -7,26 +7,22 @@ class AssignmentSerializer(serializers.HyperlinkedModelSerializer): model = Assignment fields = ['name', 'due_date', 'url'] -class StudentSerializer(serializers.HyperlinkedModelSerializer): - assignments = AssignmentSerializer(many=True, read_only=True) - class Meta: - model = Student - fields = ['url', 'first_name', 'last_name', 'assignments'] - class ClassesSerializer(serializers.HyperlinkedModelSerializer): assignments = AssignmentSerializer(many=True, read_only=True,allow_null=True) - students = StudentSerializer(many=True, read_only=True, allow_null=True) class Meta: model = Classes - fields = ['url', 'name', 'students', 'assignments'] - - def create(self, validated_data): - return Classes.objects.create(**validated_data) + fields = ['url', 'name','assignments'] +class StudentSerializer(serializers.HyperlinkedModelSerializer): + classes = ClassesSerializer(many=True, read_only=True,allow_null=True) + class Meta: + model = Student + fields = ['url', 'first_name', 'last_name', 'grade','webmail','student_id','classes'] class TeacherSerializer(serializers.ModelSerializer): - classes = ClassesSerializer(many=True, read_only=True) + classes = ClassesSerializer(many=True, read_only=True,allow_null=True) class Meta: model = Teacher fields = ['url', 'first_name', 'last_name', 'classes'] + diff --git a/Website/skoolsite/urls.py b/Website/skoolsite/urls.py index cb665d5..0ca2d12 100644 --- a/Website/skoolsite/urls.py +++ b/Website/skoolsite/urls.py @@ -1,6 +1,7 @@ from django.urls import include, path from rest_framework import routers from api import views +from django.contrib import admin router = routers.DefaultRouter() router.register(r'students', views.StudentViewSet) @@ -12,5 +13,7 @@ router.register(r'classes', views.ClassesViewSet) # Additionally, we include login URLs for the browsable API. urlpatterns = [ path('', include(router.urls)), - path('api-auth/', include('rest_framework.urls', namespace='rest_framework')) + path('api-auth/', include('rest_framework.urls', namespace='rest_framework')), + path('admin/', admin.site.urls), + ] \ No newline at end of file