2017-05-18 12:00:48 +02:00

72 lines
2.2 KiB
Python

from flask import render_template, send_from_directory, redirect, url_for, request, render_template_string
from . import app, db
from .models import Page, Photo
from .forms import PageForm
@app.route('/')
@app.route('/<path:permalink>')
def page(permalink=""):
permalink = permalink.strip("/")
print("asked for:" + permalink)
page = Page.query.filter_by(permalink=permalink).first_or_404()
return render_template("page.html", page = page)
@app.route('/photo/<id>')
def photo(id):
return send_from_directory('photos', '{}.jpg'.format(id))
@app.route('/thumbnail/<id>')
def thumbnail(id):
return send_from_directory('photos/thumbs', '{}.jpg'.format(id))
@app.route('/slide/<id>')
def slide(id):
return send_from_directory('photos/slides', '{}.jpg'.format(id))
@app.route('/favicon.ico')
def favicon():
return send_from_directory('static', 'favicon.ico')
@app.route('/admin')
def admin():
pages = [Page.query.first()]
photos = Photo.query.all()
return render_template("admin.html", pages=pages, photos=photos)
@app.route('/admin/page/<id>', methods=['GET', 'POST'])
def admin_page(id):
page = Page.query.filter_by(id=id).first_or_404()
form = PageForm(obj=page)
form.thumbnail.query = form.photos.query = Photo.query.all()
if form.validate_on_submit():
form.populate_obj(page)
db.session.commit()
return redirect(url_for('admin'))
else:
return render_template('admin_page.html', page=page, form=form)
@app.route('/admin/newpage/<parent>')
def admin_newpage(parent):
parent = Page.query.filter_by(id=parent).first_or_404()
new = Page(name="child_{}".format(len(parent.children)+1), title="Ny sida", endpoint=True, parent=parent, parent_id=parent.id)
db.session.add(new)
db.session.commit()
return redirect(url_for('admin'))
@app.route('/admin/delpage/<id>')
def admin_delpage(id):
page = Page.query.filter_by(id=id).first_or_404()
root = Page.query.filter_by(id=1).first()
db.session.delete(page)
db.session.commit()
return redirect(url_for('admin'))
@app.route('/admin/markdown', methods=['POST'])
def markdown():
return render_template_string('{{ md | markdown }}', md=request.form['md'])