mirror of
https://github.com/Rushilwiz/SkoolOS.git
synced 2025-04-20 20:30:18 -04:00
commit
6022e12aa6
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -127,3 +127,6 @@ dmypy.json
|
||||||
|
|
||||||
# Pyre type checker
|
# Pyre type checker
|
||||||
.pyre/
|
.pyre/
|
||||||
|
|
||||||
|
# PyCharm Files
|
||||||
|
.idea/
|
138
CLI/commands.py
Normal file
138
CLI/commands.py
Normal file
|
@ -0,0 +1,138 @@
|
||||||
|
from __future__ import print_function, unicode_literals
|
||||||
|
from PyInquirer import prompt, print_json
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
|
||||||
|
#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))
|
||||||
|
|
||||||
|
|
22
CLI/run.py
Normal file
22
CLI/run.py
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
from __future__ import print_function, unicode_literals
|
||||||
|
from PyInquirer import prompt, print_json
|
||||||
|
from commands import start, update
|
||||||
|
import argparse
|
||||||
|
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()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
62
CLI/skoolos.py
Normal file
62
CLI/skoolos.py
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
import sys
|
||||||
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
|
import requests
|
||||||
|
from requests_oauthlib import OAuth2Session
|
||||||
|
from selenium import webdriver;
|
||||||
|
import os.path
|
||||||
|
import time
|
||||||
|
|
||||||
|
client_id = r'QeZPBSKqdvWFfBv1VYTSv9iFGz5T9pVJtNUjbEr6'
|
||||||
|
client_secret = r'0Wl3hAIGY9SvYOqTOLUiLNYa4OlCgZYdno9ZbcgCT7RGQ8x2f1l2HzZHsQ7ijC74A0mrOhhCVeZugqAmOADHIv5fHxaa7GqFNtQr11HX9ySTw3DscKsphCVi5P71mlGY'
|
||||||
|
redirect_uri = 'http://localhost:8000/'
|
||||||
|
token_url = 'https://ion.tjhsst.edu/oauth/token/'
|
||||||
|
scope=["read"]
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
print("")
|
||||||
|
print(" SSSSS CCCCC HH HH OOOOO OOOOO LL OOOOO SSSSS ")
|
||||||
|
print("SS CC C HH HH OO OO OO OO LL OO OO SS ")
|
||||||
|
print(" SSSSS CC HHHHHHH OO OO OO OO LL OO OO SSSSS ")
|
||||||
|
print(" SS CC C HH HH OO OO OO OO LL OO OO SS")
|
||||||
|
print(" SSSSS CCCCC HH HH OOOO0 OOOO0 LLLLLLL OOOO0 SSSSS ")
|
||||||
|
print("")
|
||||||
|
|
||||||
|
if not os.path.exists(".profile"):
|
||||||
|
authenticate()
|
||||||
|
else:
|
||||||
|
print(open(".profile", "r").read())
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def authenticate():
|
||||||
|
oauth = OAuth2Session(client_id=client_id, redirect_uri=redirect_uri, scope=scope)
|
||||||
|
authorization_url, state = oauth.authorization_url("https://ion.tjhsst.edu/oauth/authorize/")
|
||||||
|
browser = webdriver.Chrome()
|
||||||
|
browser.get(authorization_url)
|
||||||
|
|
||||||
|
while "http://localhost:8000/?code" not in browser.current_url:
|
||||||
|
time.sleep(0.25)
|
||||||
|
|
||||||
|
code = urlparse(browser.current_url).query[5:]
|
||||||
|
browser.quit()
|
||||||
|
|
||||||
|
payload = {'grant_type': 'authorization_code', 'code': code, 'redirect_uri': redirect_uri, 'client_id': client_id,
|
||||||
|
'client_secret': client_secret, 'csrfmiddlewaretoken': state}
|
||||||
|
token = requests.post("https://ion.tjhsst.edu/oauth/token/", data=payload).json()
|
||||||
|
print(token)
|
||||||
|
# headers = {'Authorization': f"Bearer {token['access_token']}"}
|
||||||
|
#
|
||||||
|
# # And finally get the user's profile!
|
||||||
|
# profile = requests.get("https://ion.tjhsst.edu/api/profile", headers=headers).json()
|
||||||
|
# username = profile['ion_username']
|
||||||
|
# email = profile['tj_email']
|
||||||
|
# first_name = profile['first_name']
|
||||||
|
# last_name = profile['last_name']
|
||||||
|
|
||||||
|
#print(profile)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
1
CLI/users.json
Normal file
1
CLI/users.json
Normal file
|
@ -0,0 +1 @@
|
||||||
|
[{"first_name": "Raffu", "last_name": "Khondaker", "password": "password", "webmail": "2022rkhondak@tjhsst.edu", "classes": {"Math": ["week1_hw", "week2_hw", "week3_hw", "unit3_quiz"], "English": ["journal1", "journal2", "journal3"]}}]
|
Loading…
Reference in New Issue
Block a user