def get_feed(self, extra_params=None): if extra_params: try: obj = self.get_object(extra_params.split('/')) except (AttributeError, LookupError): raise LookupError('Feed does not exist') else: obj = None feed = AtomFeed( atom_id = self.__get_dynamic_attr('feed_id', obj), title = self.__get_dynamic_attr('feed_title', obj), updated = self.__get_dynamic_attr('feed_updated', obj), icon = self.__get_dynamic_attr('feed_icon', obj), logo = self.__get_dynamic_attr('feed_logo', obj), rights = self.__get_dynamic_attr('feed_rights', obj), subtitle = self.__get_dynamic_attr('feed_subtitle', obj), authors = self.__get_dynamic_attr('feed_authors', obj, default=[]), categories = self.__get_dynamic_attr('feed_categories', obj, default=[]), contributors = self.__get_dynamic_attr('feed_contributors', obj, default=[]), links = self.__get_dynamic_attr('feed_links', obj, default=[]), extra_attrs = self.__get_dynamic_attr('feed_extra_attrs', obj), hide_generator = self.__get_dynamic_attr('hide_generator', obj, default=False) ) items = self.__get_dynamic_attr('items', obj) if items is None: raise LookupError('Feed has no items field') for item in items: feed.add_item( atom_id = self.__get_dynamic_attr('item_id', item), title = self.__get_dynamic_attr('item_title', item), updated = self.__get_dynamic_attr('item_updated', item), content = self.__get_dynamic_attr('item_content', item), published = self.__get_dynamic_attr('item_published', item), rights = self.__get_dynamic_attr('item_rights', item), source = self.__get_dynamic_attr('item_source', item), summary = self.__get_dynamic_attr('item_summary', item), authors = self.__get_dynamic_attr('item_authors', item, default=[]), categories = self.__get_dynamic_attr('item_categories', item, default=[]), contributors = self.__get_dynamic_attr('item_contributors', item, default=[]), links = self.__get_dynamic_attr('item_links', item, default=[]), extra_attrs = self.__get_dynamic_attr('item_extra_attrs', item, default={}), ) if self.VALIDATE: feed.validate() return feed
def test16(self): # feeds must not contain more than one link rel="alternate" that has the same combination of type and hreflang values feed = AtomFeed(atom_id='test_feed_id', title='test feed title', updated=datetime(2007, 8, 1), authors=[{'name': 'James Tauber'}], links=[{'rel': 'alternate', 'type': 'text/html', 'hreflang': 'en'}, {'rel': 'alternate', 'type': 'text/html', 'hreflang': 'fr'}]) feed.validate()
def test18(self): # entries without a content element must have a link rel="alternate" feed = AtomFeed(atom_id='test_feed_id', title='test feed title', updated=datetime(2007, 8, 1), authors=[{'name': 'James Tauber'}]) feed.add_item(atom_id='test_entry_id', title='test entry title', updated=datetime(2007, 8, 1), content='Test content.') feed.validate()
def test1(self): # minimal sunny day feed = AtomFeed(atom_id='test_feed_id', title='test feed title', updated=datetime(2007, 8, 1), authors=[{'name': 'James Tauber'}]) feed.add_item(atom_id='test_entry_id', title='test entry title', updated=datetime(2007, 8, 1), content='Some content.') feed.validate()
def test15(self): # if no feed author, all entries must have author, possibly in a source feed = AtomFeed(atom_id='test_feed_id', title='test feed title', updated=datetime(2007, 8, 1)) feed.add_item(atom_id='test_entry1_id', title='test entry1 title', updated=datetime(2007, 8, 1), source={'authors': [{'name': 'Someone Else'}]}, content='Some content.') feed.add_item(atom_id='test_entry2_id', title='test entry2 title', updated=datetime(2007, 8, 1), authors=[{'name': 'Someone Else'}], content='Some content.') feed.validate()
def test12(self): # entry can have author feed = AtomFeed(atom_id='test_feed_id', title='test feed title', updated=datetime(2007, 8, 1)) feed.add_item(atom_id='test_entry_id', title='test entry title', updated=datetime(2007, 8, 1), authors=[{'name': 'James Tauber'}], content='Some content.') feed.validate()
def test13(self): # an entry can override feed author feed = AtomFeed(atom_id='test_feed_id', title='test feed title', updated=datetime(2007, 8, 1), authors=[{'name': 'James Tauber'}]) feed.add_item(atom_id='test_entry1_id', title='test entry1 title', updated=datetime(2007, 8, 1), content='Some content.') feed.add_item(atom_id='test_entry2_id', title='test entry2 title', updated=datetime(2007, 8, 1), authors=[{'name': 'Someone Else'}], content='Some content.') feed.validate()
def test30(self): # Base64 content requires there be a summary element too feed = AtomFeed(atom_id='test_feed_id', title='test feed title', updated=datetime(2007, 8, 1), authors=[{'name': 'James Tauber'}]) feed.add_item(atom_id='test_entry_id', title='test entry title', updated=datetime(2007, 8, 1), content=({'type': 'image/png' }, '...some base64...'), summary='Some Image.') feed.validate()
def test29(self): # Base64 content requires there be a summary element too feed = AtomFeed(atom_id='test_feed_id', title='test feed title', updated=datetime(2007, 8, 1), authors=[{'name': 'James Tauber'}]) feed.add_item(atom_id='test_entry_id', title='test entry title', updated=datetime(2007, 8, 1), content=({'type': 'application/xml' }, '...not base64...')) feed.validate()
def test26(self): # content with a src attribute requires there be a summary element too feed = AtomFeed(atom_id='test_feed_id', title='test feed title', updated=datetime(2007, 8, 1), authors=[{'name': 'James Tauber'}]) feed.add_item(atom_id='test_entry_id', title='test entry title', updated=datetime(2007, 8, 1), content=({'src': 'http://example.com/image.png' }, None), summary='Some Image.') feed.validate()
def test23(self): # content with a src attribute must be empty feed = AtomFeed(atom_id='test_feed_id', title='test feed title', updated=datetime(2007, 8, 1), authors=[{'name': 'James Tauber'}]) feed.add_item(atom_id='test_entry_id', title='test entry title', updated=datetime(2007, 8, 1), content=({'src': 'http://example.com/image.png' }, ''), summary='Some image.') feed.validate()
def test20(self): # entries without a content element must have a link rel="alternate" feed = AtomFeed(atom_id='test_feed_id', title='test feed title', updated=datetime(2007, 8, 1), authors=[{'name': 'James Tauber'}]) feed.add_item(atom_id='test_entry_id', title='test entry title', updated=datetime(2007, 8, 1), links=[{'rel': 'alternate', 'href': 'http://example.com/entry/1/'}]) feed.validate()