Added a simple UI

This commit is contained in:
benaryorg 2014-05-25 15:45:54 +02:00
parent 84061ccd54
commit 7cb9335c0a
5 changed files with 103 additions and 6 deletions

View file

@ -38,4 +38,5 @@ class Entry(Base):
def __init__(self,diary,text): def __init__(self,diary,text):
self.diary=diary self.diary=diary
self.text=text self.text=text
self.date=datetime.datetime.now().strftime("%Y-%m-%d") #self.date=datetime.datetime.now().strftime("%Y-%m-%d")
self.date=datetime.datetime.now()

View file

@ -1,22 +1,75 @@
#!/usr/bin/env python2.7 #!/usr/bin/env python2.7
import os import os
from flask import Flask,render_template,abort,redirect,url_for,request from flask import Flask,render_template,abort,redirect,url_for,request,session
from database import db_session as db from database import db_session as db
from models import *
app=Flask(__name__) app=Flask(__name__)
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
@app.errorhandler(404) @app.errorhandler(404)
def err404(err): def err404(err):
return redirect(url_for('index')) return redirect(url_for('index'))
@app.route('/') @app.route('/')
def index(): def index():
return render_template('index.html') if not loggedin():
return redirect(url_for('login'))
diaries=db.query(Diary).filter_by(owner=session['id']).all()
return render_template('index.html',diaries=diaries)
@app.route('/login',methods=['GET','POST','PUT']) @app.route('/login',methods=['GET','POST'])
def login(): def login():
return 'login' 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'))
@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)
ents=db.query(Entry).filter_by(diary=d.id).all()
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()
return 'success'
if __name__=='__main__': if __name__=='__main__':
app.debug=True app.debug=True

22
templates/diary.html Normal file
View file

@ -0,0 +1,22 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Diary {{ diary.name }}</title>
<link rel="stylesheet" href="{{ url_for('static',filename='style.css') }}"/>
<script src="{{ url_for('static',filename='script.js') }}"></script>
</head>
<body>
<p>{{ diary.name }}:</p>
<div>
{% for e in entries %}
<p>
{{ e.date }}:
<p>
{{ e.text }}
</p>
</p>
{% endfor %}
</div>
</body>
</html>

View file

@ -7,6 +7,13 @@
<script src="{{ url_for('static',filename='script.js') }}"></script> <script src="{{ url_for('static',filename='script.js') }}"></script>
</head> </head>
<body> <body>
No content yet! <p><a href="{{ url_for('logout') }}">Logout</a></p>
<ul>
{% for d in diaries %}
<li>
<a href="{{ url_for('diary',name=d.name) }}">{{ d.name }}</a>
</li>
{% endfor %}
</ul>
</body> </body>
</html> </html>

14
templates/login.html Normal file
View file

@ -0,0 +1,14 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Diary Login</title>
</head>
<body>
<form method="POST">
<input type="text" name="user" placeholder="Username"/><br/>
<input type="password" name="pass" placeholder="Password"/><br/>
<button type="submit">Login</button>
</form>
</body>
</html>