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):
|
||||
self.diary=diary
|
||||
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
|
||||
|
||||
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 models import *
|
||||
|
||||
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)
|
||||
def err404(err):
|
||||
return redirect(url_for('index'))
|
||||
|
||||
@app.route('/')
|
||||
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():
|
||||
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__':
|
||||
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>
|
||||
</head>
|
||||
<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>
|
||||
</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