def articles_detail_internal(req, article, **kwargs): if article.format == FORMAT_RST: article.perex = rst2html(article.perex) article.body = rst2html(article.body) if article.data.get('discussion', True): discussion = ArticleComment.list(req, article.id, Pager(limit=-1)) else: discussion = [] qid = randint(0, len(robot_questions)-1) question, answer = robot_questions[qid] return generate_page(req, "articles_detail.html", article=article, discussion=discussion, question=question, answer=answer, qid=hex(qid), staticmenu=req.cfg.get_static_menu(req), styles=('tiny-writer',), **kwargs)
def articles_rss(req): pager = Pager(limit=5, sort='desc', order='create_date') items = Article.list(req, pager, perex=True, public=1) for it in items: if it.format == FORMAT_RST: it.perex = rst2html(it.perex) return generate_page(req, "articles_rss.xml", content_type="application/xml", pager=pager, items=items, lang=get_lang(req), tzname=tzname, webmaster=req.server_admin)
def articles_list_full(req, locale=None, tag=None): pager = Pager(limit=5, sort='desc', order='create_date') pager.bind(req.args) kwargs = {'locale': (locale, '')} if locale else {} items = Article.list(req, pager, perex=True, public=1, tag=tag, **kwargs) for it in items: if it.format == FORMAT_RST: it.perex = rst2html(it.perex) lang = locale if locale else get_lang(req) return generate_page(req, "articles_list.html", pager=pager, items=items, lang=lang, staticmenu=req.cfg.get_static_menu(req))
def runtime_file(req): text = None if req.uri == '/': text = Page.text_by_name(req, 'index.html') elif req.uri.endswith('.html'): text = Page.text_by_name(req, req.uri[req.uri.rfind('/')+1:]) else: # without .html text = Page.text_by_name(req, req.uri[req.uri.rfind('/')+1:]+'.html') if text is None: text = Page.text_by_name(req, req.uri[req.uri.rfind('/')+1:]+'.rst') if text is None: raise SERVER_RETURN(state.HTTP_NOT_FOUND) text = rst2html(text) return generate_page(req, 'runtime_file.html', text=text, runtime=True)
def regenerate(self, req): if req.cfg.pages_runtime: return # not need where runtime is True with open(req.cfg.pages_source + '/' + self.name, 'r') as f: self.text = f.read().decode('utf-8') target = req.cfg.pages_out + '/' + self.name if self.format == FORMAT_RST: self.html = rst2html(self.text) target += '.html' with open(target + '.tmp', 'w+') as tmp: tmp.write(generate_page( req, "page_file.html", page=self, staticmenu=req.cfg.get_static_menu(req)).encode('utf-8')) rename(target + '.tmp', target)
def save(self, req): source = req.cfg.pages_source + '/' + self.name with open(source + '.tmp', 'w+') as tmp: tmp.write(self.text.encode('utf-8')) if exists(source): # backup old file backup = req.cfg.pages_history + '/' + self.name copyfile(source, backup + '.' + datetime.now().isoformat()) rename(source + '.tmp', source) if req.cfg.pages_runtime: return # not need when paeges are runtime generated target = req.cfg.pages_out + '/' + self.name if self.format == FORMAT_RST: self.html = rst2html(self.text) target += '.html' with open(target + '.tmp', 'w+') as tmp: tmp.write(generate_page( req, "page_file.html", page=self, staticmenu=req.cfg.get_static_menu(req)).encode('utf-8')) rename(target + '.tmp', target)