Create README; Set-Up Streamline
This commit is contained in:
33
README.md
Normal file
33
README.md
Normal file
@ -0,0 +1,33 @@
|
||||
# DualHub
|
||||
### Der duale Studienplaner!
|
||||
...
|
||||
|
||||
## INSTALLATION
|
||||
### Voraussetzungen
|
||||
Natürlich: Eine IDE und Python 3.x
|
||||
### 1. Dieses Repo klonen
|
||||
```
|
||||
git clone https://git.paulmartin.cloud/SoftwareEngineering/DualHub.git
|
||||
```
|
||||
(oder per Version Control deiner IDE klonen)
|
||||
|
||||
### 2. Die nötigen Pakete installieren
|
||||
```
|
||||
pip install -r requirements.txt
|
||||
pip install "flask[async]"
|
||||
```
|
||||
Achtung: Falls deine IDE ein VENV erstellt, zuerst:
|
||||
```
|
||||
venv\Scripts\activate
|
||||
```
|
||||
|
||||
### 3. Datenbank erstellen
|
||||
#### 3.1. [MySQL installieren](https://dev.mysql.com/doc/mysql-installation-excerpt/8.0/en/)
|
||||
Benutzername und Passwort für DualHub können frei gewählt werden
|
||||
#### 3.2. Datenbank erstellen
|
||||
``` mysql
|
||||
CREATE DATABASE paulmrtn_DUALHUB;
|
||||
```
|
||||
Achtung: Sicherstellen, dass der DualHub-User Schreib- und Leseberechtigungen hat!
|
||||
#### 3.3. Zugangsdaten in get_mysql.py eintragen (nur Windows)
|
||||
|
||||
@ -22,7 +22,7 @@ async def checkUser(email: str, password: str):
|
||||
Erhält von Dualis den Token und Cookie für User.
|
||||
:param email:
|
||||
:param password:
|
||||
:return (Token, Session):
|
||||
:return (Token, Cookie):
|
||||
"""
|
||||
async with httpx.AsyncClient() as s:
|
||||
fpw = urllib.parse.quote(password, safe='', encoding=None, errors=None)
|
||||
@ -53,7 +53,7 @@ async def getKurs(token: int, cookie: str):
|
||||
try:
|
||||
headers["Cookie"] = "cnsc=" + cookie
|
||||
token = str(token)
|
||||
async with httpx.AsyncClient as s:
|
||||
async with httpx.AsyncClient() as s:
|
||||
response = await s.get(url=f"{url}?APPNAME=CampusNet&PRGNAME=COURSERESULTS&ARGUMENTS=-N{token},-N000307,",
|
||||
headers=headers)
|
||||
html = BeautifulSoup(response.text, 'lxml')
|
||||
|
||||
22
get_mysql.py
22
get_mysql.py
@ -1,4 +1,5 @@
|
||||
import getpass
|
||||
import sys
|
||||
|
||||
|
||||
def get_mysql():
|
||||
@ -6,12 +7,15 @@ def get_mysql():
|
||||
Extrahiert die MySQL-Anmeldedaten aus ~/.my.cnf . \n
|
||||
Funktioniert wahrscheinlich nur auf Linux, vor allem für den Server gedacht.
|
||||
"""
|
||||
u = getpass.getuser()
|
||||
f = open("/home/"+u+"/.my.cnf", "r")
|
||||
i = f.read()
|
||||
u = i.find("user=")
|
||||
p = i.find("password=")
|
||||
u = i[u+5:p-1]
|
||||
ro = i.find("[clientreadonly]")
|
||||
p = i[p+9:ro-2]
|
||||
return u, p
|
||||
if sys.platform == "linux":
|
||||
u = getpass.getuser()
|
||||
f = open("/home/"+u+"/.my.cnf", "r")
|
||||
i = f.read()
|
||||
u = i.find("user=")
|
||||
p = i.find("password=")
|
||||
u = i[u+5:p-1]
|
||||
ro = i.find("[clientreadonly]")
|
||||
p = i[p+9:ro-2]
|
||||
return u, p
|
||||
else:
|
||||
return "paulmrtn", "LQAlnY9YNXSJHBG5:9Ls"
|
||||
|
||||
@ -1,6 +0,0 @@
|
||||
#!/bin/sh
|
||||
#Erstellt alle benötigten MySQL-Tabellen.
|
||||
|
||||
mysql -e "USE paulmrtn_DUALHUB; CREATE TABLE user ( id int NOT NULL, email VARCHAR(255), name VARCHAR(255), kurs VARCHAR (15), PRIMARY KEY (ID), UNIQUE (ID, EMAIL) );"
|
||||
mysql -e "USE paulmrtn_DUALHUB; CREATE TABLE dualis ( uid int NOT NULL, token VARCHAR(255), result_list VARCHAR(15), token_created INT, PRIMARY KEY (uid));"
|
||||
mysql -e "USE paulmrtn_DUALHUB; CREATE TABLE meals ( id int NOT NULL, date date, name VARCHAR(200), vegetarian tinyint(1), vegan tinyint(1), schwein tinyint(1), PRIMARY KEY (id));"
|
||||
7
init.py
7
init.py
@ -75,14 +75,17 @@ class Meals(db.Model):
|
||||
"""
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
date = db.Column(db.Date)
|
||||
name = db.Column(db.String(100))
|
||||
name = db.Column(db.String(200))
|
||||
vegetarian = db.Column(db.Boolean)
|
||||
vegan = db.Column(db.Boolean)
|
||||
schwein = db.Column(db.Boolean)
|
||||
|
||||
|
||||
scheduler = APScheduler ()
|
||||
scheduler = APScheduler()
|
||||
app = create()
|
||||
with app.app_context():
|
||||
print("Creating Tables....")
|
||||
db.create_all()
|
||||
def_src = ["*.paulmartin.cloud", '\'self\'']
|
||||
Talisman(app, content_security_policy={"default-src": def_src, "script-src": def_src # + ["'unsafe-inline'"]
|
||||
})
|
||||
|
||||
@ -1,17 +1,20 @@
|
||||
beautifulsoup4~=4.12.2
|
||||
Flask~=3.0.3
|
||||
beautifulsoup4
|
||||
Flask
|
||||
Flask_APScheduler
|
||||
Flask_Login
|
||||
flask_sqlalchemy
|
||||
icalendar~=5.0.11
|
||||
icalendar
|
||||
recurring_ical_events
|
||||
Requests~=2.31.0
|
||||
talisman
|
||||
Werkzeug~=3.0.0
|
||||
Werkzeug
|
||||
lxml
|
||||
bs4~=0.0.1
|
||||
pytz~=2023.3.post1
|
||||
|
||||
asyncio~=3.4.3
|
||||
httpx~=1.0.0b0
|
||||
celery~=5.4.0rc2
|
||||
bs4
|
||||
pytz
|
||||
flask_talisman
|
||||
asyncio
|
||||
httpx
|
||||
celery
|
||||
flask[async]
|
||||
pymysql
|
||||
APScheduler
|
||||
cryptography
|
||||
@ -295,8 +295,7 @@ async def login_post():
|
||||
name = email[pname:pname + ename].capitalize()
|
||||
new_user = User(email=email, name=name, id=hashid)
|
||||
db.session.add(new_user)
|
||||
|
||||
cookie = requesthelpers.getCookie(t[1].cookies)
|
||||
cookie = t[1]
|
||||
|
||||
new_dualis = Dualis(uid=hashid, token=t[0], token_created=int(time.time()))
|
||||
db.session.add(new_dualis)
|
||||
|
||||
@ -4,7 +4,6 @@
|
||||
<title>DualHub</title>
|
||||
<link rel="stylesheet" type="text/css" href={{ url_for("static", filename="style.css") }}>
|
||||
<meta http-equiv="refresh" content="510">
|
||||
<script async src="https://analytics.paulmartin.cloud/script.js" data-website-id="459fa66e-e255-4393-8e89-ead8b1572d0d"></script>
|
||||
{% block head %}
|
||||
{% endblock %}
|
||||
</head>
|
||||
|
||||
@ -4,7 +4,6 @@
|
||||
<meta charset="UTF-8">
|
||||
<title>Vorlesungsplan</title>
|
||||
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='cal.css') }}">
|
||||
<script async src="https://analytics.paulmartin.cloud/script.js" data-website-id="459fa66e-e255-4393-8e89-ead8b1572d0d"></script>
|
||||
</head>
|
||||
<body>
|
||||
<nav>
|
||||
|
||||
Reference in New Issue
Block a user