コード例 #1
0
ファイル: feeds.py プロジェクト: gerarddevine/pimmsqn
 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
コード例 #2
0
 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()
コード例 #3
0
 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()
コード例 #4
0
 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()
コード例 #5
0
 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()
コード例 #6
0
 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()
コード例 #7
0
 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()
コード例 #8
0
 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()
コード例 #9
0
 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()
コード例 #10
0
 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()
コード例 #11
0
 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()
コード例 #12
0
 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()