Codebase list feedgenerator / upstream/1.9
Import feedgenerator_1.9.orig.tar.gz Vincent Cheng 7 years ago
10 changed file(s) with 61 addition(s) and 36 deletion(s). Raw diff Collapse all Expand all
3535 from .timezone import is_aware
3636
3737 def rfc2822_date(date):
38 # We can't use strftime() because it produces locale-dependant results, so
38 # We can't use strftime() because it produces locale-dependent results, so
3939 # we have to map english month and day names manually
4040 months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec',)
4141 days = ('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun')
7979 d = ''
8080 if date is not None:
8181 d = ',%s' % datetime_safe.new_datetime(date).strftime('%Y-%m-%d')
82 return 'tag:%s%s:%s/%s' % (bits.hostname, d, bits.path, bits.fragment)
82 fragment = ''
83 if bits.fragment != '':
84 fragment = '/%s' % (bits.fragment)
85 return 'tag:%s%s:%s%s' % (bits.hostname, d, bits.path, fragment)
8386
8487 class SyndicationFeed(object):
8588 "Base class for all syndication feeds. Subclasses should provide write()"
345348 def add_item_elements(self, handler, item):
346349 handler.addQuickElement("title", item['title'])
347350 handler.addQuickElement("link", "", {"href": item['link'], "rel": "alternate"})
351
352 updateddate = datetime.datetime.now()
348353 if item['pubdate'] is not None:
349354 handler.addQuickElement("published", rfc3339_date(item['pubdate']))
355 updateddate = item['pubdate']
350356 if item['updateddate'] is not None:
351 handler.addQuickElement("updated", rfc3339_date(item['updateddate']))
357 updateddate = item['updateddate']
358 handler.addQuickElement("updated", rfc3339_date(updateddate))
352359
353360 # Author information.
354361 if item['author_name'] is not None:
3535 from .timezone import is_aware
3636
3737 def rfc2822_date(date):
38 # We can't use strftime() because it produces locale-dependant results, so
38 # We can't use strftime() because it produces locale-dependent results, so
3939 # we have to map english month and day names manually
4040 months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec',)
4141 days = ('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun')
7979 d = ''
8080 if date is not None:
8181 d = ',%s' % datetime_safe.new_datetime(date).strftime('%Y-%m-%d')
82 return 'tag:%s%s:%s/%s' % (bits.hostname, d, bits.path, bits.fragment)
82 fragment = ''
83 if bits.fragment != '':
84 fragment = '/%s' % (bits.fragment)
85 return 'tag:%s%s:%s%s' % (bits.hostname, d, bits.path, fragment)
8386
8487 class SyndicationFeed(object):
8588 "Base class for all syndication feeds. Subclasses should provide write()"
345348 def add_item_elements(self, handler, item):
346349 handler.addQuickElement("title", item['title'])
347350 handler.addQuickElement("link", "", {"href": item['link'], "rel": "alternate"})
351
352 updateddate = datetime.datetime.now()
348353 if item['pubdate'] is not None:
349354 handler.addQuickElement("published", rfc3339_date(item['pubdate']))
355 updateddate = item['pubdate']
350356 if item['updateddate'] is not None:
351 handler.addQuickElement("updated", rfc3339_date(item['updateddate']))
357 updateddate = item['updateddate']
358 handler.addQuickElement("updated", rfc3339_date(updateddate))
352359
353360 # Author information.
354361 if item['author_name'] is not None:
3535 from .timezone import is_aware
3636
3737 def rfc2822_date(date):
38 # We can't use strftime() because it produces locale-dependant results, so
38 # We can't use strftime() because it produces locale-dependent results, so
3939 # we have to map english month and day names manually
4040 months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec',)
4141 days = ('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun')
7979 d = ''
8080 if date is not None:
8181 d = ',%s' % datetime_safe.new_datetime(date).strftime('%Y-%m-%d')
82 return 'tag:%s%s:%s/%s' % (bits.hostname, d, bits.path, bits.fragment)
82 fragment = ''
83 if bits.fragment != '':
84 fragment = '/%s' % (bits.fragment)
85 return 'tag:%s%s:%s%s' % (bits.hostname, d, bits.path, fragment)
8386
8487 class SyndicationFeed(object):
8588 "Base class for all syndication feeds. Subclasses should provide write()"
345348 def add_item_elements(self, handler, item):
346349 handler.addQuickElement("title", item['title'])
347350 handler.addQuickElement("link", "", {"href": item['link'], "rel": "alternate"})
351
352 updateddate = datetime.datetime.now()
348353 if item['pubdate'] is not None:
349354 handler.addQuickElement("published", rfc3339_date(item['pubdate']))
355 updateddate = item['pubdate']
350356 if item['updateddate'] is not None:
351 handler.addQuickElement("updated", rfc3339_date(item['updateddate']))
357 updateddate = item['updateddate']
358 handler.addQuickElement("updated", rfc3339_date(updateddate))
352359
353360 # Author information.
354361 if item['author_name'] is not None:
00 Metadata-Version: 1.1
11 Name: feedgenerator
2 Version: 1.8
2 Version: 1.9
33 Summary: Standalone version of django.utils.feedgenerator
44 Home-page: https://github.com/getpelican/feedgenerator
5 Author: Dirk Makowski
6 Author-email: dm@parenchym.com
5 Author: Pelican Dev Team
6 Author-email: authors@getpelican.com
77 License: UNKNOWN
88 Description: FeedGenerator
99 =============
3535 from .timezone import is_aware
3636
3737 def rfc2822_date(date):
38 # We can't use strftime() because it produces locale-dependant results, so
38 # We can't use strftime() because it produces locale-dependent results, so
3939 # we have to map english month and day names manually
4040 months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec',)
4141 days = ('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun')
7979 d = ''
8080 if date is not None:
8181 d = ',%s' % datetime_safe.new_datetime(date).strftime('%Y-%m-%d')
82 return 'tag:%s%s:%s/%s' % (bits.hostname, d, bits.path, bits.fragment)
82 fragment = ''
83 if bits.fragment != '':
84 fragment = '/%s' % (bits.fragment)
85 return 'tag:%s%s:%s%s' % (bits.hostname, d, bits.path, fragment)
8386
8487 class SyndicationFeed(object):
8588 "Base class for all syndication feeds. Subclasses should provide write()"
345348 def add_item_elements(self, handler, item):
346349 handler.addQuickElement("title", item['title'])
347350 handler.addQuickElement("link", "", {"href": item['link'], "rel": "alternate"})
351
352 updateddate = datetime.datetime.now()
348353 if item['pubdate'] is not None:
349354 handler.addQuickElement("published", rfc3339_date(item['pubdate']))
355 updateddate = item['pubdate']
350356 if item['updateddate'] is not None:
351 handler.addQuickElement("updated", rfc3339_date(item['updateddate']))
357 updateddate = item['updateddate']
358 handler.addQuickElement("updated", rfc3339_date(updateddate))
352359
353360 # Author information.
354361 if item['author_name'] is not None:
00 Metadata-Version: 1.1
11 Name: feedgenerator
2 Version: 1.8
2 Version: 1.9
33 Summary: Standalone version of django.utils.feedgenerator
44 Home-page: https://github.com/getpelican/feedgenerator
5 Author: Dirk Makowski
6 Author-email: dm@parenchym.com
5 Author: Pelican Dev Team
6 Author-email: authors@getpelican.com
77 License: UNKNOWN
88 Description: FeedGenerator
99 =============
0 #! /usr/bin/python
0 #!/usr/bin/env python
11
22 # Using setuptools rather than distutils to get the `develop` command
33 from setuptools import setup
55
66 NAME = 'feedgenerator'
77 PACKAGES = ['feedgenerator', 'feedgenerator.django',
8 'feedgenerator.django.utils']
8 'feedgenerator.django.utils']
99 DESCRIPTION = 'Standalone version of django.utils.feedgenerator'
1010 LONG_DESCRIPTION = open('README.rst').read()
1111
2525 'Topic :: Internet :: WWW/HTTP',
2626 'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
2727 'Topic :: Software Development :: Libraries :: Python Modules',
28 ]
28 ]
2929
3030 AUTHOR = 'Django Software Foundation'
3131 AUTHOR_EMAIL = 'foundation@djangoproject.com'
32 MAINTAINER = 'Dirk Makowski'
33 MAINTAINER_EMAIL = 'dm@parenchym.com'
32 MAINTAINER = 'Pelican Dev Team'
33 MAINTAINER_EMAIL = 'authors@getpelican.com'
3434 KEYWORDS = "feed atom rss".split(' ')
35 VERSION = '1.8'
35 VERSION = '1.9'
3636
3737 TEST_SUITE = 'tests_feedgenerator'
3838
77 import unittest
88
99 import six
10 import datetime
1011
1112 import feedgenerator
1213
2526 link="http://www.holovaty.com/test/",
2627 description="Testing.",
2728 content="Full content of our testing entry.",
29 pubdate=datetime.datetime(2016,8,11,0,0,0,0),
2830 )
2931
3032
3335 Umlauts: äöüßÄÖÜ
3436 Chinese: 老师是四十四,是不是?
3537 Finnish: Mustan kissan paksut posket. (ah, no special chars) Kärpänen sanoi kärpäselle: tuu kattoon kattoon ku kaveri tapettiin tapettiin.
36 </description><language>en</language><lastBuildDate>%DATE%</lastBuildDate><item><title>Hello</title><link>http://www.holovaty.com/test/</link><description>Testing.</description></item></channel></rss>"""
38 </description><language>en</language><lastBuildDate>%DATE%</lastBuildDate><item><title>Hello</title><link>http://www.holovaty.com/test/</link><description>Testing.</description><pubDate>Thu, 11 Aug 2016 00:00:00 -0000</pubDate></item></channel></rss>"""
3739
3840 EXPECTED_RESULT_ATOM = """<?xml version="1.0" encoding="utf-8"?>
39 <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><content type="html">Full content of our testing entry.</content></entry></feed>"""
41 <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><published>2016-08-11T00:00:00Z</published><updated>2016-08-11T00:00:00Z</updated><id>tag:www.holovaty.com,2016-08-11:/test/</id><summary type="html">Testing.</summary><content type="html">Full content of our testing entry.</content></entry></feed>"""
4042
4143 ENCODING = 'utf-8'
4244
7072 for k, v in FIXT_FEED.items():
7173 self.assertEqual(type(v), ty)
7274 for k, v in FIXT_ITEM.items():
73 self.assertEqual(type(v), ty)
75 if k == "pubdate" or k == "updateddate":
76 self.assertEqual(type(v), datetime.datetime)
77 else:
78 self.assertEqual(type(v), ty)
7479 self.assertEqual(type(EXPECTED_RESULT_RSS), ty)
7580
7681 def test_001_string_results_rss(self):
96101 self.assertEqual(type(result), type(expected_result))
97102 self.assertEqual(result, expected_result)
98103
99 def OFF_test_002_file_results(self):
100 pass
101 # DO-IT_YOURSELF: Run usage_example with python2 and python3.
102 # Each will create a feed file.
103 # Compare the files, they must be equal!
104 # XXX Argh -- No, the lastBuildDate will differ.
105 # But this is allowed.
106
107 def test_003_string_results_atom(self):
104 def test_002_string_results_atom(self):
108105 #import ipdb; ipdb.set_trace()
109106 feed = feedgenerator.Atom1Feed(**FIXT_FEED)
110107 feed.add_item(**FIXT_ITEM)