Changeset 1227
- Timestamp:
- 11/13/05 22:59:20 (3 years ago)
- Files:
-
- django/trunk/django/contrib/syndication/feeds.py (modified) (2 diffs)
- django/trunk/django/contrib/syndication/views.py (modified) (1 diff)
- django/trunk/django/utils/feedgenerator.py (modified) (3 diffs)
- django/trunk/docs/syndication_feeds.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/contrib/syndication/feeds.py
r1194 r1227 18 18 feed_type = feedgenerator.DefaultFeed 19 19 20 def __init__(self, slug ):20 def __init__(self, slug, feed_url): 21 21 self.slug = slug 22 self.feed_url = feed_url 22 23 23 24 def item_link(self, item): … … 57 58 link = link, 58 59 description = self.__get_dynamic_attr('description', obj), 59 language = LANGUAGE_CODE.decode() 60 language = LANGUAGE_CODE.decode(), 61 feed_url = add_domain(current_site, self.feed_url), 60 62 ) 61 63 django/trunk/django/contrib/syndication/views.py
r1201 r1227 18 18 19 19 try: 20 feedgen = f(slug ).get_feed(param)20 feedgen = f(slug, request.path).get_feed(param) 21 21 except feeds.FeedDoesNotExist: 22 22 raise Http404, "Invalid feed parameters. Slug %r is valid, but other parameters, or lack thereof, are not." % slug django/trunk/django/utils/feedgenerator.py
r1226 r1227 42 42 "Base class for all syndication feeds. Subclasses should provide write()" 43 43 def __init__(self, title, link, description, language=None, author_email=None, 44 author_name=None, author_link=None, subtitle=None, categories=None): 44 author_name=None, author_link=None, subtitle=None, categories=None, 45 feed_url=None): 45 46 self.feed = { 46 47 'title': title, … … 53 54 'subtitle': subtitle, 54 55 'categories': categories or (), 56 'feed_url': feed_url, 55 57 } 56 58 self.items = [] … … 191 193 handler.startElement(u"feed", {u"xmlns": self.ns}) 192 194 handler.addQuickElement(u"title", self.feed['title']) 193 handler.addQuickElement(u"link", "", {u"href": self.feed['link']}) 195 handler.addQuickElement(u"link", "", {u"rel": u"alternate", u"href": self.feed['link']}) 196 if self.feed['feed_url'] is not None: 197 handler.addQuickElement(u"link", "", {u"rel": u"self", u"href": self.feed['feed_url']}) 194 198 handler.addQuickElement(u"id", self.feed['link']) 195 199 handler.addQuickElement(u"updated", rfc3339_date(self.latest_post_date()).decode('ascii')) django/trunk/docs/syndication_feeds.txt
r1197 r1227 267 267 .. _LANGUAGE_CODE setting: http://www.djangoproject.com/documentation/settings/#language-code 268 268 269 URLs 270 ---- 271 272 The ``link`` method/attribute can return either an absolute URL (e.g. 273 ``"/blog/"``) or a URL with the fully-qualified domain and protocol (e.g. 274 ``"http://www.example.com/blog/"``). If ``link`` doesn't return the domain, 275 the syndication framework will insert the domain of the current site, according 276 to your `SITE_ID setting`_. 277 278 Atom feeds require a ``<link rel="self">`` that defines the feed's current 279 location. The syndication framework populates this automatically, using the 280 domain of the current site according to the SITE_ID setting. 281 282 .. _SITE_ID setting: http://www.djangoproject.com/documentation/settings/#site-id 283 269 284 Publishing Atom and RSS feeds in tandem 270 285 --------------------------------------- … … 502 517 503 518 ``__init__(title, link, description, language=None, author_email=None,`` 504 ``author_name=None, author_link=None, subtitle=None, categories=None)`` 519 ``author_name=None, author_link=None, subtitle=None, categories=None,`` 520 ``feed_url=None)`` 505 521 506 522 Initializes the feed with the given metadata, which applies to the entire feed
