diff --git a/app/forms.py b/app/forms.py index 87c1e3a..d403a1f 100644 --- a/app/forms.py +++ b/app/forms.py @@ -1,7 +1,8 @@ from flask_wtf import FlaskForm -from wtforms import StringField, BooleanField, TextAreaField, SelectField, SelectMultipleField, SubmitField +from wtforms import StringField, BooleanField, TextAreaField, SubmitField from wtforms import widgets from wtforms.validators import DataRequired +from wtforms.ext.sqlalchemy.fields import QuerySelectField, QuerySelectMultipleField class PageForm(FlaskForm): @@ -9,6 +10,9 @@ class PageForm(FlaskForm): title = StringField('Title', validators=[DataRequired()]) description = TextAreaField('Beskrivning') endpoint = BooleanField('Produkt') - thumbnail = SelectField('Bild') - photos = SelectMultipleField('Galleri', option_widget=widgets.CheckboxInput(), widget=widgets.ListWidget(prefix_label=False)) + thumbnail = QuerySelectField('Bild', get_label='alt') + photos = QuerySelectMultipleField('Galleri', + option_widget=widgets.CheckboxInput(), + widget=widgets.ListWidget(prefix_label=False), + get_label = lambda p: ''.format(p.id)) submit = SubmitField('Ok') diff --git a/app/models.py b/app/models.py index 52985aa..ad03476 100644 --- a/app/models.py +++ b/app/models.py @@ -30,7 +30,6 @@ class Page(db.Model): description = db.Column(db.Text(), index=True, default="") thumbnail = db.relationship('Photo', secondary=thumbnails, uselist=False) - photos = db.relationship('Photo', secondary=photos) endpoint = db.Column(db.Boolean) diff --git a/app/templates/admin_page.html b/app/templates/admin_page.html index 195f15e..2cc449f 100644 --- a/app/templates/admin_page.html +++ b/app/templates/admin_page.html @@ -25,11 +25,9 @@
-
+
{{ form.thumbnail(class_="form-control") }} -
-
- +
@@ -71,6 +69,9 @@ $('#description').change(function() { $.post("/admin/markdown", {md: $('#description').val()}).done(function(data) { $('#preview').html(data); }); +}); +$('#thumbnail').change(function() { + $('#thumbnail-display').attr('src', '/thumbnail/'+$(this).val()); }); {% endblock %} diff --git a/app/views.py b/app/views.py index 9c58081..f30d559 100644 --- a/app/views.py +++ b/app/views.py @@ -38,31 +38,14 @@ def admin(): @app.route('/admin/page/', methods=['GET', 'POST']) def admin_page(id): page = Page.query.filter_by(id=id).first_or_404() - form = PageForm() - photos = Photo.query.all() - form.photos.choices = [('{}'.format(p.id), ''.format(p.id)) for p in photos] - form.thumbnail.choices = [('{}'.format(p.id), p.alt) for p in photos] + form = PageForm(obj=page) + form.thumbnail.query = form.photos.query = Photo.query.all() if form.validate_on_submit(): - page.name = form.name.data - page.title = form.title.data - page.description = form.description.data - page.endpoint = form.endpoint.data - page.thumbnail = Photo.query.filter_by(id=form.thumbnail.data).first() - page.photos = [Photo.query.filter_by(id=int(p)).first() for p in form.photos.data] - - db.session.add(page) + form.populate_obj(page) db.session.commit() return redirect(url_for('admin')) - else: - form.name.data = page.name - form.title.data = page.title - form.description.data = page.description - form.endpoint.data = page.endpoint - print(page.thumbnail) - form.thumbnail.data = str(page.thumbnail.id) if page.thumbnail else '1' - form.photos.data = [str(p.id) for p in page.photos] return render_template('admin_page.html', page=page, form=form) @app.route('/admin/newpage/')