api-attemp1

This commit is contained in:
Raffu Khondaker 2020-06-06 18:06:03 -04:00
parent 60d16b9e6a
commit 2376dc7430
15 changed files with 470 additions and 37 deletions

139
Website/api/maker.py Normal file
View File

@ -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()

View File

@ -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'),
),
]

View File

@ -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'),
),
]

View File

@ -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'),
),
]

View File

@ -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',
),
]

View File

@ -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'),
),
]

View File

@ -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'),
),
]

View File

@ -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'),
),
]

View File

@ -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'),
),
]

View File

@ -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'),
),
]

View File

@ -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'),
),
]

View File

@ -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'),
),
]

View File

@ -1,36 +1,33 @@
from django.db import models 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): class Student(models.Model):
url = models.URLField()
created = models.DateTimeField(auto_now_add=True) created = models.DateTimeField(auto_now_add=True)
first_name = models.CharField(max_length=100) first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100) last_name = models.CharField(max_length=100)
student_id = models.IntegerField(primary_key=True) student_id = models.IntegerField(primary_key=True)
webmail = models.EmailField(blank=True) webmail = models.EmailField(blank=True)
grade = models.IntegerField() grade = models.IntegerField()
classes = models.ForeignKey('Classes', on_delete=models.CASCADE,blank=True) classes = models.ManyToManyField(Classes, default="")
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)
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
return super(Classes, self).save(*args, **kwargs) return super(Student, 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)

View File

@ -7,26 +7,22 @@ class AssignmentSerializer(serializers.HyperlinkedModelSerializer):
model = Assignment model = Assignment
fields = ['name', 'due_date', 'url'] 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): class ClassesSerializer(serializers.HyperlinkedModelSerializer):
assignments = AssignmentSerializer(many=True, read_only=True,allow_null=True) assignments = AssignmentSerializer(many=True, read_only=True,allow_null=True)
students = StudentSerializer(many=True, read_only=True, allow_null=True)
class Meta: class Meta:
model = Classes model = Classes
fields = ['url', 'name', 'students', 'assignments'] fields = ['url', 'name','assignments']
def create(self, validated_data):
return Classes.objects.create(**validated_data)
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): class TeacherSerializer(serializers.ModelSerializer):
classes = ClassesSerializer(many=True, read_only=True) classes = ClassesSerializer(many=True, read_only=True,allow_null=True)
class Meta: class Meta:
model = Teacher model = Teacher
fields = ['url', 'first_name', 'last_name', 'classes'] fields = ['url', 'first_name', 'last_name', 'classes']

View File

@ -1,6 +1,7 @@
from django.urls import include, path from django.urls import include, path
from rest_framework import routers from rest_framework import routers
from api import views from api import views
from django.contrib import admin
router = routers.DefaultRouter() router = routers.DefaultRouter()
router.register(r'students', views.StudentViewSet) 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. # Additionally, we include login URLs for the browsable API.
urlpatterns = [ urlpatterns = [
path('', include(router.urls)), 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),
] ]