Uppladdning av foton

This commit is contained in:
Thomas Lovén 2017-05-18 14:50:06 +02:00
parent 5bef7182f9
commit 0cdc75f1f9
2 changed files with 56 additions and 7 deletions

View File

@ -103,12 +103,22 @@
</div>
<div class="panel-body">
<div class="panel panel-primary">
<div class="panel-heading">
Ladda upp foto
</div>
<div class="panel-body">
<form class="form-inline">
<div class="form-group">
<input type="file">
<form method="post" action="{{url_for('upload')}}" class="form-inline" enctype="multipart/form-data">
<div class="input-group">
<label class="input-group-btn">
<span class="btn btn-primary">
<span class="glyphicon glyphicon-folder-open"></span>
<span class="glyphicon glyphicon-option-horizontal"></span>
<input name="photo" type="file" style="display: none;" id="photo-upload">
</span>
</label>
<input type="text" class="form-control" readonly id="photo-name">
</div>
<button type="submit" class="btn btn-default">Ladda upp foto</button>
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-upload"></button>
</form>
</div>
</div>
@ -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)
});
</script>
{% endblock %}

View File

@ -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/<parent>')
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/<id>')
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'))