Uppladdning av foton
This commit is contained in:
parent
5bef7182f9
commit
0cdc75f1f9
@ -103,12 +103,22 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-body">
|
<div class="panel-heading">
|
||||||
<form class="form-inline">
|
Ladda upp foto
|
||||||
<div class="form-group">
|
|
||||||
<input type="file">
|
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" class="btn btn-default">Ladda upp foto</button>
|
<div class="panel-body">
|
||||||
|
<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"><span class="glyphicon glyphicon-upload"></button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -149,5 +159,13 @@ $('#deletemodal').on('show.bs.modal', function (event) {
|
|||||||
modal.find('.modal-body p').text(message)
|
modal.find('.modal-body p').text(message)
|
||||||
modal.find('.modal-footer a').attr('href', href)
|
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>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
37
app/views.py
37
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 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 . import app, db
|
||||||
from .models import Page, Photo
|
from .models import Page, Photo
|
||||||
from .forms import PageForm
|
from .forms import PageForm
|
||||||
@ -47,7 +49,6 @@ def admin_page(id):
|
|||||||
return redirect(url_for('admin'))
|
return redirect(url_for('admin'))
|
||||||
else:
|
else:
|
||||||
return render_template('admin_page.html', page=page, form=form)
|
return render_template('admin_page.html', page=page, form=form)
|
||||||
|
|
||||||
@app.route('/admin/newpage/<parent>')
|
@app.route('/admin/newpage/<parent>')
|
||||||
def admin_newpage(parent):
|
def admin_newpage(parent):
|
||||||
parent = Page.query.filter_by(id=parent).first_or_404()
|
parent = Page.query.filter_by(id=parent).first_or_404()
|
||||||
@ -57,7 +58,6 @@ def admin_newpage(parent):
|
|||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
return redirect(url_for('admin'))
|
return redirect(url_for('admin'))
|
||||||
|
|
||||||
@app.route('/admin/delpage/<id>')
|
@app.route('/admin/delpage/<id>')
|
||||||
def admin_delpage(id):
|
def admin_delpage(id):
|
||||||
page = Page.query.filter_by(id=id).first_or_404()
|
page = Page.query.filter_by(id=id).first_or_404()
|
||||||
@ -65,7 +65,38 @@ def admin_delpage(id):
|
|||||||
db.session.delete(page)
|
db.session.delete(page)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
return redirect(url_for('admin'))
|
return redirect(url_for('admin'))
|
||||||
|
|
||||||
@app.route('/admin/markdown', methods=['POST'])
|
@app.route('/admin/markdown', methods=['POST'])
|
||||||
def markdown():
|
def markdown():
|
||||||
return render_template_string('{{ md | markdown }}', md=request.form['md'])
|
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'))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user