CRUD for tasks, dirs and options.

Added flash messages
This commit is contained in:
simon
2018-03-07 20:00:10 -05:00
parent 1602f47b4e
commit eab21fbfe6
9 changed files with 251 additions and 65 deletions

84
run.py
View File

@@ -1,11 +1,12 @@
from flask import Flask, render_template, send_file, request, redirect
from flask import Flask, render_template, send_file, request, redirect, flash, session
from indexer import Indexer
from storage import Directory, Option
from storage import Directory, Option, Task
import json
# indexer = Indexer("fse")
app = Flask(__name__)
app.secret_key = "A very secret key"
#
# class Document:
# def __init__(self, doc_id, name, path, size, md5):
@@ -118,7 +119,7 @@ app = Flask(__name__)
# return send_file("thumbnails/" + doc_id, mimetype=mimetypes.guess_type(thumb_path)[0])
# else:
# return "File not found"
from storage import LocalStorage
from storage import LocalStorage, DuplicateDirectoryException
storage = LocalStorage("local_storage.db")
@@ -128,12 +129,9 @@ def tmp_route():
@app.route("/directory")
def directory():
def dir_list():
directories = storage.dirs()
print(directories)
return render_template("directory.html", directories=directories)
return render_template("directory.html", directories=storage.dirs())
@app.route("/directory/add")
@@ -142,15 +140,16 @@ def directory_add():
path = request.args.get("path")
name = request.args.get("name")
print(name)
if path is not None and name is not None:
d = Directory(path, True, [], name)
storage.save_directory(d)
return redirect("/directory")
try:
storage.save_directory(d)
flash("<strong>Created directory</strong>", "success")
except DuplicateDirectoryException:
flash("<strong>Couldn't create directory</strong> Make sure that the path is unique", "danger")
return "Error" # todo better message
return redirect("/directory")
@app.route("/directory/<int:dir_id>")
@@ -161,6 +160,30 @@ def directory_manage(dir_id):
return render_template("directory_manage.html", directory=directory)
@app.route("/directory/<int:dir_id>/update")
def directory_update(dir_id):
directory = storage.dirs()[dir_id]
name = request.args.get("name")
name = directory.name if name is None else name
enabled = request.args.get("enabled")
enabled = directory.enabled if enabled is None else int(enabled)
path = request.args.get("path")
path = directory.path if path is None else path
# Only name and enabled status can be updated
updated_dir = Directory(path, enabled, directory.options, name)
updated_dir.id = dir_id
storage.update_directory(updated_dir)
flash("<strong>Updated directory</strong>", "success")
return redirect("/directory/" + str(dir_id))
@app.route("/directory/<int:dir_id>/add_opt")
def directory_add_opt(dir_id):
@@ -169,6 +192,7 @@ def directory_add_opt(dir_id):
if key is not None and value is not None:
storage.save_option(Option(key, value, dir_id))
flash("<strong>Added option</strong>", "success")
return redirect("/directory/" + str(dir_id))
@@ -177,6 +201,17 @@ def directory_add_opt(dir_id):
def directory_del_opt(dir_id, opt_id):
storage.del_option(opt_id)
return redirect("/directory/" + str(dir_id))
@app.route("/directory/<int:dir_id>/update_opt")
def directory_update_opt(dir_id):
opt_id = request.args.get("id")
opt_key = request.args.get("key")
opt_value = request.args.get("value")
storage.update_option(Option(opt_key, opt_value, dir_id, opt_id))
return redirect("/directory/" + str(dir_id))
@@ -185,6 +220,7 @@ def directory_del_opt(dir_id, opt_id):
def directory_del(dir_id):
storage.remove_directory(dir_id)
flash("<strong>Deleted directory</strong>", "success")
return redirect("/directory")
@@ -192,10 +228,24 @@ def directory_del(dir_id):
@app.route("/task")
def task():
tasks = storage.tasks()
directories = storage.dirs()
return render_template("task.html", tasks=storage.tasks(), directories=storage.dirs())
return render_template("task.html", tasks=tasks, directories=directories)
@app.route("/task/add")
def task_add():
type = request.args.get("type")
directory = request.args.get("directory")
storage.save_task(Task(type, directory))
return redirect("/task")
@app.route("/task/<int:task_id>/del")
def task_del(task_id):
storage.del_task(task_id)
return redirect("/task")
@app.route("/dashboard")