SqTasks/src/funcs.py
2022-09-24 11:37:24 +02:00

175 lines
3.9 KiB
Python

#!/usr/bin/env python3
#coding: utf-8
from classes import task
def mktaskdir():
"""
Create our data directory if does not exist.
"""
from os.path import exists
from os import mkdir
if not exists("./data"):
mkdir("./data")
def dumptasks(tasks):
"""
Get our tasks list and save them as pickle to tasks.pickle
"""
import pickle
with open('./data/tasks.pickle', 'wb') as mpf:
pickle.dump(tasks, mpf)
return True
def gettasks():
"""
Get our tasks from the file tasks.pickle
"""
from os.path import exists
import pickle
if exists("./data/tasks.pickle"):
with open('./data/tasks.pickle', 'rb') as mpf:
tasks = pickle.load(mpf)
else:
tasks = []
return tasks
def cattasks(tasklist: list):
"""
Concatenate a list of tasks into a str.
"""
final = ""
for task in tasklist:
final += task.flaskrender()
return final
def deltask(timestamp: int):
"""
Delete task in our pickle file for which the createtime corresponds to timestamp
"""
tasks = gettasks()
for task in tasks:
if int(task.createtime) == int(timestamp):
tasks.remove(task)
dumptasks(tasks)
return True
return False
def findtask(createtime: int):
"""
Find a task in our pickle file of tasks by its createtime
"""
tasks = gettasks()
for task in tasks:
if task.createtime == createtime:
return task
def addtask(mytask: task):
"""
Add a task to our tasks pickle file (and sort it).
"""
tasks = gettasks()
tasks.append(mytask)
tasks = sorted(tasks, key=lambda task: task.priority, reverse=True)
dumptasks(tasks)
def exporttasks():
"""
Export our tasks in markdown, one after the other.
"""
tasks = gettasks()
rawtext = ""
for task in tasks:
rawtext += f"#{task.title}\n"
rawtext += f"* Created: {task.rendertime(task.createtime)}\n"
rawtext += f"* Modified: {task.rendertime(task.modtime)}\n"
rawtext += f"{task.text}\n"
rawtext += f"-----\n\n"
return rawtext
return
def getthemes():
"""
Find all themes present in our css folder and return a nice list of
css links, for the user to pick into
"""
from flask import url_for
from os import listdir
allfiles = listdir("./static/styles")
themefiles, themes = [], []
for myfile in allfiles:
if myfile.endswith(".css"):
themefiles.append(myfile)
for themefile in themefiles:
themes.append(url_for('static', filename=f'styles/{themefile}'))
return themes
def switchstatus(task):
"""
Switches the status of a task from todo to done, or vice-versa
Also updates the modtime
"""
import time
rightnow = int(time.time())
if task.donemark == "":
task.donemark = "⚠️"
else:
task.donemark = ""
task.modtime=rightnow
return task
def todotasks(tasklist):
"""
Sorts tasks in tasklist: Gives todotasks sorted by priority
"""
buffer = []
finalstr = ""
for task in tasklist:
if task.donemark == "⚠️":
buffer.append(task)
tasks = sorted(buffer, key=lambda task: task.priority, reverse=True)
for task in tasks:
finalstr += task.flaskrender()
return finalstr
def donetasks(tasklist):
"""
Sorts tasks in tasklist: Gives done tasks sorted by modtime
"""
buffer = []
finalstr = ""
for task in tasklist:
if task.donemark == "":
buffer.append(task)
tasks = sorted(buffer, key=lambda task: task.modtime, reverse=True)
for task in tasks:
finalstr += task.flaskrender()
return finalstr
def convertemoji():
tasks = gettasks()
for task in tasks:
if task.donemark not in ["⚠️", ""]:
task.donemark = "⚠️"
dumptasks(tasks)