Custom Calendar
This commit is contained in:
65
routing.py
65
routing.py
@ -1,8 +1,9 @@
|
||||
#!/usr/bin/env python3.6
|
||||
from flask import make_response
|
||||
from flask import render_template, url_for, redirect, request
|
||||
from flask import render_template, url_for, redirect, request, send_from_directory
|
||||
from flask_login import (login_user as loginUser, login_required as loginRequired,
|
||||
logout_user as logoutUser, current_user as currentUser)
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
from werkzeug.exceptions import HTTPException
|
||||
import hashlib
|
||||
import datetime
|
||||
@ -12,7 +13,7 @@ import fetchDUALIS
|
||||
import fetchRAPLA
|
||||
from requesthelpers import *
|
||||
from fetchRAPLA import *
|
||||
from calendar_generation import getWeek
|
||||
from calendar_generation import getWeek, createCustomCalendar
|
||||
from init import *
|
||||
|
||||
|
||||
@ -87,18 +88,18 @@ def initRoutes(app: Flask):
|
||||
if not currentUser.kurs:
|
||||
return redirect(url_for("getKurs", next=url_for(request.endpoint)))
|
||||
week = request.args.get("week")
|
||||
if week:
|
||||
if week and week!="today":
|
||||
week = datetime.strptime(week, "%Y-%m-%d")
|
||||
else:
|
||||
week = "today"
|
||||
samstag = request.args.get("samstag")
|
||||
if not samstag:
|
||||
samstag = False
|
||||
events = await getWeek(week, fetchRAPLA.getIcal(currentUser.kurs), samstag)
|
||||
events = await getWeek(week, fetchRAPLA.getIcal(uid=currentUser.id), samstag)
|
||||
return render_template("plan-user.html", events=events[0], eventdays=events[1],
|
||||
name=currentUser.name, prev=str(events[2])[:10], next=str(events[3])[:10],
|
||||
mon=events[4],
|
||||
s="p", praxis="hidden")
|
||||
uid=currentUser.id, name=currentUser.name, prev=str(events[2])[:10],
|
||||
next=str(events[3])[:10], mon=events[4], login=True, s="p", date=str(week)[:10],
|
||||
praxis="hidden")
|
||||
|
||||
@app.route("/plan/<string:kurs>")
|
||||
async def displayPlan(kurs: str):
|
||||
@ -119,17 +120,29 @@ def initRoutes(app: Flask):
|
||||
except AttributeError:
|
||||
pass
|
||||
kurs = kurs.upper()
|
||||
plan = fetchRAPLA.getIcal(kurs)
|
||||
plan = fetchRAPLA.getIcal(kurs=kurs)
|
||||
if plan:
|
||||
samstag = request.args.get("samstag")
|
||||
if not samstag:
|
||||
samstag = False
|
||||
events = await getWeek(week, plan, samstag)
|
||||
return render_template("plan-anon.html", events=events[0], eventdays=events[1], kurs=kurs,
|
||||
prev=str(events[2])[:10], next=str(events[3])[:10], mon=events[4], praxis="hidden")
|
||||
login=False, prev=str(events[2])[:10], next=str(events[3])[:10],
|
||||
mon=events[4], praxis="hidden")
|
||||
else:
|
||||
return redirect(url_for("login"))
|
||||
|
||||
@app.route("/plan/restore")
|
||||
@loginRequired
|
||||
async def restoreVL():
|
||||
events = HiddenVL.query.filter_by(uid=currentUser.id).all()
|
||||
return render_template("restore-events.html", events=events, praxis="hidden")
|
||||
|
||||
@app.route("/plan/calendar/<int:uid>", methods=["GET"])
|
||||
async def deliverCalendar(uid: int):
|
||||
calstring = fetchRAPLA.getIcal(uid=uid)
|
||||
return send_from_directory("calendars", calstring, as_attachment=False)
|
||||
|
||||
@app.route("/set-up")
|
||||
def redKurs():
|
||||
"""
|
||||
@ -156,7 +169,7 @@ def initRoutes(app: Flask):
|
||||
if not currentUser.kurs:
|
||||
kurs = await fetchDUALIS.getKurs(dualisUser.token, cookie)
|
||||
if kurs != 0:
|
||||
if not fetchRAPLA.getIcal(kurs):
|
||||
if not fetchRAPLA.getIcal(kurs=kurs):
|
||||
return render_template('kurs.html', detected=(kurs, dualisError), s="s",
|
||||
theorie="hidden", praxis="hidden", file=False)
|
||||
currentUser.kurs = kurs
|
||||
@ -251,6 +264,33 @@ def initRoutes(app: Flask):
|
||||
"""
|
||||
return render_template("login.html", theorie="hidden", praxis="hidden", s="s")
|
||||
|
||||
@app.route("/plan/delete", methods=["POST"])
|
||||
@loginRequired
|
||||
async def removeEvent():
|
||||
day = request.args.get("day")
|
||||
id = str(request.args.get("id"))
|
||||
uid = currentUser.id
|
||||
name = request.args.get("name")
|
||||
idDB = HiddenVL(uid=uid, eventid=id, id=str(uid) + id, name=name)
|
||||
db.session.add(idDB)
|
||||
try:
|
||||
db.session.commit()
|
||||
except IntegrityError:
|
||||
return redirect(url_for("displayRapla", week=day))
|
||||
await createCustomCalendar(currentUser.id)
|
||||
return redirect(url_for("displayRapla", week=day))
|
||||
|
||||
@app.route("/plan/restore/event")
|
||||
@loginRequired
|
||||
async def restoreEvent():
|
||||
id = str(request.args.get("id"))
|
||||
uid = currentUser.id
|
||||
entry = HiddenVL.query.filter_by(id=str(uid) + id).first()
|
||||
db.session.delete(entry)
|
||||
db.session.commit()
|
||||
await createCustomCalendar(currentUser.id)
|
||||
return redirect(url_for("restoreVL"))
|
||||
|
||||
@app.route("/log-in", methods=["POST"])
|
||||
async def login_post():
|
||||
"""
|
||||
@ -315,8 +355,9 @@ def initRoutes(app: Flask):
|
||||
logoutUser()
|
||||
redirection = make_response(redirect(url_for("login", code=1, next=url_for("welcome"))))
|
||||
redirection.set_cookie("cnsc", value="Logged out! Your temporary token "
|
||||
"on our server and the cookie on your device have been deleted.", httponly=True,
|
||||
secure=True)
|
||||
"on our server and the cookie on your device have been deleted.",
|
||||
httponly=True,
|
||||
secure=True)
|
||||
return redirection
|
||||
|
||||
@app.route("/error")
|
||||
|
||||
Reference in New Issue
Block a user