file mangler
Remember to create a new static folder for script to work:
filemangler.py
from flask import * import os, sys app = Flask(__name__) if not os.path.exists(app.static_folder): os.makedirs(app.static_folder) current_folder = app.static_folder @app.route("/") def list_items(): global current_folder hide_back_link = False if current_folder == app.static_folder: hide_back_link = True return render_template("file_operations.html", hide_back_link = hide_back_link, folder = current_folder, contents = get_contents_of(current_folder)) @app.route("/<folder>") def open(folder): global current_folder current_folder = os.path.join(current_folder, folder) return redirect("/") @app.route("/[back]") def back(): global current_folder current_folder = os.path.dirname(current_folder) return redirect("/") def get_contents_of(path): fileList = [] folderList = [] global current_folder for item in os.scandir(path): #remove OSX files that start with a '.': if not item.name.startswith('.') and item.is_file(): relative_url = os.path.relpath(current_folder, app.static_folder) relative_link = os.path.join('static', relative_url, item.name) fileList.append([item.name, relative_link]) else: folderList.append(item.name) return [fileList, folderList] @app.route("/make_dir", methods=["POST"]) def make_dir(): global current_folder new_dir = os.path.join(current_folder, request.form["dir"]) if not os.path.exists(new_dir): os.makedirs(new_dir) return redirect("/") @app.route("/delete", methods=["POST"]) def delete(): global current_folder file_to_delete = os.path.join(current_folder, request.form["file_to_delete"]) os.remove(file_to_delete) return redirect("/") @app.route('/favicon.ico') def favicon(): return "" app.run(debug=True)
templates\file_operations.html
<h1>{{folder}}</h1> <h2>files:</h2> <form action="/delete" method="post"> {% for file in contents[0] %} <a href="{{file[1]}}">{{file[0]}}</a> <button type="submit" name="file_to_delete" value="{{file[0]}}">delete</button><br> {% endfor %} </form> <h2>folders:</h2> {% if hide_back_link == false %} <a href="/[back]">[back]</a><br> {% endif %} {% for folder in contents[1] %} <a href="/{{folder}}">{{folder}}</a><br> {% endfor %} <h2>make directory:</h2> <form action="/make_dir" method="post"> <input type="text" name="dir"> <input type="submit"> </form>