#13110 closed New feature (fixed)
Allow multiple enclosures in Atom feeds
| Reported by: | Piaume | Owned by: | Unai Zalakain |
|---|---|---|---|
| Component: | contrib.syndication | Version: | dev |
| Severity: | Normal | Keywords: | multiple, enclosures, atom, feed 1.9 |
| Cc: | kotenko@…, unai@… | Triage Stage: | Accepted |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
For now, Feed.item_enclosure_url represents a single enclosure for an item. It should be nice to support many enclosures per item. Something like that:
class ExampleFeed(Feed):
def item_enclosure_url(self, item):
return [video.url for video in item.videos]
Change History (25)
comment:1 by , 16 years ago
| milestone: | 1.2 → 1.3 |
|---|
comment:2 by , 16 years ago
| milestone: | 1.3 |
|---|---|
| Triage Stage: | Unreviewed → Accepted |
comment:3 by , 15 years ago
| Cc: | added |
|---|---|
| Needs documentation: | set |
| Needs tests: | set |
| Owner: | changed from to |
| Status: | new → assigned |
comment:4 by , 15 years ago
| Triage Stage: | Accepted → Design decision needed |
|---|
It appears that RSS only officially supports one enclosure per item {1}, and Atom supports multiple. Since RSS is the default feed, actually the use case presented in the bug report is invalid. The question then becomes, should we support multiple enclosures for Atom? As of now the enclosure is handled in the same general way in both types of feeds.
Changing to "Design Decision Needed" before I do anything else... Please let me know if that was the wrong thing to do in this situation, as I'm pretty new to the Django community.
{1} - http://www.rssboard.org/rss-profile#element-channel-item-enclosure
comment:5 by , 15 years ago
| Type: | → New feature |
|---|
comment:6 by , 15 years ago
| Severity: | → Normal |
|---|
follow-up: 8 comment:7 by , 14 years ago
| Easy pickings: | unset |
|---|---|
| Triage Stage: | Design decision needed → Accepted |
| UI/UX: | unset |
It should be possible to accept either a string or a list of string, and to validate that there's only one enclosure for RSS feeds.
comment:8 by , 10 years ago
Replying to aaugustin:
It should be possible to accept either a string or a list of string, and to validate that there's only one enclosure for RSS feeds.
Currently Feed builds the Enclosure from item_enclosure_url, item_enclosure_length and item_enclosure_mime_type. Accepting an optional list for one of them would mean accepting optional lists for the three of them and that would become quite a strange and cumbersome API.
Instead, I propose creating a item_enclosures attr/func (the same way all the other attr/funcs work) which, by default, returns a list with a single Enclosure in it. That enclosure would be built using the url, length and mime_type gotten from the corresponding attrs.
RSS feeds could then validate that item_enclosures is no longer than 1.
comment:9 by , 10 years ago
| Cc: | added |
|---|---|
| Has patch: | set |
| Keywords: | multiple enclosures atom feed added |
| Owner: | changed from to |
| Version: | 1.1 → master |
comment:10 by , 10 years ago
Could something along these lines be enough?
https://github.com/unaizalakain/django/commit/9acc50df64408d4023378ae4259fa1069b215ab2
comment:11 by , 10 years ago
I updated the commit with the proposed changes and opened a PR:
https://github.com/django/django/pull/5200
comment:12 by , 10 years ago
| Patch needs improvement: | set |
|---|
comment:13 by , 10 years ago
| Needs documentation: | unset |
|---|---|
| Patch needs improvement: | unset |
Updated PR with docs.
comment:15 by , 10 years ago
| Patch needs improvement: | set |
|---|---|
| Summary: | Multiple enclosures per feed's item → Allow multiple enclosures in Atom feeds |
I left comments for improvement on the pull request.
comment:17 by , 10 years ago
| Triage Stage: | Accepted → Ready for checkin |
|---|
comment:19 by , 10 years ago
| Has patch: | unset |
|---|---|
| Keywords: | 1.9 added |
| Resolution: | fixed |
| Status: | closed → new |
| Triage Stage: | Ready for checkin → Accepted |
Reopening per comments on the commit.
comment:20 by , 10 years ago
| Has patch: | set |
|---|
Sorry about that…
New PR: https://github.com/django/django/pull/5315
comment:22 by , 10 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
Feature Request.