def render_template(self, content_type, template_file, data=None): if data is None: data = {} data['admin'] = users.is_current_user_admin() data['settings'] = settings query = Page.gql("WHERE order_in_menu > 0 " "ORDER BY order_in_menu") data['pages'] = [p for p in query] template_path = os.path.join(os.path.dirname(__file__), "templates") output = template.render(os.path.join(template_path, template_file), data) self.render(content_type, output)
def post(self, slug=None): if slug: page = Page.gql("WHERE slug = :1", slug).get() else: page = Page() page.title = self.request.get('title') page.slug = self.request.get('slug') page.content = self.request.get('content') page.order_in_menu = int(self.request.get('order_in_menu')) page.put() self.redirect(page.get_url())
def get(self, slug): # we want a canonical url with the trailing slash # so if it's missing we need to throw a 301, adding the slash in # the process if slug[-1] != "/": self.redirect("%s/" % slug, True) return output = get_cache(slug) if output is None: try: item = Page.gql("WHERE internal_url=:1", slug)[0] except IndexError: self.error(404) output = self.render("404.html", {"title": "Page not found"}) self.response.out.write(output) return # get a list of related items based on taggings # remember to filter out the article we're on related = [] for tag in item.tags: related += (Tag.all().filter('name =', tag).filter('title !=', item.title)) # we also need to deduplicate the list as sometimes items # will share tags seen = [] deduped = [] for related_item in related: if not related_item.url in seen: deduped.append(related_item) seen.append(related_item.url) context = { "item": item, "related": deduped, "title": item.title, } output = self.render("item.html", context) memcache.add(slug, output, 3600) self.response.out.write(output)
def get(self, slug): page = Page.gql("WHERE slug = :1", slug).get() self.render_html("page_view", {'page': page})
def get(self, slug=None): if slug: page = Page.gql("WHERE slug = :1", slug).get() else: page = None self.render_html("page_edit", {'page': page})