def edit_publication(publication=None): form = PublicationUploadForm(obj=publication) if publication: ensureEditable(publication) if form.validate_on_submit(): if not publication: publication = Publication(author_id=current_user.id, url_slug=generate_slug(form.title.data)) db.session.add(publication) publication.title = form.title.data publication.pub_year = form.pub_year.data publication.authors = form.authors.data publication.journal = form.journal.data publication.link = form.link.data publication.abstract = form.abstract.data publication.published = True for file in form.files.data: if file == '': continue f = File.fromUpload(file) db.session.add(f) publication.files.append(Attachment(file=f, name=file.filename)) db.session.commit() return redirect(url_for('edit_publication', publication=publication)) data = { 'publication': publication.serialize() if publication else None, 'form': form.serialize(), 'csrf_token': g.csrf_token } return render_vue(data, title='Edit' if publication else 'Create', menu='publications')