예제 #1
0
파일: admin.py 프로젝트: khameli/pblog
    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)
예제 #2
0
파일: admin.py 프로젝트: khameli/pblog
    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)