teacher field

This commit is contained in:
Raffu Khondaker 2020-06-15 20:31:38 -04:00
parent 51b5b21d40
commit aaa750e415
7 changed files with 46 additions and 48 deletions

View File

@ -1 +0,0 @@
{"username": "2022rkhondak", "grade": 10, "is_student": true, "password": "hackgroup1"}

View File

@ -9,7 +9,18 @@ import time
import pyperclip import pyperclip
from distutils.dir_util import copy_tree from distutils.dir_util import copy_tree
from datetime import datetime from datetime import datetime
from django.conf import settings
import django
from Website.config.settings import DATABASES, INSTALLED_APPS
INSTALLED_APPS.remove('users.apps.UsersConfig')
INSTALLED_APPS.remove('api')
INSTALLED_APPS.remove('skoolos.apps.SkoolosConfig')
INSTALLED_APPS.append('Website.api')
settings.configure(DATABASES=DATABASES, INSTALLED_APPS=INSTALLED_APPS)
django.setup()
from Website.api.models import *
#git clone student directory ==> <student-id>/classes/assignments #git clone student directory ==> <student-id>/classes/assignments
#get teacher info from api #get teacher info from api
@ -33,6 +44,10 @@ def getDB(url):
r = requests.get(url = url, auth=('raffukhondaker','hackgroup1')) r = requests.get(url = url, auth=('raffukhondaker','hackgroup1'))
print("GET:" + str(r.status_code)) print("GET:" + str(r.status_code))
return(r.json()) return(r.json())
def patchDB(data, url):
r = requests.patch(url = url, data=data, auth=('raffukhondaker','hackgroup1'))
print("PATH:" + str(r.status_code))
return(r.json())
def postDB(data, url): def postDB(data, url):
r = requests.post(url = url, data=data, auth=('raffukhondaker','hackgroup1')) r = requests.post(url = url, data=data, auth=('raffukhondaker','hackgroup1'))
@ -69,25 +84,10 @@ class Teacher:
self.git=data['git'] self.git=data['git']
self.username=data['ion_user'] self.username=data['ion_user']
self.url= "http://127.0.0.1:8000/api/teachers/" + self.username + "/" self.url= "http://127.0.0.1:8000/api/teachers/" + self.username + "/"
self.email = data['email']
#classes in id form (Example: 4,5) #classes in id form (Example: 4,5)
cid=data['classes'].split(",") #array
try: self.classes=data['classes']
cid.remove('')
except:
pass
try:
cid.remove("")
except:
pass
classes=[]
for c in cid:
url = "http://127.0.0.1:8000/api/classes/" + str(c) + "/"
classes.append(getDB(url))
self.classes = classes
self.sclass=str(data['classes'])
if(os.path.isdir(self.username + "/Students")): if(os.path.isdir(self.username + "/Students")):
print("Synced to " + self.username) print("Synced to " + self.username)
else: else:
@ -168,6 +168,7 @@ class Teacher:
#add to instance #add to instance
#upate self.classes #upate self.classes
self.classes.append(data) self.classes.append(data)
patchDB(data, self.url)
if(len(self.sclass)==0): if(len(self.sclass)==0):
self.sclass = data['name'] self.sclass = data['name']
else: else:

View File

@ -20,12 +20,27 @@ class Student(models.Model):
def __str__(self): def __str__(self):
return f"{self.user.username}'s Profile" return f"{self.user.username}'s Profile"
class Assignment(models.Model):
owner = models.ForeignKey('auth.User', related_name='assignments', on_delete=models.CASCADE)
name=models.CharField(max_length=100, primary_key=True)
due_date=models.DateTimeField()
# files = models.ManyToManyField(DefFiles)
files=models.CharField(max_length=100, default="", blank=True)
path=models.CharField(max_length=100)
classes=models.CharField(max_length=100)
teacher=models.CharField(max_length=100)
def __str__(self):
return '%s' % (self.name)
class Class(models.Model): class Class(models.Model):
owner = models.ForeignKey('auth.User', related_name='classes', on_delete=models.CASCADE)
teacher = models.CharField(max_length=100)
name = models.CharField(primary_key=True, max_length=100) name = models.CharField(primary_key=True, max_length=100)
description = models.CharField(default="Class Description", max_length=500) description = models.CharField(default="Class Description", max_length=500)
repo=models.URLField(default="", blank=True) repo=models.URLField(default="", blank=True)
path=models.CharField(max_length=100, default="") path=models.CharField(max_length=100, default="")
assignments=models.TextField(default="", blank=True) assignments=models.ManyToManyField(Assignment, blank=True)
default_file=models.CharField(max_length=100, default="", blank=True) default_file=models.CharField(max_length=100, default="", blank=True)
confirmed=models.ManyToManyField(Student, blank=True, related_name='confirmed') confirmed=models.ManyToManyField(Student, blank=True, related_name='confirmed')
unconfirmed=models.ManyToManyField(Student, blank=True, related_name='unconfirmed') unconfirmed=models.ManyToManyField(Student, blank=True, related_name='unconfirmed')
@ -61,22 +76,6 @@ class Teacher(models.Model):
# completed=models.TextField(default="", blank=True) # completed=models.TextField(default="", blank=True)
class Assignment(models.Model):
owner = models.ForeignKey('auth.User', related_name='assignments', on_delete=models.CASCADE)
name=models.CharField(max_length=100, primary_key=True)
due_date=models.DateTimeField()
# files = models.ManyToManyField(DefFiles)
files=models.CharField(max_length=100, default="", blank=True)
path=models.CharField(max_length=100)
classes=models.CharField(max_length=100)
teacher=models.CharField(max_length=100)
def __str__(self):
return '%s' % (self.name)
class DefFiles(models.Model): class DefFiles(models.Model):
name=models.CharField(max_length=100) name=models.CharField(max_length=100)
path=models.CharField(max_length=100) path=models.CharField(max_length=100)

