1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
import os, sys, model, message from bottle import debug, route, run, template, static_file, request, redirect, default_app from sqlalchemy.orm import relation, sessionmaker
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'library')) from beaker.middleware import SessionMiddleware
TITLE = "Simple Todo" WWW_ROOT = os.path.abspath(os.path.dirname(__file__))
session_marker = sessionmaker(bind=model.engine) orm_session = session_marker()
@route('/') def index(): todos = orm_session.query(model.Todo).order_by('-id')
return template("index", title=TITLE, todos=todos, flush_message=message.flush_message())
@route('/new', method='POST') def new(): name = request.forms.get("name").decode("utf-8"); if len(name) > 0: record = model.Todo(topic=name, status=False) orm_session.add(record) orm_session.commit() message.success(u"新增事項成功") else: message.error(u"沒有輸入項目") redirect("/")
@route('/delete/:id') def delete(id): todo = orm_session.query(model.Todo).filter_by(id=id).first() if todo: orm_session.delete(todo) orm_session.commit() message.success(u"刪除事項成功") else: message.error(u"找不到記錄")
redirect("/")
@route('/finish/:id') def finish(id): todo = orm_session.query(model.Todo).filter_by(id=id).first() if todo: orm_session.query(model.Todo).filter_by(id=id).update({ model.Todo.status: True }) orm_session.commit() message.success(u"完成事項成功") else: message.error(u"找不到記錄")
redirect("/")
@route('/unfinish/:id') def unfinish(id): todo = orm_session.query(model.Todo).filter_by(id=id).first() if todo: orm_session.query(model.Todo).filter_by(id=id).update({ model.Todo.status: False }) orm_session.commit() message.success(u"恢復事項成功") else: message.error(u"找不到記錄") redirect("/")
@route('/edit/:id') def edit(id): todo = orm_session.query(model.Todo).filter_by(id=id).first() if todo: return template("edit", title=TITLE, todo=todo, flush_message=message.flush_message()) else: message.error(u"找不到記錄") redirect("/")
@route('/save', method="POST") def save(): id = request.forms.get("id").decode("utf-8"); name = request.forms.get("name").decode("utf-8");
if id is None or id == "": message.error(u"找不到記錄") elif len(name) < = 0: message.error(u"沒有輸入項目") else: todo = orm_session.query(model.Todo).filter_by(id=id).first() if todo: orm_session.query(model.Todo).filter_by(id=id).update({ model.Todo.topic: name }) orm_session.commit()
message.success(u"編輯事項成功")
redirect("/")
@route('/static/:path#.+#') def static_folder(path): return static_file(path, root=os.path.join(WWW_ROOT, 'static'))
if __name__ == "__main__": debug(True) app = default_app() session_options = { 'session.type': 'file', 'session.cookie_expires': 300, 'session.data_dir': './data', 'session.auto': True } app = SessionMiddleware(app, session_options) run(host='localhost', port=8082, reloader=True, app=app)
|