diff options
| author | Justin Mayer <entroP@gmail.com> | 2014-01-08 09:38:48 -0800 |
|---|---|---|
| committer | Justin Mayer <entroP@gmail.com> | 2014-01-08 09:38:48 -0800 |
| commit | 2b6154ada7ab5775ca7014198dbd47dd0eff2df8 (patch) | |
| tree | 15da1bd37f5fc3516e3a514ba10ca2f68bf1a38f | |
| parent | 7df76dc0a18e67ce601af3a2e00bb3c8c821ad46 (diff) | |
| parent | 51ee1f5cef10dad0c8f33bd5b67085ff4857faa3 (diff) | |
| download | feedgenerator-2b6154ada7ab5775ca7014198dbd47dd0eff2df8.tar.gz | |
Merge pull request #1 from SoftlySplinter/pelican#1089
Remove Atom elements from RSS feed. Add Atom tests.
| -rw-r--r-- | feedgenerator/django/utils/feedgenerator.py | 9 | ||||
| -rw-r--r-- | test.atom | 2 | ||||
| -rw-r--r-- | test.rss | 4 | ||||
| -rw-r--r-- | tests_feedgenerator/test_feedgenerator.py | 48 |
4 files changed, 49 insertions, 14 deletions
diff --git a/feedgenerator/django/utils/feedgenerator.py b/feedgenerator/django/utils/feedgenerator.py index e8e4d87..60e1527 100644 --- a/feedgenerator/django/utils/feedgenerator.py +++ b/feedgenerator/django/utils/feedgenerator.py @@ -220,8 +220,7 @@ class RssFeed(SyndicationFeed): handler.endElement("rss") def rss_attributes(self): - return {'xmlns:atom': 'http://www.w3.org/2005/Atom', - 'version': self._version} + return {'version': self._version} def write_items(self, handler): for item in self.items: @@ -230,12 +229,12 @@ class RssFeed(SyndicationFeed): handler.endElement("item") def add_root_elements(self, handler): + # Required Elements as per the specification handler.addQuickElement("title", self.feed['title']) handler.addQuickElement("link", self.feed['link']) handler.addQuickElement("description", self.feed['description']) - if self.feed['feed_url'] is not None: - handler.addQuickElement("atom:link", None, - {"rel": "self", "href": self.feed['feed_url']}) + + # Optional Channel Elements if self.feed['language'] is not None: handler.addQuickElement("language", self.feed['language']) for cat in self.feed['categories']: diff --git a/test.atom b/test.atom new file mode 100644 index 0000000..4ff3bc1 --- /dev/null +++ b/test.atom @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8"?> +<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Poynter E-Media Tidbits</title><link href="http://www.poynter.org/column.asp?id=31" rel="alternate"></link><id>http://www.poynter.org/column.asp?id=31</id><updated>2014-01-07T18:13:47Z</updated><entry><title>Hello</title><link href="http://www.holovaty.com/test/" rel="alternate"></link><id>tag:www.holovaty.com:/test//</id><summary type="html">Testing.</summary></entry></feed> @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Poynter E-Media Tidbits</title><link>http://www.poynter.org/column.asp?id=31</link><description>A group Weblog by the sharpest minds in online media/journalism/publishing. +<rss version="2.0"><channel><title>Poynter E-Media Tidbits</title><link>http://www.poynter.org/column.asp?id=31</link><description>A group Weblog by the sharpest minds in online media/journalism/publishing. Umlauts: äöüßÄÖÜ Chinese: 老师是四十四,是不是? Finnish: Mustan kissan paksut posket. (ah, no special chars) Kärpänen sanoi kärpäselle: tuu kattoon kattoon ku kaveri tapettiin tapettiin. - </description><language>en</language><lastBuildDate>Sun, 26 Aug 2012 07:44:28 -0000</lastBuildDate><item><title>Hello</title><link>http://www.holovaty.com/test/</link><description>Testing.</description></item></channel></rss>
\ No newline at end of file + </description><language>en</language><lastBuildDate>Sun, 26 Aug 2012 07:44:28 -0000</lastBuildDate><item><title>Hello</title><link>http://www.holovaty.com/test/</link><description>Testing.</description></item></channel></rss> diff --git a/tests_feedgenerator/test_feedgenerator.py b/tests_feedgenerator/test_feedgenerator.py index bce5dd4..66441a5 100644 --- a/tests_feedgenerator/test_feedgenerator.py +++ b/tests_feedgenerator/test_feedgenerator.py @@ -28,17 +28,19 @@ FIXT_ITEM = dict( ) -EXPECTED_RESULT = """<?xml version="1.0" encoding="utf-8"?> -<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Poynter E-Media Tidbits</title><link>http://www.poynter.org/column.asp?id=31</link><description>A group Weblog by the sharpest minds in online media/journalism/publishing. +EXPECTED_RESULT_RSS = """<?xml version="1.0" encoding="utf-8"?> +<rss version="2.0"><channel><title>Poynter E-Media Tidbits</title><link>http://www.poynter.org/column.asp?id=31</link><description>A group Weblog by the sharpest minds in online media/journalism/publishing. Umlauts: äöüßÄÖÜ Chinese: 老师是四十四,是不是? Finnish: Mustan kissan paksut posket. (ah, no special chars) Kärpänen sanoi kärpäselle: tuu kattoon kattoon ku kaveri tapettiin tapettiin. </description><language>en</language><lastBuildDate>%DATE%</lastBuildDate><item><title>Hello</title><link>http://www.holovaty.com/test/</link><description>Testing.</description></item></channel></rss>""" +EXPECTED_RESULT_ATOM = """<?xml version="1.0" encoding="utf-8"?> +<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Poynter E-Media Tidbits</title><link href="http://www.poynter.org/column.asp?id=31" rel="alternate"></link><id>http://www.poynter.org/column.asp?id=31</id><updated>%DATE%</updated><entry><title>Hello</title><link href="http://www.holovaty.com/test/" rel="alternate"></link><id>tag:www.holovaty.com:/test//</id><summary type="html">Testing.</summary></entry></feed>""" ENCODING = 'utf-8' -def build_expected_result(feed, expected_result, encoding): +def build_expected_rss_result(feed, expected_result, encoding): # Result's date is of course different from the date in the fixture. # So make them equal! d = feedgenerator.rfc2822_date(feed.latest_post_date()) @@ -48,6 +50,15 @@ def build_expected_result(feed, expected_result, encoding): else: return s +def build_expected_atom_result(feed, expected_result, encoding): + # Result's date is of course different from the date in the fixture. + # So make them equal! + d = feedgenerator.rfc3339_date(feed.latest_post_date()) + s = expected_result.replace('%DATE%', d) + if encoding: + return s.encode(encoding) + else: + return s class TestFeedGenerator(unittest.TestCase): @@ -60,9 +71,9 @@ class TestFeedGenerator(unittest.TestCase): self.assertEqual(type(v), ty) for k, v in FIXT_ITEM.items(): self.assertEqual(type(v), ty) - self.assertEqual(type(EXPECTED_RESULT), ty) + self.assertEqual(type(EXPECTED_RESULT_RSS), ty) - def test_001_string_results(self): + def test_001_string_results_rss(self): #import ipdb; ipdb.set_trace() feed = feedgenerator.Rss201rev2Feed(**FIXT_FEED) feed.add_item(**FIXT_ITEM) @@ -70,11 +81,11 @@ class TestFeedGenerator(unittest.TestCase): if six.PY3: # On Python 3, result of feedgenerator is a unicode string! # So do not encode our expected_result. - expected_result = build_expected_result(feed, EXPECTED_RESULT, None) + expected_result = build_expected_rss_result(feed, EXPECTED_RESULT_RSS, None) else: # On Python 2, result of feedgenerator is a str string! # Expected_result must therefore encoded likewise. - expected_result = build_expected_result(feed, EXPECTED_RESULT, ENCODING) + expected_result = build_expected_rss_result(feed, EXPECTED_RESULT_RSS, ENCODING) # The different result types of Python 2 (str=bytes) and Python 3 # (str=text=unicode) stems from a different implementation of StringIO. # As I understand it, getvalue() in Python 2 returns the type you @@ -92,3 +103,26 @@ class TestFeedGenerator(unittest.TestCase): # Compare the files, they must be equal! # XXX Argh -- No, the lastBuildDate will differ. # But this is allowed. + + def test_003_string_results_atom(self): + #import ipdb; ipdb.set_trace() + feed = feedgenerator.Atom1Feed(**FIXT_FEED) + feed.add_item(**FIXT_ITEM) + result = feed.writeString(ENCODING) + if six.PY3: + # On Python 3, result of feedgenerator is a unicode string! + # So do not encode our expected_result. + expected_result = build_expected_atom_result(feed, EXPECTED_RESULT_ATOM, None) + else: + # On Python 2, result of feedgenerator is a str string! + # Expected_result must therefore encoded likewise. + expected_result = build_expected_atom_result(feed, EXPECTED_RESULT_ATOM, ENCODING) + # The different result types of Python 2 (str=bytes) and Python 3 + # (str=text=unicode) stems from a different implementation of StringIO. + # As I understand it, getvalue() in Python 2 returns the type you + # originally wrote into the buffer. In Python 3 getvalue() always + # returns a str (=text=unicode). + # See other test: test_stringio.py + #print type(result), type(expected_result) + self.assertEqual(type(result), type(expected_result)) + self.assertEqual(result, expected_result) |