View File

@ -34,7 +34,7 @@ class ClassSerializer(serializers.HyperlinkedModelSerializer):
class Meta: class Meta:
model = Class model = Class
# fields = ['url','name', 'repo','path', "teacher",'assignments',"default_file", 'confirmed', 'unconfirmed','owner'] # fields = ['url','name', 'repo','path', "teacher",'assignments',"default_file", 'confirmed', 'unconfirmed','owner']
fields = ['name', 'repo','path','assignments',"default_file", 'confirmed', 'unconfirmed'] fields = ['name', 'repo','path','assignments',"teacher","default_file", 'confirmed', 'unconfirmed','owner']
class StudentSerializer(serializers.HyperlinkedModelSerializer): class StudentSerializer(serializers.HyperlinkedModelSerializer):
# Class = ClassSerializer(many=True, read_only=True,allow_null=True) # Class = ClassSerializer(many=True, read_only=True,allow_null=True)
@ -44,7 +44,7 @@ class StudentSerializer(serializers.HyperlinkedModelSerializer):
fields = ['url','grade', 'ion_user','git','user','classes','added_to','completed', 'repo'] fields = ['url','grade', 'ion_user','git','user','classes','added_to','completed', 'repo']
class TeacherSerializer(serializers.ModelSerializer): class TeacherSerializer(serializers.ModelSerializer):
# Class = ClassSerializer(many=True, read_only=True,allow_null=True) #classes = ClassSerializer(many=True, read_only=True,allow_null=True)
#owner = serializers.ReadOnlyField(source='owner.username') #owner = serializers.ReadOnlyField(source='owner.username')
class Meta: class Meta:
model = Teacher model = Teacher

View File

@ -24,8 +24,6 @@ class StudentViewSet(viewsets.ModelViewSet):
queryset = Student.objects.all() queryset = Student.objects.all()
serializer_class = StudentSerializer serializer_class = StudentSerializer
permission_Class = [permissions.IsAuthenticated, IsOwnerOrReadOnly] permission_Class = [permissions.IsAuthenticated, IsOwnerOrReadOnly]
g, created = Group.objects.get_or_create(name='teachers')
def perform_create(self, serializer): def perform_create(self, serializer):
serializer.save(user=self.request.user) serializer.save(user=self.request.user)

View File

@ -40,7 +40,7 @@ def main():
URL = "http://127.0.0.1:8000/api/" URL = "http://127.0.0.1:8000/api/"
r = requests.get(url = URL) r = requests.get(url = URL)
except: except:
print("Stop any processes running on http://127.0.0.1:8000/ before continuing") print("Run Django server on http://127.0.0.1:8000/ before continuing")
sys.exit(0) sys.exit(0)
input("Welcome to SkoolOS. Press any key to create an account") input("Welcome to SkoolOS. Press any key to create an account")

17
snew.py
View File

@ -84,16 +84,17 @@ class Students:
# c = Class.objects.get(name='Math5') # c = Class.objects.get(name='Math5')
data = requests.get(url = "http://localhost:8000/api/classes/Math5", auth=('raffukhondaker','hackgroup1')).json() data = requests.get(url = "http://localhost:8000/api/classes/Math5", auth=('raffukhondaker','hackgroup1')).json()
c = Class(
name="data['name']" r = requests.post(url = "http://localhost:8000/api/classes/", data={'name':'English11', 'teacher':'eharris1', 'owner':2}, auth=('raffukhondaker','hackgroup1'))
)
# print("POST:" + str(r.status_code)) print("POST:" + str(r.status_code))
# print(r.json()) # print(r.json())
c = { # print(c.name)
'classes':"http://localhost:8000/api/classes/Math5/" # c = {
} # 'classes':c
# }
# print(c) # print(c)
r = requests.patch(url = "http://localhost:8000/api/teachers/2/", data=c, auth=('raffukhondaker','hackgroup1')) r = requests.patch(url = "http://localhost:8000/api/teachers/eharris1/", data={'classes':['English11']}, auth=('raffukhondaker','hackgroup1'))
print(r.json()) print(r.json())