From 4b60133e82cb9857fcd3ef7e97300eee020c6c61 Mon Sep 17 00:00:00 2001
From: Raffu Khondaker <2022rkhondak@tjhsst.edu>
Date: Tue, 16 Jun 2020 13:54:42 -0400
Subject: [PATCH] removed extra files in cli
---
.sprofile | 1 +
.tprofile | 1 +
CLI/commands.py | 148 --------
CLI/index.html | 9 -
CLI/oauth/template.html | 23 --
CLI/s-git-oldd.py | 256 --------------
CLI/server.py | 23 --
CLI/student.py | 14 +-
CLI/t-git-old.py | 372 --------------------
CLI/teacher.py | 6 +-
eharris1/APLit_eharris1/Essay2/instruct.txt | 0
skoolos.py | 127 +++++--
snew.py | 25 +-
students.txt | 1 +
14 files changed, 132 insertions(+), 874 deletions(-)
create mode 100644 .sprofile
create mode 100644 .tprofile
delete mode 100644 CLI/commands.py
delete mode 100644 CLI/index.html
delete mode 100644 CLI/oauth/template.html
delete mode 100644 CLI/s-git-oldd.py
delete mode 100644 CLI/server.py
delete mode 100644 CLI/t-git-old.py
create mode 100644 eharris1/APLit_eharris1/Essay2/instruct.txt
create mode 100644 students.txt
diff --git a/.sprofile b/.sprofile
new file mode 100644
index 0000000..544f6b1
--- /dev/null
+++ b/.sprofile
@@ -0,0 +1 @@
+{"username": "2022rkhondak", "grade": 10, "is_student": true, "password": "hackgroup1"}
\ No newline at end of file
diff --git a/.tprofile b/.tprofile
new file mode 100644
index 0000000..b141284
--- /dev/null
+++ b/.tprofile
@@ -0,0 +1 @@
+{"username": "eharris1", "is_student": false, "password": "hackgroup1"}
\ No newline at end of file
diff --git a/CLI/commands.py b/CLI/commands.py
deleted file mode 100644
index 39ed5f7..0000000
--- a/CLI/commands.py
+++ /dev/null
@@ -1,148 +0,0 @@
-from __future__ import print_function, unicode_literals
-from PyInquirer import prompt, print_json
-import json
-import os
-import argparse
-
-
-'''
-my_parser = argparse.ArgumentParser(prog='skool', description='Let SkoolOS control your system', epilog="Try again")
-my_parser.add_argument('--init', action="store_true") #returns true if run argument
-args = my_parser.parse_args()
-
-update()
-outputs = vars(args)
-if(outputs['init']):
- start()
-'''
-
-#already ccrerrated account through website, has to login
-def update():
- #get data from database
- return
-
-def yesorno(question):
- questions = [
- {
- 'type': 'input',
- 'name': 'response',
- 'message': question,
- },
- ]
- answers = prompt(questions)
- if(answers["response"] == "y"):
- return True
- return False
-
-def login():
- #enter username
- #enter password
- questions = [
- {
- 'type': 'input',
- 'name': 'webmail',
- 'message': 'What\'s TJ Webmail',
- },
- {
- 'type': 'password',
- 'name': 'password',
- 'message': 'Password?',
- },
- ]
- user = prompt(questions)
- #reading from json of users (replace w GET to database) to check if user is registered
- with open('users.json', 'r') as json_file:
- data = json.load(json_file)
- for i in range(len(data)):
- if user["webmail"] == data[i]["webmail"]:
- if(user["password"] == data[i]["password"]):
- print("Logged in!")
- return data[i]
- else:
- print("Password incorrect. Try again.")
- return None
- print("User not found. Please Try again")
- return None
-
-#did not create account through website, has to signup/login
-def signup():
- questions = [
- {
- 'type': 'input',
- 'name': 'first-name',
- 'message': 'What\'s your first name',
- },
- {
- 'type': 'input',
- 'name': 'last-name',
- 'message': 'What\'s your last name?',
- },
- {
- 'type': 'list',
- 'name': 'grade',
- 'message': 'Grade?',
- 'choices':["9","10","11","12"]
- },
- {
- 'type': 'input',
- 'name': 'webmail',
- 'message': 'What\'s your TJ Webmail?',
- },
- {
- 'type': 'password',
- 'name': 'password',
- 'message': 'Password?',
- },
- ]
- user = prompt(questions)
- for i in user:
- if user[i] == "":
- print("Some forms were left blank. Try again.\n")
- return None
- if len(user["password"]) < 6:
- print("Password is too short. Try again.")
- return None
- if (("@tjhsst.edu" in user['webmail']) == False):
- print("Webmail entered was not a @tjhhsst.edu. Try again.")
- return None
-
- user["classes"] = []
- with open('users.json', 'r') as json_file:
- data = json.load(json_file)
- data.append(user)
- open("users.json", "w").write(str(json.dumps(data)))
- return user
-
-def relogin():
- questions = [
- {
- 'type': 'list',
- 'name': 'choice',
- 'message': '',
- 'choices':["Continue as current user","Login into new user","Sign up into new account"]
- },
- ]
- answer = prompt(questions)
-
-
-def setup(user):
- #Read classes/assignenments and setup directory:
- #SkoolOS/Math/Week1
- for c in user["classes"]:
- os.makedirs(c)
- for a in user["classes"][c]:
- os.makedirs(c + "/" + a)
-
-def start():
- if(os.path.exists(".login.txt") == False):
- b = yesorno("Do you have a SkoolOS account?(y/N)")
- if(b):
- user = login()
- if(user != None):
- setup(user)
- open(".login.txt", "w").write(str(user))
- else:
- user = signup()
- if(user != None):
- open(".login.txt").write(str(user))
-
diff --git a/CLI/index.html b/CLI/index.html
deleted file mode 100644
index a21b847..0000000
--- a/CLI/index.html
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
- Sign in with Ion
-
-
- Sign in with
-
-
\ No newline at end of file
diff --git a/CLI/oauth/template.html b/CLI/oauth/template.html
deleted file mode 100644
index 6452ea8..0000000
--- a/CLI/oauth/template.html
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
- Sign into Ion
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/CLI/s-git-oldd.py b/CLI/s-git-oldd.py
deleted file mode 100644
index 0cf4486..0000000
--- a/CLI/s-git-oldd.py
+++ /dev/null
@@ -1,256 +0,0 @@
-import subprocess
-import os
-import requests
-import webbrowser
-import pprint
-import json
-import shutil
-import time
-import pyperclip
-
-#git clone student directory ==> /classes/assignments
-
-#get teacher info from api
-def getStudent(ion_user):
- URL = "http://127.0.0.1:8000/students/" + ion_user + "/"
- r = requests.get(url = URL, auth=('raffukhondaker','hackgroup1'))
- if(r.status_code == 200):
- data = r.json()
- return data
- elif(r.status_code == 404):
- return None
- print("Make new account!")
- elif(r.status_code == 403):
- return None
- print("Invalid username/password")
- else:
- return None
- print(r.status_code)
-
-def getDB(url):
- r = requests.get(url = url, auth=('raffukhondaker','hackgroup1'))
- print("GET:" + str(r.status_code))
- return(r.json())
-
-def postDB(data, url):
- r = requests.post(url = url, data=data, auth=('raffukhondaker','hackgroup1'))
- print("POST:" + str(r.status_code))
- return(r.json())
-
-def putDB(data, url):
- r = requests.put(url = url, data=data, auth=('raffukhondaker','hackgroup1'))
- print("PUT:" + str(r.status_code))
- return(r.json())
-
-def delDB(url):
- r = requests.delete(url = url, auth=('raffukhondaker','hackgroup1'))
- print("DELETE:" + str(r.status_code))
- return None
-
-def command(command):
- ar = []
- command = command.split(" ")
- for c in command:
- ar.append(c)
- process = subprocess.Popen(ar, stdout=subprocess.PIPE,stderr=subprocess.PIPE)
- p=process.poll()
- output = process.communicate()[1]
- print(output.decode('utf-8'))
-
-####################################################################################################################################
-
-#public methods: deleteClass, makeClass, update
-class Student:
- def __init__(self, data):
- # teacher info already stored in API
- # intitialze fields after GET request
- self.first_name=data['first_name']
- self.last_name=data['last_name']
- self.git=data['git']
- self.username=data['ion_user']
- self.url= "http://127.0.0.1:8000/students/" + self.username + "/"
- self.email = data['email']
- self.grade = data['grade']
- self.student_id=data['student_id']
- self.completed = data['completed']
- #classes in id form (Example: 4,5)
-
- #storing actual classes
- 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/classes/" + str(c) + "/"
- classes.append(getDB(url))
-
- self.classes = classes
- self.sclass=str(data['classes'])
-
- #storing added_to classes
- nid=data['added_to'].split(",")
- try:
- nid.remove('')
- except:
- pass
- try:
- nid.remove("")
- except:
- pass
- nclasses=[]
- for c in nid:
- url = "http://127.0.0.1:8000/classes/" + str(c) + "/"
- nclasses.append(getDB(url))
-
- self.new = nclasses
- self.snew=str(data['added_to'])
- if(os.path.isdir(self.username)):
- print("Synced to " + self.username)
- else:
- os.mkdir(self.username)
-
-
- #update API and Github, all assignments / classes
- def update(self):
- #lists all classes
- ignore=['.DS_Store']
- classes = os.listdir(self.username)
- for i in ignore:
- try:
- classes.remove(i)
- except:
- pass
-
- for i in range(len(classes)):
- c = classes[i]
- path = self.username + "/" + c
- #lists all assignments and default files
- #push to git
- isclass = False
- for d in os.listdir(path):
- if(d == '.git'):
- isclass=True
- break
- if(isclass):
- loc = os.getcwd()
- os.chdir(path)
- command('git fetch origin')
- command('git checkout ' + self.username)
- command('git add .')
- command('git commit -m ' + self.username + '-update')
- command('git push -u origin ' + self.username)
- command('git merge master')
- os.chdir(loc)
- print("Updated: " + c)
- else:
- print(d + " is not a class")
-
- #class name format: _
-
-
- #add classes from 'new' field
- def addClass(self, cid):
- if((cid in self.snew) == False):
- if((cid in self.sclass) == True):
- print("Already enrolled in this class.")
- else:
- print("Not added by teacher yet.")
- return None
- data = getDB('http://127.0.0.1:8000/classes/'+cid)
-
- #clone class repo and make student branch (branch name: username)
- os.chdir(self.username)
- command("git clone " + data['repo'])
- os.chdir(data['name'])
- command("git checkout " + self.username)
- command("git push -u origin " + self.username)
-
- self.classes.append(data)
- if(len(self.sclass)==0):
- self.sclass = data['id']
- else:
- self.sclass = self.sclass + "," + str(data['id'])
-
- #upddate self.new
- s=""
- nar = ''
- for i in range(len(self.new)):
- if(self.new[i]['id'] == int(data['id'])):
- print("DELETE: " + self.new[i]['name'])
- del self.new[i]
- #recreate sclass field, using ids
- for c in self.new:
- s = s + str(c['id']) + ","
- nar.append(c)
- self.snew=s
- self.new=nar
- break
-
- #update teacher instance in db, classes field
- data={
- 'first_name':self.first_name,
- 'last_name':self.last_name,
- 'git':self.git,
- 'ion_user':self.username,
- 'student_id':self.student_id,
- 'added_to':self.snew,
- 'url':self.url,
- 'classes':self.sclass,
- 'email':self.email,
- 'grade':self.grade,
- 'completed':self.completed
- }
- print(self.url)
- print(putDB(data, self.url))
- return data
-
- def submit(self, path):
- #2022rkhondak/English11_eharris1/Essay1
- #check if valid assignment
- parts = path.split("/")
- if(len(parts) != 3):
- print("Assignment path too short")
- return
- isclass = False
- for c in self.classes:
- if(c['name'] == parts[1]):
- isclass==True
- break
- if(parts[0] != self.username and isclass and os.path.isdir(path) == False):
- print("Not valid assignment")
- return
- if((parts[1] + "/" + parts[2]) in self.completed):
- print(parts[2] + " already submited. ")
- # return
- resp = input("Are you sure you want to submit? You cannot do this again.(y/N) ")
- if(resp == 'y'):
- os.chdir(self.username + "/" + parts[1])
- command("git add .")
- command("git commit -m submit")
- command("git tag " + parts[1] + "-final")
- command("git push -u origin " + self.username + " --tags")
- self.completed = self.completed + "," + parts[1] + "/" + parts[2]
- data={
- 'first_name':self.first_name,
- 'last_name':self.last_name,
- 'git':self.git,
- 'ion_user':self.username,
- 'student_id':self.student_id,
- 'added_to':self.snew,
- 'url':self.url,
- 'classes':self.sclass,
- 'email':self.email,
- 'grade':self.grade,
- 'completed':self.completed
- }
- #print(putDB(data, "http://127.0.0.1:8000/students/" + self.username + "/"))
-
-data = getStudent("2022rkhondak")
-s = Student(data)
-s.update()
\ No newline at end of file
diff --git a/CLI/server.py b/CLI/server.py
deleted file mode 100644
index 1cc095f..0000000
--- a/CLI/server.py
+++ /dev/null
@@ -1,23 +0,0 @@
-from http.server import HTTPServer
-
-class HTTPServer(BaseHTTPServer.HTTPServer):
-
- _continue = True
-
- def serve_until_shutdown(self):
- while self._continue:
- self.handle_request()
-
- def shutdown(self):
- self._continue = False
- # We fire a last request at the server in order to take it out of the
- # while loop in `self.serve_until_shutdown`.
- try:
- urllib2.urlopen(
- 'http://%s:%s/' % (self.server_name, self.server_port))
- except urllib2.URLError:
- # If the server is already shut down, we receive a socket error,
- # which we ignore.
- pass
- self.server_close()
-
diff --git a/CLI/student.py b/CLI/student.py
index cc0e29b..fd75366 100644
--- a/CLI/student.py
+++ b/CLI/student.py
@@ -149,7 +149,7 @@ class Student:
classes = self.classes
for c in classes:
print(c['name'])
- alist = c['assignments'].split(",")
+ alist = c['assignments']
for a in alist:
ass = getDB("http://127.0.0.1:8000/api/assignments/" + a)
now = datetime.datetime.now()
@@ -369,12 +369,12 @@ class Student:
command('git checkout master')
os.chdir(cdir)
-data = getStudent("2022rkhondak")
-s = Student(data)
-s.viewClass("APLit_eharris1")
-#s.addClass("APLit_eharris1")
-# #s.update()
-s.exitCLI()
+# data = getStudent("2022rkhondak")
+# s = Student(data)
+# s.viewClass("APLit_eharris1")
+# #s.addClass("APLit_eharris1")
+# # #s.update()
+# s.exitCLI()
def main():
pass
diff --git a/CLI/t-git-old.py b/CLI/t-git-old.py
deleted file mode 100644
index 6e11a47..0000000
--- a/CLI/t-git-old.py
+++ /dev/null
@@ -1,372 +0,0 @@
-import subprocess
-import os
-import requests
-import webbrowser
-import pprint
-import json
-import shutil
-import time
-import pyperclip
-
-#git clone student directory ==> /classes/assignments
-
-#get teacher info from api
-def getTeacher(ion_user):
- URL = "http://127.0.0.1:8000/teachers/" + ion_user + "/"
- r = requests.get(url = URL, auth=('raffukhondaker','hackgroup1'))
- if(r.status_code == 200):
- data = r.json()
- return data
- elif(r.status_code == 404):
- return None
- print("Make new account!")
- elif(r.status_code == 403):
- return None
- print("Invalid username/password")
- else:
- return None
- print(r.status_code)
-
-def getDB(url):
- r = requests.get(url = url, auth=('raffukhondaker','hackgroup1'))
- print("GET:" + str(r.status_code))
- return(r.json())
-
-def postDB(data, url):
- r = requests.post(url = url, data=data, auth=('raffukhondaker','hackgroup1'))
- print("POST:" + str(r.status_code))
- return(r.json())
-
-def putDB(data, url):
- r = requests.put(url = url, data=data, auth=('raffukhondaker','hackgroup1'))
- print("PUT:" + str(r.status_code))
- return(r.json())
-
-def delDB(url):
- r = requests.delete(url = url, auth=('raffukhondaker','hackgroup1'))
- print("DELETE:" + str(r.status_code))
- return None
-
-def command(command):
- ar = []
- command = command.split(" ")
- for c in command:
- ar.append(c)
- process = subprocess.Popen(ar, stdout=subprocess.PIPE,stderr=subprocess.PIPE)
- p=process.poll()
- output = process.communicate()[1]
- #print(output.decode('utf-8'))
-
-####################################################################################################################################
-
-#public methods: deleteClass, makeClass, update
-class Teacher:
- def __init__(self, data):
- # teacher info already stored in API
- # intitialze fields after GET request
- self.first_name=data['first_name']
- self.last_name=data['last_name']
- self.git=data['git']
- self.username=data['ion_user']
- self.url= "http://127.0.0.1:8000/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/classes/" + str(c) + "/"
- classes.append(getDB(url))
-
- self.classes = classes
- self.sclass=str(data['classes'])
- if(os.path.isdir(self.username)):
- print("Synced to " + self.username)
- else:
- os.mkdir(self.username)
-
-
- #update API and Github, all assignments / classes
- def update(self):
- #lists all classes
- ignore=['.git','.DS_Store']
- classes = os.listdir(self.username)
- for i in ignore:
- try:
- classes.remove(i)
- except:
- pass
- #list of classes that have been deleted (not with deleteClass)
- extra = []
- for c in self.classes:
- extra.append(c)
- for i in range(len(extra)):
- e = extra[i]['path']
- extra[i] = e
- print("Extra: "+str(extra))
- print("Local:" + str(classes))
- #checks all class directories first
- for c in classes:
- path = self.username + "/" + c
- if(self.checkClass(path) == False):
- return
- extra.remove(path)
- print("Current classes: " + path)
-
- for e in extra:
- self.deleteClass(e)
-
- for i in range(len(classes)):
- c = classes[i]
- path = self.username + "/" + c
- #lists all assignments and default files
- #if no .git, directory not synced to git or API
- if (self.checkInDB(path)==False):
- self.addClass(path)
- else:
- #push to git
- loc = os.getcwd()
- os.chdir(path)
- command('git fetch origin')
- command('git pull origin master')
- command('git add .')
- command('git commit -m "Update"')
- command('git push -u origin master')
- os.chdir(loc)
-
- #class name format: _
-
- #turn existing directory into class, Pre-condition: directory exists
- #relative path to class: 2022rkhondak/Math4
- def checkClass(self,path):
- cname = path.split("/")
- cname = cname[len(cname)-1]
- if(os.path.isfile(path)):
- print(path + " must be in a Class directory.")
- return False
- if(("_" + self.username) in cname) == False:
- print("Incorrect class name: Must be in the format: " + self.username+ "/_, not " + path)
- return False
- dirs = os.listdir(path)
- #checks if there is a file (not within Assignments) in class, need at least 1
- deffile = False
- #checks if there is a file in an Assignment, need at least 1 (default True in case no assignments)
- as_file = True
- as_bad = ""
-
- for d in dirs:
- if(os.path.isfile(d)):
- deffile=True
- else:
- #checks if there is a file in an Assignment, need at least 1
- as_file = False
- asdir = os.listdir(path + "/" + d)
- for a in asdir:
- if(os.path.isfile(path + "/" + d + "/" +a)):
- as_file=True
- if(as_file==False):
- as_bad = d
- break
- if(as_file==False):
- print("Assignment '" + as_bad + "' does not have a default file!")
- return False
-
- if(deffile==False):
- print("Need a default file in the " + path + " Directory!")
- return False
- return True
-
- def checkInDB(self, path):
- n = path.split("/")
- n = n[len(n)-1]
- for c in self.classes:
- if(n == c['name']):
- return True
- return False
-
- #adds class to git, not API
- #Assuming valid class name
- def addClasstoGit(self, path):
- cname = path.split("/")
- cname = cname[len(cname)-1]
- #push to remote repo
- url='https://github.com/' + self.git + "/" + cname
- if(requests.get(url).status_code != 200):
- input("Make new Git Repo with name: " + cname + " (Press any key to continue)\n")
- try:
- pyperclip.copy(cname)
- print(cname + " copied to clipboard.")
- except:
- pass
- time.sleep(2)
- webbrowser.open('https://github.com/new')
- input("Repo created? (Press any key to continue)\n")
-
- print(url)
- while(requests.get(url).status_code != 200):
- r = input("Repo not created yet. (Press any key to continue after repo created, or 'N' to exit)\n")
- if(r=="N" or r=="No"):
- return None
- cdir = os.getcwd()
- os.chdir(path)
- command('git init')
- command('git add .')
- command('git commit -m Hello_Class')
- command('git remote add origin ' + url + '.git')
- command('git push -u origin master')
- else:
- cdir = os.getcwd()
- os.chdir(path)
- print("Repo already exists. Cloning instead.")
- command('git clone')
- command('git fetch origin')
- command('git pull')
- command('git add .')
- command('git commit -m Hello_Class')
- command('git push -u origin master')
- os.chdir(cdir)
- print(cdir)
- data={
- 'name':cname,
- 'repo':url,
- 'path':path,
- 'teacher':self.username,
- }
- return data
-
- #make class from existing directory, add to git and api
- def addClass(self, path):
- if (self.checkClass(path)):
- data = self.addClasstoGit(path)
- #make class instance in db
- data = postDB(data, 'http://127.0.0.1:8000/classes/')
- #add to instance
- #upate self.classes
- self.classes.append(data)
- if(len(self.sclass)==0):
- self.sclass = data['id']
- else:
- self.sclass = self.sclass + "," + str(data['id'])
-
- #update teacher instance in db, classes field
- data={
- 'first_name':self.first_name,
- 'last_name':self.last_name,
- 'git':self.git,
- 'ion_user':self.username,
- 'url':self.url,
- 'classes':self.sclass,
- 'email':self.email
- }
- putDB(data, self.url)
-
- return data
-
-
- #make a new class from scratch
- #subject: string, assignments: list
- #class name must be: _
- def makeClass(self, cname, assignments):
- #check if class exists
- path = self.username + "/" + cname
- if(os.path.exists(path)):
- print("Class already exists: " + cname)
- return
- else:
- if((("_" + self.username) in cname) == False):
- print("class name must be: "+ cname + "_" + self.username)
- return
- cdir = os.getcwd()
- os.mkdir(path)
- f=open(path + "/README.md", "w")
- f.close()
- #push to remote repo
- os.chdir(path)
- for a in assignments:
- os.mkdir(a)
- f=open(a + "/instructions.txt", "w")
- f.close()
- os.chdir(cdir)
-
- data = self.addClass(path)
- return data
-
- def deleteClass(self, path):
- if(os.path.exists(path) == False):
- print(path + " does not exist locally.")
- resp = input("Do you want to delete " + path + " from the SkoolOS system? (y/N) ")
- if(resp != 'y'):
- return
-
- cname = path.split("/")
- cname = cname[len(cname)-1]
- cid = None
- repo = ''
- for c in self.classes:
- if cname == c['name']:
- cid = str(c['id'])
- repo = c['repo']
-
- #remove from api
- for i in range(len(self.classes)):
- if(self.classes[i]['id'] == int(cid)):
- print("DELETE: " + self.classes[i]['name'])
- del self.classes[i]
- s=""
- #recreate sclass field, using ids
- for c in self.classes:
- s = s + str(c['id']) + ","
- print(s)
- s = s[:-1]
- print(s)
- data={
- 'first_name':self.first_name,
- 'last_name':self.last_name,
- 'git':self.git,
- 'ion_user':self.username,
- 'url':self.url,
- 'classes':s,
- 'email':self.email
- }
- print(putDB(data, self.url))
- delDB("http://127.0.0.1:8000/classes/" + cid + "/")
- break
-
- #remove locally
- try:
- shutil.rmtree(path)
- except:
- pass
-
- #remove from git
- input("Delete repository: " + cname + ". Scroll to the bottom of the page and press 'Delete this repository' (Press any key to continue) ")
- print(repo)
- time.sleep(2)
- webbrowser.open(repo + "/settings")
- input("Repo deleted? (Press any key to continue) ")
-
- print(repo)
- while(requests.get(repo).status_code == 200):
- r = input("Repo still no deleted yet. (Press any key to continue after repo deleted, or 'N' to exit)\n")
- if(r=="N" or r=="No" or r=='n'):
- return None
-
-#make student repo by student id
- def addStudent(self,stid):
- print(stid)
-
- def comment(self):
- print("heheheh")
-
-data = getTeacher("eharris1")
-t = Teacher(data)
-t.makeClass('English11_eharris1', ["Essay1"])
-t.update()
diff --git a/CLI/teacher.py b/CLI/teacher.py
index 8f6af39..08f0a70 100644
--- a/CLI/teacher.py
+++ b/CLI/teacher.py
@@ -592,10 +592,10 @@ class Teacher:
print("heheheh")
-data = getTeacher("eharris1")
-t = Teacher(data)
+# data = getTeacher("eharris1")
+# t = Teacher(data)
#t.makeClass("APLit_eharris1")
-t.updateAssignment("eharris1/APLit_eharris1/BookReport", "APLit_eharris1", '2020-08-11 16:58:33.383124')
+# t.updateAssignment("eharris1/APLit_eharris1/BookReport", "APLit_eharris1", '2020-08-11 16:58:33.383124')
#ar = ['2022rkhondak','2022inafi','2023rumareti']
#extra = t.reqAddStudentList(ar, "APLit_eharris1")
#print(extra)
diff --git a/eharris1/APLit_eharris1/Essay2/instruct.txt b/eharris1/APLit_eharris1/Essay2/instruct.txt
new file mode 100644
index 0000000..e69de29
diff --git a/skoolos.py b/skoolos.py
index 501429e..30dda81 100644
--- a/skoolos.py
+++ b/skoolos.py
@@ -35,7 +35,7 @@ def main():
print("╚═════╝░╚═╝░░╚═╝░╚════╝░░╚════╝░╚══════╝ ░╚════╝░╚═════╝░")
print("")
- if not os.path.exists(".profile"):
+ if not (os.path.exists(".sprofile") or os.path.exists(".tprofile")):
try:
URL = "http://127.0.0.1:8000/api/"
r = requests.get(url = URL)
@@ -47,7 +47,10 @@ def main():
#webbrowser.open("http://127.0.0.1:8000/login", new=2)
authenticate()
else:
- f = open('.profile','r')
+ try:
+ f = open('.tprofile','r')
+ except:
+ f = open('.sprofile','r')
data = json.loads(f.read())
f.close()
PWD = data['password']
@@ -64,7 +67,7 @@ def main():
# pass
def studentCLI(user, password):
from CLI import student
- data = getUser(user, password)
+ data = getUser(user, password, 'student')
student = student.Student(data)
carray = student.sclass.split(",")
if(len(carray) == 1 and carray[0] == ""):
@@ -80,24 +83,25 @@ def studentCLI(user, password):
'message': 'Select class: ',
},
]
- course = prompt(courses)
+ course = prompt(courses)['course']
+ print(course)
if course == "Exit SkoolOS":
student.exitCLI()
else:
student.viewClass(course)
- student.getAssignments(course, datetime.datetime.now())
+ student.getAssignments(course, 100)
def teacherCLI(user, password):
from CLI import teacher
- data = getUser(user, password)
+ data = getUser(user, password, 'teacher')
+ print(data)
teacher = teacher.Teacher(data)
# 1. make a class
# 2. add studeents to an existing class
# 3. Get progress logs on a student
# 2. make an assignment for a class
# 3. view student submissions for an assignment
- carray = teacher.sclass.split(",")
- carray.remove("")
+ carray = teacher.classes
carray.append("Exit SkoolOS")
carray.append("Make New Class")
courses = [
@@ -108,7 +112,7 @@ def teacherCLI(user, password):
'message': 'Select class: ',
},
]
- course = prompt(courses)
+ course = prompt(courses)['course']
if course == "Exit SkoolOS":
teacher.exitCLI()
if course == "Make New Class":
@@ -119,7 +123,7 @@ def teacherCLI(user, password):
'message': 'Class Name: ',
},
]
- cname = prompt(questions)
+ cname = prompt(questions)['cname']
teacher.makeClass(cname)
soption = ["1) Add individual student", "2) Add list of students through path", "3) Exit"]
questions = [
@@ -130,7 +134,7 @@ def teacherCLI(user, password):
'message': 'Add list of students (input path): ',
},
]
- choice = prompt(questions).split(")")
+ choice = prompt(questions)['students'].split(")")[0]
if("1" == choice):
s = input("Student name: ")
teacher.addStudent(s, cname)
@@ -140,8 +144,11 @@ def teacherCLI(user, password):
print(p + " does not exist.")
else:
- print("Class: " + cname)
- options = ['1) Add student', "2) Add assignment", "3) View student information"]
+ print("Class: " + course)
+ unconf = getDB("http://localhost:8000/api/classes/" + course)['unconfirmed']
+ for s in unconf:
+ teacher.addStudent()
+ options = ['1) Request Student', "2) Add assignment", "3) View student information"]
questions = [
{
'type': 'list',
@@ -150,23 +157,99 @@ def teacherCLI(user, password):
'message': 'Select option: ',
},
]
- option = prompt(questions)
+ option = prompt(questions)['course'].split(")")[0]
+ if(option == '1'):
+ soption = ["1) Add individual student", "2) Add list of students through path", "3) Exit"]
+ questions = [
+ {
+ 'type': 'list',
+ 'choices':soption,
+ 'name': 'students',
+ 'message': 'Add list of students (input path): ',
+ },
+ ]
+ schoice = prompt(questions)['students'].split(")")[0]
+ if(schoice == '1'):
+ questions = [
+ {
+ 'type': 'input',
+ 'name': 'student',
+ 'message': 'Student Name: ',
+ },
+ ]
+ s = prompt(questions)['student']
+ teacher.reqStudent(s, course)
+ if(schoice == '2'):
+ questions = [
+ {
+ 'type': 'input',
+ 'name': 'path',
+ 'message': 'Path: ',
+ },
+ ]
+ path = prompt(questions)['path']
+ while(not os.path.exists(path)):
+ if(path == 'N'):
+ sys.exit(0)
+ print(path + " is not a valid path")
+ path = input("Enter file path ('N' to exit): ")
+ f = open(path, 'r')
+ students = f.read().splitlines()
+ teacher.reqAddStudentList(students, course)
+ else:
+ sys.exit()
+ if(option == '2'):
+ nlist = os.listdir(teacher.username + "/" + course)
+ alist = getDB("http://localhost:8000/api/classes/" + course)['assignments']
+ tlist = []
+ b = True
+ for n in nlist:
+ b = True
+ print(teacher.username + "/" + course + "/" + n)
+ for a in alist:
+ if(n in a or n == a):
+ #print("Assignments: " + n)
+ b = False
+ if(not os.path.isdir(teacher.username + "/" + course + "/" + n)):
+ nlist.remove(n)
+ b = False
+ if(b):
+ tlist.append(n)
+ nlist = tlist
+ if(len(nlist) == 0):
+ print("No new assignments found")
+ sys.exit(0)
+ questions = [
+ {
+ 'type': 'list',
+ 'choices':nlist,
+ 'name': 'assignment',
+ 'message': 'Select new assignment: ',
+ },
+ ]
+ ass = prompt(questions)['assignment']
-def getUser(ion_user, password):
- URL = "http://127.0.0.1:8000/api/students/" + ion_user + "/"
+
+def getUser(ion_user, password, utype):
+ if('student' in utype):
+ URL = "http://127.0.0.1:8000/api/students/" + ion_user + "/"
+ else:
+ URL = "http://127.0.0.1:8000/api/teachers/" + ion_user + "/"
r = requests.get(url = URL, auth=(ion_user,password))
+ print(r.json())
if(r.status_code == 200):
data = r.json()
+ print(200)
return data
elif(r.status_code == 404):
- return None
print("Make new account!")
+ return None
elif(r.status_code == 403):
- return None
print("Invalid username/password")
- else:
return None
+ else:
print(r.status_code)
+ return None
def patchDB(data, url):
r = requests.patch(url = url, data=data, auth=('raffukhondaker','hackgroup1'))
print("PATH:" + str(r.status_code))
@@ -305,7 +388,7 @@ def authenticate():
'is_student':is_student,
'password':pwd,
}
- profileFile = open(".profile", "w")
+ profileFile = open(".sprofile", "w")
profileFile.write(json.dumps(profile))
profileFile.close()
@@ -314,14 +397,12 @@ def authenticate():
r = requests.get(url = "http://localhost:8000/api/teachers/" + user + "/", auth=(user,pwd))
profile = r.json()
username = profile['ion_user']
- grade = profile['grade']
profile = {
'username':username,
- 'grade':grade,
'is_student':is_student,
'password':pwd,
}
- profileFile = open(".profile", "w")
+ profileFile = open(".tprofile", "w")
profileFile.write(json.dumps(profile))
profileFile.close()
diff --git a/snew.py b/snew.py
index b6437f8..c6aade6 100644
--- a/snew.py
+++ b/snew.py
@@ -83,18 +83,23 @@ class Students:
# }
# 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()
-r = requests.post(url = "http://localhost:8000/api/classes/", data={'name':'English11', 'teacher':'eharris1', 'owner':2}, auth=('raffukhondaker','hackgroup1'))
+# r = requests.post(url = "http://localhost:8000/api/classes/", data={'name':'English11', 'teacher':'eharris1', 'owner':2}, auth=('raffukhondaker','hackgroup1'))
-print("POST:" + str(r.json()))
+# print("POST:" + str(r.json()))
+# # print(r.json())
+# # print(c.name)
+# # c = {
+# # 'classes':c
+# # }
+# # print(c)
+# r = requests.patch(url = "http://localhost:8000/api/teachers/eharris1/", data={'classes':['English11']}, auth=('raffukhondaker','hackgroup1'))
# print(r.json())
-# print(c.name)
-# c = {
-# 'classes':c
-# }
-# print(c)
-r = requests.patch(url = "http://localhost:8000/api/teachers/eharris1/", data={'classes':['English11']}, auth=('raffukhondaker','hackgroup1'))
-print(r.json())
+import bgservice.bgservice as bg
+
+bg.watch_dir('2022rkhondak', 'eharris1')
+time.sleep(60)
+bg.stop_watching()
diff --git a/students.txt b/students.txt
new file mode 100644
index 0000000..80bb6da
--- /dev/null
+++ b/students.txt
@@ -0,0 +1 @@
+2022rkhondak
\ No newline at end of file