2014-05-22 14:09:22 +00:00
|
|
|
#!/usr/bin/env python2.7
|
|
|
|
|
|
|
|
import os
|
2014-05-25 13:45:54 +00:00
|
|
|
from flask import Flask,render_template,abort,redirect,url_for,request,session
|
2014-05-22 14:28:15 +00:00
|
|
|
from database import db_session as db
|
2014-05-25 13:45:54 +00:00
|
|
|
from models import *
|
2014-05-22 14:09:22 +00:00
|
|
|
|
|
|
|
app=Flask(__name__)
|
|
|
|
|
2014-05-25 13:45:54 +00:00
|
|
|
def loggedin():
|
|
|
|
username=session.get('user')
|
|
|
|
password=session.get('pass')
|
|
|
|
if username and password:
|
|
|
|
user=db.query(User).filter_by(username=username).first()
|
|
|
|
if user:
|
|
|
|
if user.checkpass(password):
|
|
|
|
session['id']=user.id
|
|
|
|
return True
|
|
|
|
return False
|
|
|
|
|
|
|
|
def setuser(name,pwd):
|
|
|
|
session['user']=name
|
|
|
|
session['pass']=pwd
|
|
|
|
|
2014-05-22 14:15:03 +00:00
|
|
|
@app.errorhandler(404)
|
|
|
|
def err404(err):
|
|
|
|
return redirect(url_for('index'))
|
|
|
|
|
|
|
|
@app.route('/')
|
|
|
|
def index():
|
2014-05-25 13:45:54 +00:00
|
|
|
if not loggedin():
|
|
|
|
return redirect(url_for('login'))
|
|
|
|
diaries=db.query(Diary).filter_by(owner=session['id']).all()
|
2014-05-28 19:06:17 +00:00
|
|
|
if request.args.get('error') == '1':
|
|
|
|
error='you already used that name'
|
|
|
|
else:
|
|
|
|
error=''
|
|
|
|
return render_template('index.html',diaries=diaries, error=error)
|
2014-05-22 14:15:03 +00:00
|
|
|
|
2014-05-25 13:45:54 +00:00
|
|
|
@app.route('/login',methods=['GET','POST'])
|
2014-05-22 15:02:49 +00:00
|
|
|
def login():
|
2014-05-25 13:45:54 +00:00
|
|
|
if request.method=='GET':
|
|
|
|
return render_template('login.html')
|
|
|
|
username=request.form['user']
|
|
|
|
password=request.form['pass']
|
|
|
|
setuser(username,password)
|
|
|
|
if not loggedin():
|
|
|
|
setuser('','')
|
|
|
|
return redirect(url_for('index'))
|
|
|
|
|
|
|
|
@app.route('/logout')
|
|
|
|
def logout():
|
|
|
|
setuser('','')
|
|
|
|
return redirect(url_for('index'))
|
|
|
|
|
2014-05-28 19:06:17 +00:00
|
|
|
@app.route('/newdiary',methods=['POST'])
|
2014-05-28 18:31:01 +00:00
|
|
|
def newdiary():
|
|
|
|
if not loggedin():
|
|
|
|
abort(403)
|
2014-05-28 19:06:17 +00:00
|
|
|
d=db.query(Diary).filter_by(name=request.form['name'], owner=session['id']).first()
|
|
|
|
if d:
|
|
|
|
return redirect(url_for('index', error=1))
|
|
|
|
nd=Diary(session['id'], request.form['name'])
|
|
|
|
db.add(nd)
|
2014-05-28 18:31:01 +00:00
|
|
|
db.commit()
|
|
|
|
return redirect(url_for('diary', name=request.form['name']))
|
|
|
|
|
|
|
|
|
2014-05-25 13:45:54 +00:00
|
|
|
@app.route('/diary/<name>')
|
|
|
|
def diary(name=''):
|
|
|
|
if not loggedin():
|
|
|
|
abort(403)
|
|
|
|
d=db.query(Diary).filter_by(name=name,owner=session['id']).first()
|
|
|
|
if not d:
|
|
|
|
abort(404)
|
2014-05-25 14:01:40 +00:00
|
|
|
ents=db.query(Entry).filter_by(diary=d.id).order_by(Entry.date).all()[::-1]
|
2014-05-25 13:45:54 +00:00
|
|
|
return render_template('diary.html',diary=d,entries=ents)
|
|
|
|
|
|
|
|
@app.route('/diary/<name>/addentry',methods=['POST'])
|
|
|
|
def addentry(name=''):
|
|
|
|
if not loggedin():
|
|
|
|
abort(403)
|
|
|
|
d=db.query(Diary).filter_by(name=name,owner=session['id']).first()
|
|
|
|
if not d:
|
|
|
|
abort(404)
|
|
|
|
e=Entry(d.id,request.form['text'])
|
|
|
|
db.add(e)
|
|
|
|
db.commit()
|
2014-05-25 13:54:54 +00:00
|
|
|
return redirect(url_for('diary',name=name))
|
2014-05-22 15:02:49 +00:00
|
|
|
|
2014-05-22 14:09:22 +00:00
|
|
|
if __name__=='__main__':
|
|
|
|
app.debug=True
|
|
|
|
app.secret_key=os.urandom(64)
|
|
|
|
app.run(host='127.0.0.1',port=1338)
|