171 lines
6.3 KiB
Python
Executable File
171 lines
6.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
#coding: utf-8
|
|
from flask import Flask, render_template, Markup, request, redirect, url_for, make_response
|
|
from classes import task
|
|
from datetime import datetime, timedelta
|
|
from funcs import *
|
|
from random import choice
|
|
|
|
#!---------- sq_todo.py ----------
|
|
# My todo list
|
|
#-----------------------------!
|
|
|
|
|
|
#----------! MAIN
|
|
app = Flask(__name__)
|
|
mktaskdir()
|
|
|
|
|
|
#Homepage, GET : getting the page. Maybe getting it with arguments generated by a button on the page, in which case we take it into account
|
|
@app.route('/', methods=['GET'])
|
|
def render():
|
|
#Does the user have a theme ?
|
|
#theme list
|
|
themes = getthemes()
|
|
|
|
#Setting default theme if the user does not have one...
|
|
if request.cookies.get('csslink') is None:
|
|
csslink = themes[0]
|
|
resp = make_response(redirect(request.path,code=302))
|
|
resp.set_cookie("csslink", csslink)
|
|
return resp
|
|
#...or using their preferred theme if do have one
|
|
else:
|
|
csslink = request.cookies.get('csslink')
|
|
resp = make_response(render_template("homepage.html", ntodo = todotasks(gettasks()), npers = personnaltasks(gettasks()), ndone = donetasks(gettasks()), ndone_pers = donetasks_pers(gettasks()), csslink = csslink))
|
|
|
|
#Delete has been clicked
|
|
if request.args.get("delete") is not None:
|
|
todelete = request.args.get("delete")
|
|
deltask(int(todelete))
|
|
resp = make_response(render_template("homepage.html", ntodo = todotasks(gettasks()), npers = personnaltasks(gettasks()), ndone = donetasks(gettasks()), ndone_pers = donetasks_pers(gettasks()), csslink = csslink))
|
|
|
|
#Edit has been clicked
|
|
elif request.args.get("edit") is not None:
|
|
toedit = request.args.get("edit")
|
|
return redirect(url_for('edit', tasknumber=toedit))
|
|
|
|
#Switch theme has been clicked
|
|
elif request.args.get("switchpls") is not None:
|
|
switchpls = request.args.get("switchpls")
|
|
#Clicking "Change theme" switches to a random (other) theme
|
|
current = csslink
|
|
while csslink == current:
|
|
csslink = choice(themes)
|
|
|
|
#Commiting new theme, setting cookie for it, return template
|
|
resp = make_response(redirect(request.path,code=302))
|
|
resp.set_cookie('csslink', csslink)
|
|
return resp
|
|
|
|
#Read has been clicked
|
|
elif request.args.get("toread") is not None:
|
|
toread = request.args.get("toread")
|
|
return redirect(url_for('readmode', task=(int(toread))))
|
|
|
|
#Task is done or todo (switched)
|
|
elif request.args.get("toswitch") is not None:
|
|
toswitch = request.args.get("toswitch")
|
|
mytask = findtask(int(toswitch))
|
|
print(mytask)
|
|
mytask = switchstatus(mytask)
|
|
deltask(toswitch)
|
|
addtask(mytask)
|
|
resp = make_response(render_template("homepage.html", ntodo = todotasks(gettasks()), npers = personnaltasks(gettasks()), ndone = donetasks(gettasks()), ndone_pers = donetasks_pers(gettasks()), csslink = csslink))
|
|
else:
|
|
resp = make_response(render_template("homepage.html", ntodo = todotasks(gettasks()), npers = personnaltasks(gettasks()), ndone = donetasks(gettasks()), ndone_pers = donetasks_pers(gettasks()), csslink = csslink))
|
|
|
|
return resp
|
|
|
|
#Homepage, POST : a task has been written and posted
|
|
@app.route('/', methods=['POST'])
|
|
def homepage():
|
|
import time
|
|
|
|
#theme
|
|
csslink = request.cookies.get('csslink')
|
|
|
|
#New task
|
|
try:
|
|
tasktitle = request.form['title']
|
|
tasktext = request.form['text']
|
|
priority = request.form['priority']
|
|
|
|
if "personnal" in request.form.keys():
|
|
personnal = True
|
|
else:
|
|
personnal = False
|
|
|
|
print(f"Got new task with prio {priority}")
|
|
|
|
rightnow = int(time.time())
|
|
newtask = task(createtime=rightnow, modtime=rightnow, title=tasktitle, text=tasktext, done=False, priority=int(priority), personnal=False)
|
|
addtask(newtask)
|
|
except Exception as E:
|
|
print(f"!!!!!!!!!! {E} - {request.form}")
|
|
pass
|
|
return render_template("homepage.html", ntodo = todotasks(gettasks()), npers = personnaltasks(gettasks()), ndone = donetasks(gettasks()), ndone_pers = donetasks_pers(gettasks()), csslink = csslink)
|
|
|
|
|
|
#Export mode
|
|
@app.route('/export', methods=['GET'])
|
|
def rawtasks():
|
|
#No theme in export
|
|
return render_template("export.html", rawtasks = exporttasks())
|
|
|
|
#Edition mode
|
|
@app.route('/edit', methods=['GET', 'POST'])
|
|
def edit():
|
|
import time
|
|
#theme
|
|
csslink = request.cookies.get('csslink')
|
|
|
|
#Render edition page (Landing)
|
|
if request.method == "GET":
|
|
tasknumber = request.args.get("tasknumber")
|
|
mytask = findtask(int(tasknumber))
|
|
#Is task done ?
|
|
if mytask.donemark == "✅":
|
|
todoselected = ""
|
|
doneselected = "selected"
|
|
else:
|
|
todoselected = "selected"
|
|
doneselected = ""
|
|
|
|
#Is it personnal ?
|
|
if mytask.personnal:
|
|
pers_checked = "checked"
|
|
else:
|
|
pers_checked = ""
|
|
|
|
return render_template("edit.html", tasknumber=tasknumber, ntitle=mytask.title, ntext=mytask.text, csslink = csslink, priority=mytask.priority, taskdonemark=mytask.donemark, todoselected=todoselected, doneselected=doneselected, pers_checked=pers_checked)
|
|
|
|
#Handling post
|
|
if request.method == "POST":
|
|
#Load values
|
|
tasktitle = request.form['title']
|
|
tasktext = request.form['text']
|
|
tasknumber = int(request.form['tasknumber'])
|
|
taskpriority = int(request.form['priority'])
|
|
#Treat the "done" value which is annoying
|
|
doneselected = request.form['donemark']
|
|
if doneselected == "✅":
|
|
taskdone = True
|
|
else:
|
|
taskdone = False
|
|
if "personnal" in request.form.keys():
|
|
personnal = True
|
|
else:
|
|
personnal = False
|
|
deltask(tasknumber)
|
|
rightnow = int(time.time())
|
|
newtask = task(createtime=tasknumber, modtime=rightnow, title=tasktitle, text=tasktext, done=taskdone, priority=taskpriority, personnal = personnal)
|
|
addtask(newtask)
|
|
return render_template("homepage.html", ntodo = todotasks(gettasks()), npers = personnaltasks(gettasks()), ndone = donetasks(gettasks()), ndone_pers = donetasks_pers(gettasks()), csslink = csslink)
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
convertemoji()
|
|
app.run(host="0.0.0.0")
|