added upload new version of file into edit form

This commit is contained in:
nberting 2018-06-07 09:59:08 +02:00
parent 7938ec3591
commit 68c38ae198
5 changed files with 35 additions and 8 deletions

View File

@ -25,6 +25,7 @@ class EditForm(FlaskForm):
author = FieldList(FormField(AuthorForm, default=lambda: Author()), min_entries=1) author = FieldList(FormField(AuthorForm, default=lambda: Author()), min_entries=1)
category = StringField('category', validators=[InputRequired()]) category = StringField('category', validators=[InputRequired()])
year_published = StringField('year published', [validators.Length(max=4)],default=None) year_published = StringField('year published', [validators.Length(max=4)],default=None)
file = FileField()
class ChatForm(FlaskForm): class ChatForm(FlaskForm):
message = StringField('message', validators=[InputRequired()]) message = StringField('message', validators=[InputRequired()])

View File

@ -7,7 +7,7 @@
<form method="POST" action="{{ url_for('edit_book_by_id', id=book.id )}}"> <form method="POST" action="{{ url_for('edit_book_by_id', id=book.id )}}" enctype=multipart/form-data>
{{ form.csrf_token }} {{ form.csrf_token }}
<div class="form-group"><h1 class="header">{{ form.title.label }} {{ form.title(size=20, class="form-control") }}</h1></div> <div class="form-group"><h1 class="header">{{ form.title.label }} {{ form.title(size=20, class="form-control") }}</h1></div>
@ -32,10 +32,19 @@
</table> </table>
</div><br> </div><br>
<div class="form-group"> <div class="form-group">
{{ form.category.label }} {{ form.category(size=20, class="form-control") }} {{ form.category.label }} {{ form.category(size=20,
class="form-control") }}
</div><br> </div><br>
<div class="form-group"> <div class="form-group">
{{ form.year_published.label }} {{ form.year_published(size=4, class="form-control") }} {{ form.year_published.label }} {{ form.year_published(size=4, class="form-control") }}
</div>
<div class="form-group">
Current file: {{ book.file }}
</div>
<div class="form-group">
Upload new file: {{form.file}}
</div> </div>
<br> <br>
<button type="submit" class="btn btn-primary">Update</button> <button type="submit" class="btn btn-primary">Update</button>

View File

@ -134,16 +134,13 @@ def edit_book_by_id(id):
if request.method == 'POST': if request.method == 'POST':
if user_form.validate_on_submit(): if user_form.validate_on_submit():
# check if the post request has the file part # on submit, check fields
title = user_form.title.data # You could also have used request.form['name'] title = user_form.title.data
input_authors = user_form.author.data # You could also have used request.form['email'] input_authors = user_form.author.data
category = user_form.category.data category = user_form.category.data
year_published = user_form.year_published.data year_published = user_form.year_published.data
if year_published=="": if year_published=="":
year_published = None year_published = None
# save user to database
#book = Book(title, author, filename, cover, file_extension)
book = Book.query.filter_by(id=id).first() book = Book.query.filter_by(id=id).first()
book.title = title book.title = title
book.category = category book.category = category
@ -159,6 +156,26 @@ def edit_book_by_id(id):
a = Author(author_name=author_name) a = Author(author_name=author_name)
db.session.add(a) db.session.add(a)
book.authors.append(a) book.authors.append(a)
# editing / uploading new file
if user_form.file.data:
file = request.files['file']
if file.filename == '':
flash('No selected file')
return redirect(request.url)
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
allbooks = db.session.query(Book).all()
id = book.id
new_filename = str(id) +"_"+ filename
fullpath = os.path.join(app.config['UPLOAD_FOLDER'], new_filename)
name, file_extension = os.path.splitext(new_filename)
file.save(fullpath)
book.cover = get_cover(fullpath, name)
book.file = new_filename
else:
flash('allowed file formats: %s' % ALLOWED_EXTENSIONS)
db.session.commit() db.session.commit()
flash("%s updated" % (title)) flash("%s updated" % (title))
return redirect(url_for('show_book_by_id', id=id)) return redirect(url_for('show_book_by_id', id=id))

Binary file not shown.

BIN
whoosh/Book/_MAIN_4.toc Normal file

Binary file not shown.