示例#1
0
文件: Admin.py 项目: dreampuf/Banana
    def post(self, slug=None):
        if slug != None and slug == "new":
            try:
                p = Model.Post()
                p.title = fromq(self.q("title"))
                p.author = Model.User.all().get() #TODO
                category = Model.Category.get(fromq(self.q("category")))
                p.category = category
                p.created = datetime.datetime.now()
                p.url = fromq(self.q("url"))
                Base.processurl(p)
                p.created = Base.ParserLocalTimeToUTC(self.q("created"))
                p.content = fromq(self.q("content"))
                p.precontent = fromq(self.q("precontent"))
                p.put()

                tags = fromq(self.q("tag")).split(",")
                if len(tags) == 1 and tags[0] == "":
                    pass
                else:
                    for i in tags:
                        t = Model.Tag.all().filter("title =", i).get()
                        if t == None:
                            t = Model.Tag(title=i, description="在神秘的 %s 我降临啦" % datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S"))
                            t.put()

                        rela = Model.tags_posts.all().filter("tag =", t).filter("post =", p).get()
                        if rela == None:
                            rela = Model.tags_posts()
                            rela.post = p
                            rela.tag = t
                            rela.put()

                Base.pinghub()
            except:
                exc_type, exc_value, exc_traceback = sys.exc_info()
                logging.info("save fail in Post case :%s" %(traceback.format_exception(exc_type,
                                                                                            exc_value,
                                                                                            exc_traceback), ))
        elif slug != None:
            try:
                p = Model.Post.get(slug)
                if p == None:
                    self.redirect("/admin/post")
                    return
                action = self.q("action")
                if action == "delete":
                    Model.Comment.deletes(Model.Comment.all().filter("belong =", p).fetch(1000))
                    Model.tags_posts.deletes(Model.tags_posts.all().filter("post =", p).fetch(1000))
                    p.delete()
                    self.write("ok")
                    return
                else:
                    p.title = fromq(self.q("title"))
                    p.author = Model.User.all().get() #TODO
                    category = Model.Category.get(fromq(self.q("category")))
                    p.category = category
                    p.url = fromq(self.q("url"))
                    Base.processurl(p)
                    p.created = Base.ParserLocalTimeToUTC(self.q("created"))
                    p.content = fromq(self.q("content"))
                    p.precontent = fromq(self.q("precontent"))
                    p.put()

                tags = fromq(self.q("tag")).split(",")
                if tags == None:
                    ralas = Model.tags_posts.all().filter("post =", p).fetch(1000)
                    Model.tags_posts.deletes(ralas)
                else:
                    for i in tags:
                        t = Model.Tag.all().filter("title =", i).get()
                        if t == None:
                            t = Model.Tag(title=i, description="在神秘的 %s 我降临啦" % datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S"))
                            t.put()

                        rela = Model.tags_posts.all().filter("tag =", t).filter("post =", p).get()
                        if rela == None:
                            rela = Model.tags_posts()
                            rela.post = p
                            rela.tag = t
                            rela.put()

            except:
                exc_type, exc_value, exc_traceback = sys.exc_info()
                logging.info("save fail in Post case :%s" %(traceback.format_exception(exc_type,
                                                                                            exc_value,
                                                                                            exc_traceback), ))

        self.redirect("/admin/post")