def create_blog(): if 'userid' not in session: flash('Must be logged in to create blog', 'error') return redirect('/') if request.method == 'POST': tags = None if len(request.form['tags']) > 0: tags = [x.strip() for x in request.form['tags'].split(',')] validate_blog = Blog.validate_blog(request.form) if validate_blog: blog_data = blog_schema.dump(request.form) blog_data.data['content'] = request.form['editordata'] blog_data.data['user_id'] = session['userid'] new_blog = Blog.create_blog(blog_data.data) if tags: Tag.create_tags(data={'tags': tags, 'blog': new_blog.id}) file = request.files['file'] # if user does not select file, browser also # submit an empty part without filename if file and allowed_file(file.filename): filename = '{}_'.format(new_blog.id) + secure_filename( file.filename) file.save( os.path.join(app.config['BLOG_UPLOAD_FOLDER'], filename)) Blog.update_picture(data={ 'id': new_blog.id, 'filepath': filename }) return redirect('/blogs/{}'.format(new_blog.id)) tags = Tag.query.all() for tag in tags: tag.usage = len(tag.tag_has_blogs) return render_template('create_blog.html', tags=tags)
def edit_blog(id): if 'userid' not in session: return redirect('/') blog = Blog.query.get(id) if blog.user_id != session['userid']: flash('You cannot edit this blog', 'warning') return redirect('/blogs/{}'.format(id)) if request.method == 'POST': print(request.form) tags = None validate_blog = blog_schema.dump(request.form) if validate_blog: if blog.blog_has_tags: BlogTag.query.filter_by(blog_id=id).delete() if len(request.form['tags']) > 0: tags = [x.strip() for x in request.form['tags'].split(',')] if tags: Tag.create_tags(data={'tags': tags, 'blog': id}) if request.files['file']: if blog.pic_filepath is not None: delete_blog_picture(blog.pic_filepath) file = request.files['file'] if file and allowed_file(file.filename): filename = '{}_'.format(id) + secure_filename( file.filename) file.save( os.path.join(app.config['BLOG_UPLOAD_FOLDER'], filename)) Blog.update_picture(data={'id': id, 'filepath': filename}) blog.content = request.form['editordata'] blog.title = request.form['title'] db.session.commit() return redirect('/blogs/{}'.format(id)) blog.tags = '' for i, tag in enumerate(blog.blog_has_tags): if i == 0: blog.tags += tag.tag.text else: blog.tags += ', ' + tag.tag.text return render_template('edit_blog.html', blog=blog)