diff --git a/.profiles b/.profiles deleted file mode 100644 index 544f6b1..0000000 --- a/.profiles +++ /dev/null @@ -1 +0,0 @@ -{"username": "2022rkhondak", "grade": 10, "is_student": true, "password": "hackgroup1"} \ No newline at end of file diff --git a/CLI/teacher.py b/CLI/teacher.py index fa82ca8..79673aa 100644 --- a/CLI/teacher.py +++ b/CLI/teacher.py @@ -9,7 +9,18 @@ import time import pyperclip from distutils.dir_util import copy_tree 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 ==> /classes/assignments #get teacher info from api @@ -33,6 +44,10 @@ def getDB(url): r = requests.get(url = url, auth=('raffukhondaker','hackgroup1')) print("GET:" + str(r.status_code)) 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): r = requests.post(url = url, data=data, auth=('raffukhondaker','hackgroup1')) @@ -69,25 +84,10 @@ class Teacher: self.git=data['git'] self.username=data['ion_user'] self.url= "http://127.0.0.1:8000/api/teachers/" + self.username + "/" - self.email = data['email'] #classes in id form (Example: 4,5) - cid=data['classes'].split(",") - try: - 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']) + #array + self.classes=data['classes'] if(os.path.isdir(self.username + "/Students")): print("Synced to " + self.username) else: @@ -168,6 +168,7 @@ class Teacher: #add to instance #upate self.classes self.classes.append(data) + patchDB(data, self.url) if(len(self.sclass)==0): self.sclass = data['name'] else: diff --git a/Website/api/models.py b/Website/api/models.py index 67bbd8b..fe87338 100644 --- a/Website/api/models.py +++ b/Website/api/models.py @@ -20,12 +20,27 @@ class Student(models.Model): def __str__(self): 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): + 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) description = models.CharField(default="Class Description", max_length=500) repo=models.URLField(default="", blank=True) 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) confirmed=models.ManyToManyField(Student, blank=True, related_name='confirmed') unconfirmed=models.ManyToManyField(Student, blank=True, related_name='unconfirmed') @@ -61,22 +76,6 @@ class Teacher(models.Model): # 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): name=models.CharField(max_length=100) path=models.CharField(max_length=100) diff --git a/Website/api/serializers.py b/Website/api/serializers.py index 2e6b2b8..5d87c60 100644 --- a/Website/api/serializers.py +++ b/Website/api/serializers.py @@ -34,7 +34,7 @@ class ClassSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Class # 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 = 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'] 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') class Meta: model = Teacher diff --git a/Website/api/views.py b/Website/api/views.py index 65de23f..fb95e11 100644 --- a/Website/api/views.py +++ b/Website/api/views.py @@ -24,8 +24,6 @@ class StudentViewSet(viewsets.ModelViewSet): queryset = Student.objects.all() serializer_class = StudentSerializer permission_Class = [permissions.IsAuthenticated, IsOwnerOrReadOnly] - g, created = Group.objects.get_or_create(name='teachers') - def perform_create(self, serializer): serializer.save(user=self.request.user) diff --git a/skoolos.py b/skoolos.py index bec621e..501429e 100644 --- a/skoolos.py +++ b/skoolos.py @@ -40,7 +40,7 @@ def main(): URL = "http://127.0.0.1:8000/api/" r = requests.get(url = URL) 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) input("Welcome to SkoolOS. Press any key to create an account") diff --git a/snew.py b/snew.py index b48f7ec..3edb6f4 100644 --- a/snew.py +++ b/snew.py @@ -84,16 +84,17 @@ class Students: # c = Class.objects.get(name='Math5') data = requests.get(url = "http://localhost:8000/api/classes/Math5", auth=('raffukhondaker','hackgroup1')).json() -c = Class( - name="data['name']" -) -# print("POST:" + str(r.status_code)) + +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(r.json()) -c = { - 'classes':"http://localhost:8000/api/classes/Math5/" -} +# print(c.name) +# c = { +# 'classes':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())