def post(self, page_id): page = self.get_page(page_id) for k in ("title", "slug", "content"): setattr(page, k, self.get_argument(k, getattr(page, k))) setattr(page, "published", bool(self.\ get_argument("published", False))) if not page.slug: page.slug = slugify(page.title) while Page.query.filter(Page.blog==self.blog).filter(Page.slug==page.slug).first(): page.slug += unicode(random.randint(0, 9)) for k in ("title", "content"): if not getattr(page, k): page.errors[k] = self.locale.translate("Cannot be empty") if not page.errors: if not page.id: self.orm.add(page) self.commit() self.redirect(self.application.reverse_url("PageEdit", page.id)) self.commit() return self.render("edit_page.html", page=page)
def post(self, post_id): post = self.get_post(post_id) for k in ("title", "content", "slug"): setattr(post, k, self.get_argument(k, getattr(post, k))) for k in ("published", "comments_allowed"): setattr(post, k, bool(self.get_arguments(k, False))) for k in ("title", "content"): if not getattr(post, k): post.errors[k] = self.locale.translate("Cannot by empty") if not post.slug: post.slug = slugify(post.title) while Post.query.filter(Post.blog==self.blog).filter(Post.slug==post.slug).first(): post.slug += unicode(random.randint(0, 9)) if not post.errors: tags = self.get_argument("tags", "") if tags: tags = list(set([t for t in tags.split(",") if t])) current_tags = [t.name for t in post.tags] new_tags = [Tag.query.\ filter(Tag.name==t).first() \ or Tag(name=t) \ for t in tags if not t in current_tags] for t in new_tags: post.tags.append(t) deleted_tags = [t for t in post.tags if not t.name in tags] for t in deleted_tags: post.tags.remove(t) if not t.posts: self.orm.delete(t) # bye bye if not post.id: self.orm.add(post) self.commit() self.redirect(self.application.reverse_url("PostEdit", post.id)) self.commit() return self.render("edit.html", post=post)