def template_info(source): """ get template information from a feedparser output """ # wire in support for planet:source, call feedparser, unplug planet:source mixin=feedparser._FeedParserMixin mixin._start_planet_source = mixin._start_source mixin._end_planet_source = \ new.instancemethod(_end_planet_source, None, mixin) data=feedparser.parse(source) del mixin._start_planet_source del mixin._end_planet_source # apply rules to convert feed parser output to htmltmpl input output = {'Channels': [], 'Items': []} output.update(tmpl_mapper(data.feed, Base)) sources = [(source.get('planet_name',None),source) for source in data.feed.get('sources',[])] sources.sort() for name, feed in sources: output['Channels'].append(tmpl_mapper(feed, Base)) for entry in data.entries: output['Items'].append(tmpl_mapper(entry, Items)) # synthesize isPermaLink attribute for item in output['Items']: if item.get('id') == item.get('link'): item['guid_isPermaLink']='true' else: item['guid_isPermaLink']='false' # feed level information output['generator'] = config.generator_uri() output['name'] = config.name() output['link'] = config.link() output['owner_name'] = config.owner_name() output['owner_email'] = config.owner_email() if config.feed(): output['feed'] = config.feed() output['feedtype'] = config.feed().find('rss')>=0 and 'rss' or 'atom' # date/time information date = time.gmtime() output['date'] = PlanetDate(date) output['date_iso'] = Rfc3399(date) output['date_822'] = Rfc822(date) # remove new_dates and new_channels that aren't "new" date = channel = None for item in output['Items']: if item.has_key('new_date'): if item['new_date'] == date: del item['new_date'] else: date = item['new_date'] if item.has_key('new_channel'): if item['new_channel'] == channel and not item.has_key('new_date'): del item['new_channel'] else: channel = item['new_channel'] return output
def test_feed(self): self.assertEqual('http://example.com/atom.xml', config.feed()) self.assertEqual('atom', config.feedtype())
def test_feed(self): self.assertEqual("http://example.com/atom.xml", config.feed()) self.assertEqual("atom", config.feedtype())