mirror of
https://github.com/sigmasternchen/Diary
synced 2025-03-15 07:08:56 +00:00
Added a simple UI
This commit is contained in:
parent
84061ccd54
commit
7cb9335c0a
5 changed files with 103 additions and 6 deletions
|
@ -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()
|
||||||
|
|
61
server.py
61
server.py
|
@ -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
22
templates/diary.html
Normal 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>
|
|
@ -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
14
templates/login.html
Normal 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>
|
Loading…
Reference in a new issue