diff --git a/app/templates/admin.html b/app/templates/admin.html index 2a463e3..2351a4f 100644 --- a/app/templates/admin.html +++ b/app/templates/admin.html @@ -103,12 +103,22 @@
+
+ Ladda upp foto +
-
-
- + +
+ +
- +
@@ -149,5 +159,13 @@ $('#deletemodal').on('show.bs.modal', function (event) { modal.find('.modal-body p').text(message) modal.find('.modal-footer a').attr('href', href) }) + +$('#photo-upload').on('change', function (event) { + var filename = $(this).val() + filename = filename.replace(/\\/g, "/") + filename = filename.replace(/.*\//, "") + $('#photo-name').val(filename) +}); + {% endblock %} diff --git a/app/views.py b/app/views.py index f30d559..f1f4c39 100644 --- a/app/views.py +++ b/app/views.py @@ -1,4 +1,6 @@ +import os from flask import render_template, send_from_directory, redirect, url_for, request, render_template_string +from werkzeug.utils import secure_filename from . import app, db from .models import Page, Photo from .forms import PageForm @@ -47,7 +49,6 @@ def admin_page(id): return redirect(url_for('admin')) else: return render_template('admin_page.html', page=page, form=form) - @app.route('/admin/newpage/') def admin_newpage(parent): parent = Page.query.filter_by(id=parent).first_or_404() @@ -57,7 +58,6 @@ def admin_newpage(parent): db.session.commit() return redirect(url_for('admin')) - @app.route('/admin/delpage/') def admin_delpage(id): page = Page.query.filter_by(id=id).first_or_404() @@ -65,7 +65,38 @@ def admin_delpage(id): 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']) + +@app.route('/admin/upload', methods=['POST']) +def upload(): + from PIL import Image, ImageOps + def genimg(img, imgout, size): + img.thumbnail(size) + hpad = int((size[0]-img.size[0])/2) + vpad = int((size[1]-img.size[1])/2) + thumb = Image.new(mode='RGBA', size=size, color=(255,255,255,0)) + thumb.paste(img, (hpad, vpad)) + thumb.save(imgout) + if 'photo' in request.files: + file = request.files['photo'] + photo = Photo(alt="Nytt foto") + db.session.add(photo) + db.session.commit() + id = photo.id + tempname = os.path.join('app/photos', secure_filename(file.filename)) + file.save(tempname) + + img = Image.open(tempname) + filename = '{}.jpg'.format(id) + imgpath = os.path.join('app', 'photos', filename) + thumb = os.path.join('app', 'photos', 'thumbs', filename) + slide = os.path.join('app', 'photos', 'slides', filename) + img.save(imgpath, 'JPEG') + genimg(img, imgpath, img.size) + genimg(img, thumb, (171, 180)) + genimg(img, slide, (550, 400)) + os.remove(tempname) + + return redirect(url_for('admin'))