Mercurial > mamba
view mamba/forest.py @ 496:0c5853bb7a14
Timestamp uncurated level files.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Sat, 17 Sep 2011 23:02:24 +0200 |
parents | 5456db312f7f |
children | 91e1a95343b2 |
line wrap: on
line source
"""Where mamba's hang out with each other.""" from werkzeug.utils import secure_filename from flask import Flask, request, abort from datetime import datetime import os import sys app = Flask(__name__) app.config['LEVEL_FOLDER'] = None # set later def path(ctype): if ctype == "curated": return os.path.join(app.config['LEVEL_FOLDER'], 'curated') elif ctype == "uncurated": return os.path.join(app.config['LEVEL_FOLDER'], 'uncurated') abort(404, "Not found") def list_levels(folder): endl = len(".txt") files = [x[:-endl] for x in os.listdir(folder) if not x.startswith('.') and x.endswith('.txt')] return "\n".join(files) @app.route("/<ctype>/index") def index(ctype): ctype = path(ctype) return list_levels(ctype) @app.route("/<ctype>/level/<levelname>") def level(ctype, levelname): ctype = path(ctype) levelname = "%s.txt" % secure_filename(levelname) levelpath = os.path.join(ctype, levelname) if not os.path.isfile(levelpath): abort(404, "Level not found. Hsss.") with open(levelpath) as level: return level.read() @app.route("/save/<levelname>", methods=['GET', 'POST']) def save(levelname): ts = datetime.now().strftime("%Y%m%d.%H%M%S") levelname = "%s.%s.txt" % (secure_filename(levelname), ts) levelpath = os.path.join(path("uncurated"), levelname) if request.method == 'POST': if os.path.exists(levelpath): abort(409, "Mamba already resident.") leveldata = request.form['data'].encode('ascii') with open(levelpath, 'w') as level: level.write(leveldata) return "Ssss." else: abort(405, "Post levels here. Hsss.") if __name__ == "__main__": if len(sys.argv) != 3: print "Usage: python -m mamba.forest <port> <level folder>" sys.exit(1) host = '0.0.0.0' port = int(sys.argv[1]) level_folder = sys.argv[2] for ctype in ("curated", "uncurated"): folder = os.path.join(level_folder, ctype) if not os.path.exists(folder): os.makedirs(folder) if not os.path.isdir(folder): print "Level folder must be a folder." sys.exit(1) app.config['LEVEL_FOLDER'] = level_folder # app.debug = True app.run(host=host, port=port)