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 add(): form = PostForm(request.form) if request.method == "POST" and form.validate(): post = Post(title=form.title.data, slug=form.slug.data, content=form.content.data) post.put() return redirect(post.get_url()) return render_template("form.html", form=form, section="add")
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 post(request, post): """ Create and edit Blog Posts Args post: Blog post that is being edited GET Method Display an empty form when adding a new post. Display a filled in form when editing an existing post. POST Method When submiting an existing post or creating a new post. """ form = PostForm(instance=post, initial={'draft': post and post.published == datetime.datetime.max}) edit = post != None if request.method == 'POST': if form.validate(request.form): post = form.save() if form.data['draft']: post.published= datetime.datetime.max post.put() else: if not post.path: post.published = datetime.datetime.now() post.publish() return render_to_response("blog/admin/published.html", {'config': config, 'post':post, 'draft': form.data['draft'], 'edit': edit,} ) template_vals = {'config': config, 'form': form.as_widget(), 'edit': edit, 'menu_new': not edit, } return render_to_response('blog/admin/edit.html', template_vals)