def post(self): title = fromq(self.q("blogtitle")) subtitle = fromq(self.q("blogsubtitle")) charset = fromq(self.q("charset")) headlink = fromq(self.q("headlink").replace("\r", "").split("\n")) hub = fromq(self.q("hub").replace("\r", "").split("\n")) footer = fromq(self.q("footer")) posturl = fromq(self.q("posturl")) commentstatus = fromq(self.q("commentstatus")) commentneedcheck = fromq(self.q("commentneedcheck")) == "True" localtimezone = int(self.q("localtimezone")) if self.q("localtimezone").isdigit() else 8 author = fromq(self.q("author")) feed = fromq(self.q("feed")) feednumber = int(self.q("feednumber")) if self.q("feednumber").isdigit() else 20 feedshowpre = fromq(self.q("feedshowpre")) == "True" indexnumber = int(self.q("indexnumber")) if self.q("indexnumber").isdigit() else 20 indexshowpre = fromq(self.q("indexshowpre")) == "True" domain = self.q("domain") Config.title = title Config.subtitle = subtitle Config.charset = charset Config.headlink = headlink Config.footer = footer Config.localtimezone = localtimezone if Config.posturl != posturl: Config.posturl = posturl i = 0; posts = Model.Post.all().fetch(1000) postslen = len(posts) while postslen > 0: for p in posts: p.realurl = Base.processurl(p) p.put() i += postslen posts = Model.Post.all().fetch(1000, offset=i) Config.commentstatus = commentstatus Config.commentneedcheck = commentneedcheck Config.author = author Config.feed = feed Config.feednumber = feednumber Config.feedshowpre = feedshowpre Config.indexnumber = indexnumber Config.indexshowpre = indexshowpre Config.hub = hub Config.domain = domain self.redirect_self()
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")