def post(self, request, slug=None, *args, **kwargs): if not users.is_current_user_admin(): return HttpResponseForbidden() post = self.get_object() if not post and slug: raise Http404() form = PostForm(request.POST) if not form.validate(): error_msg = [ "There are problems with the form:", ] error_msg = itertools.chain(error_msg, *form.errors.values()) return HttpResponseBadRequest("<br/>".join(error_msg)) # title has to exit at that point due to the validators new_slug = slugify(form.data["title"]) if slug is None and Post.get_by_slug(new_slug): return HttpResponseBadRequest("Post with this title alread exit") created = False if not post: created = True post = Post() form.populate_obj(post) post.author = users.get_current_user().nickname() post.put() context = self.get_context_data(post=post, short=created) return self.render_to_response(context)
def edit(post_id): post = Post.get_by_id(post_id) form = PostForm(request.form, obj=post) if request.method == "POST" and form.validate(): form.populate_obj(post) post.put() return redirect(post.get_url()) return render_template("form.html", form=form)
def edit(slug): post = Post.query.filter_by(slug=slug).first_or_404() form = PostForm(obj=post) tags_field = request.values.get('tags_field', _load_tags_field(post)) if form.validate_on_submit(): original_image = post.image original_title = post.title form.populate_obj(post) if form.image.data: f = form.image.data image_id = str(uuid.uuid4()) file_name = image_id + '.png' file_path = os.path.join(BLOG_POST_IMAGES_PATH, file_name) Image.open(f).save(file_path) _image_resize(BLOG_POST_IMAGES_PATH, image_id, 600, 'lg') _image_resize(BLOG_POST_IMAGES_PATH, image_id, 300, 'sm') post.image = image_id else: post.image = original_image if form.new_category.data: new_category = Category(form.new_category.data) db.session.add(new_category) db.session.flush() post.category = new_category #if form.new_goverment.data: # new_goverment = Goverment(form.new_goverment.data) # db.session.add(new_goverment) # db.session.flash() post.goverment = new_goverment if form.title.data != original_title: post.slug = slugify(str(post.id) + '-' + form.title.data) _save_tags(post, tags_field) db.session.commit() flash('Article edited') return redirect(url_for('.article', slug=post.slug)) return render_template('blog/post.html', form=form, post=post, action="edit", tags_field=tags_field)