def get(self, slug=None): if slug: slug = slug.rstrip('/') this_category = None if slug: # Get all the categories and search for one with the right slug, # instead of actually querying for the right category, since # get_categories() is cached. slug = slug.rstrip('/') for category in self.categories: if category.slug == slug: this_category = category break else: raise tornado.web.HTTPError(404) title = opts.blog_name if this_category: title = '%s - Posts about %s' % (title, this_category.name) author = {'name': opts.author_display_name, 'email': opts.author_email} if this_category: feed_url = absolute( self.reverse_url('category-feed', this_category.slug)) else: feed_url = absolute(self.reverse_url('feed')) if self.posts: updated = max(max(p.mod, p.date_created) for p in self.posts) else: updated = datetime.datetime.now(tz=self.application.settings['tz']) referer = self.request.headers.get('referer', '-') # (sic) feed = AtomFeed( title=title, feed_url=feed_url, url=absolute(self.reverse_url('home')), author=author, updated=updated, # TODO: customizable icon, also a 'logo' kwarg icon=absolute(self.reverse_url('theme-static', '/theme/static/square96.png')), generator=('Motor-Blog', 'https://github.com/ajdavis/motor-blog', '0.1'), ) for post in self.posts: url = absolute(self.reverse_url('post', post.slug)) body = post.body + '<img src="%s" width="1px" height="1px">' % ga_track_event_url( path=url, title=post.title, category_name=this_category.name if this_category else 'unknown', referer=referer ) feed.add( title=post.title, content=body, content_type='html', summary=post.summary, author=author, url=url, id=url, published=post.date_created, # Don't update 'updated' - it seems to make Planet Python re-post my updated items, # which is spammy. #updated=post.mod, updated=post.date_created, ) self.set_header('Content-Type', 'application/atom+xml; charset=UTF-8') self.write(unicode(feed)) self.finish()
def get(self, slug=None): if slug: slug = slug.rstrip('/') this_category = None categories = yield self.get_categories() if slug: # Get all the categories and search for one with the right slug, # instead of actually querying for the right category, since # get_categories() is cached. slug = slug.rstrip('/') for category in categories: if category.slug == slug: this_category = category break else: raise tornado.web.HTTPError(404) title = opts.blog_name if this_category: title = '%s - Posts about %s' % (title, this_category.name) author = {'name': opts.author_display_name, 'email': opts.author_email} if this_category: feed_url = absolute( self.reverse_url('category-feed', this_category.slug)) else: feed_url = absolute(self.reverse_url('feed')) posts_query = {'status': 'publish', 'type': 'post'} if slug: slug = slug.rstrip('/') posts_query['categories.slug'] = slug posts = yield self.get_posts( posts_query, {'summary': False, 'original': False}, [('pub_date', -1)], 0, 20) if posts: updated = max(max(p.mod, p.date_created) for p in posts) else: updated = datetime.datetime.now(tz=self.application.settings['tz']) icon = absolute( self.reverse_url('theme-static', '/theme/static/square96.png')) generator = ( 'Motor-Blog', 'https://github.com/ajdavis/motor-blog', '0.1') feed = AtomFeed( title=title, feed_url=feed_url, url=absolute(self.reverse_url('home')), author=author, updated=updated, # TODO: customizable icon, also a 'logo' kwarg icon=icon, generator=generator) for post in posts: url = absolute(self.reverse_url('post', post.slug)) tracking_pixel_url = ga_track_event_url(self.application, url) tracking_pixel = '<img src="%s" width="1px" height="1px">' \ % tracking_pixel_url feed.add( title=post.title, content=post.body + tracking_pixel, content_type='html', summary=post.summary, author=author, url=url, id=url, published=post.date_created, # Don't update 'updated' - it seems to make Planet Python # re-post my updated items, which is spammy. #updated=post.mod, updated=post.date_created, ) self.set_header('Content-Type', 'application/atom+xml; charset=UTF-8') self.write(unicode(feed)) self.finish()
def get(self, slug=None): if slug: slug = slug.rstrip('/') this_category = None if slug: # Get all the categories and search for one with the right slug, # instead of actually querying for the right category, since # get_categories() is cached. slug = slug.rstrip('/') for category in self.categories: if category.slug == slug: this_category = category break else: raise tornado.web.HTTPError(404) title = opts.blog_name if this_category: title = '%s - Posts about %s' % (title, this_category.name) author = {'name': opts.author_display_name, 'email': opts.author_email} if this_category: feed_url = absolute( self.reverse_url('category-feed', this_category.slug)) else: feed_url = absolute(self.reverse_url('feed')) if self.posts: updated = max(max(p.mod, p.date_created) for p in self.posts) else: updated = datetime.datetime.now(tz=self.application.settings['tz']) # referer = self.request.headers.get('referer', '-') # (sic) icon = absolute( self.reverse_url('theme-static', '/theme/static/square96.png')) generator = ( 'Motor-Blog', 'https://github.com/ajdavis/motor-blog', '0.1') feed = AtomFeed( title=title, feed_url=feed_url, url=absolute(self.reverse_url('home')), author=author, updated=updated, # TODO: customizable icon, also a 'logo' kwarg icon=icon, generator=generator) for post in self.posts: url = absolute(self.reverse_url('post', post.slug)) tracking_pixel_url = ga_track_event_url(self.application, url) tracking_pixel = '<img src="%s" width="1px" height="1px">' \ % tracking_pixel_url feed.add( title=post.title, content=post.body + tracking_pixel, content_type='html', summary=post.summary, author=author, url=url, id=url, published=post.date_created, # Don't update 'updated' - it seems to make Planet Python # re-post my updated items, which is spammy. #updated=post.mod, updated=post.date_created, ) self.set_header('Content-Type', 'application/atom+xml; charset=UTF-8') self.write(unicode(feed)) self.finish()