Refs #13110 -- Removed SyndicationFeed.add_item()'s enclosure argument.

Per deprecation timeline.
This commit is contained in:
Tim Graham 2016-12-31 08:27:32 -05:00
parent d67a46e104
commit 75cf9b5ac0
5 changed files with 8 additions and 49 deletions

View File

@ -24,10 +24,8 @@ http://web.archive.org/web/20110718035220/http://diveintomark.org/archives/2004/
from __future__ import unicode_literals from __future__ import unicode_literals
import datetime import datetime
import warnings
from django.utils import datetime_safe, six from django.utils import datetime_safe, six
from django.utils.deprecation import RemovedInDjango20Warning
from django.utils.encoding import force_text, iri_to_uri from django.utils.encoding import force_text, iri_to_uri
from django.utils.six import StringIO from django.utils.six import StringIO
from django.utils.six.moves.urllib.parse import urlparse from django.utils.six.moves.urllib.parse import urlparse
@ -119,9 +117,8 @@ class SyndicationFeed(object):
def add_item(self, title, link, description, author_email=None, def add_item(self, title, link, description, author_email=None,
author_name=None, author_link=None, pubdate=None, comments=None, author_name=None, author_link=None, pubdate=None, comments=None,
unique_id=None, unique_id_is_permalink=None, enclosure=None, unique_id=None, unique_id_is_permalink=None, categories=(),
categories=(), item_copyright=None, ttl=None, updateddate=None, item_copyright=None, ttl=None, updateddate=None, enclosures=None, **kwargs):
enclosures=None, **kwargs):
""" """
Adds an item to the feed. All args are expected to be Python Unicode Adds an item to the feed. All args are expected to be Python Unicode
objects except pubdate and updateddate, which are datetime.datetime objects except pubdate and updateddate, which are datetime.datetime
@ -135,16 +132,6 @@ class SyndicationFeed(object):
if ttl is not None: if ttl is not None:
# Force ints to unicode # Force ints to unicode
ttl = force_text(ttl) ttl = force_text(ttl)
if enclosure is None:
enclosures = [] if enclosures is None else enclosures
else:
warnings.warn(
"The enclosure keyword argument is deprecated, "
"use enclosures instead.",
RemovedInDjango20Warning,
stacklevel=2,
)
enclosures = [enclosure]
item = { item = {
'title': to_unicode(title), 'title': to_unicode(title),
'link': iri_to_uri(link), 'link': iri_to_uri(link),

View File

@ -963,7 +963,6 @@ They share this interface:
* ``pubdate`` * ``pubdate``
* ``comments`` * ``comments``
* ``unique_id`` * ``unique_id``
* ``enclosure``
* ``enclosures`` * ``enclosures``
* ``categories`` * ``categories``
* ``item_copyright`` * ``item_copyright``
@ -976,17 +975,10 @@ They share this interface:
* ``pubdate`` should be a Python :class:`~datetime.datetime` object. * ``pubdate`` should be a Python :class:`~datetime.datetime` object.
* ``updateddate`` should be a Python :class:`~datetime.datetime` object. * ``updateddate`` should be a Python :class:`~datetime.datetime` object.
* ``enclosure`` should be an instance of
:class:`django.utils.feedgenerator.Enclosure`.
* ``enclosures`` should be a list of * ``enclosures`` should be a list of
:class:`django.utils.feedgenerator.Enclosure` instances. :class:`django.utils.feedgenerator.Enclosure` instances.
* ``categories`` should be a sequence of Unicode objects. * ``categories`` should be a sequence of Unicode objects.
.. deprecated:: 1.9
The ``enclosure`` keyword argument is deprecated in favor of the
``enclosures`` keyword argument.
:meth:`.SyndicationFeed.write` :meth:`.SyndicationFeed.write`
Outputs the feed in the given encoding to outfile, which is a file-like object. Outputs the feed in the given encoding to outfile, which is a file-like object.

View File

@ -353,18 +353,11 @@ https://web.archive.org/web/20110718035220/http://diveintomark.org/archives/2004
All parameters should be Unicode objects, except ``categories``, which All parameters should be Unicode objects, except ``categories``, which
should be a sequence of Unicode objects. should be a sequence of Unicode objects.
.. method:: add_item(title, link, description, author_email=None, author_name=None, author_link=None, pubdate=None, comments=None, unique_id=None, enclosure=None, categories=(), item_copyright=None, ttl=None, updateddate=None, enclosures=None, **kwargs) .. method:: add_item(title, link, description, author_email=None, author_name=None, author_link=None, pubdate=None, comments=None, unique_id=None, categories=(), item_copyright=None, ttl=None, updateddate=None, enclosures=None, **kwargs)
Adds an item to the feed. All args are expected to be Python ``unicode`` Adds an item to the feed. All args are expected to be Python ``unicode``
objects except ``pubdate`` and ``updateddate``, which are ``datetime.datetime`` objects except ``pubdate`` and ``updateddate``, which are ``datetime.datetime``
objects, ``enclosure``, which is an ``Enclosure`` instance, and objects, and ``enclosures``, which is a list of ``Enclosure`` instances.
``enclosures``, which is a list of ``Enclosure`` instances.
.. deprecated:: 1.9
The ``enclosure`` keyword argument is deprecated in favor of the
new ``enclosures`` keyword argument which accepts a list of
``Enclosure`` objects.
.. method:: num_items() .. method:: num_items()

View File

@ -312,3 +312,6 @@ these features.
* Support for the ``allow_tags`` attribute on ``ModelAdmin`` methods is * Support for the ``allow_tags`` attribute on ``ModelAdmin`` methods is
removed. removed.
* The ``enclosure`` keyword argument to ``SyndicationFeed.add_item()`` is
removed.

View File

@ -9,10 +9,7 @@ from django.core.exceptions import ImproperlyConfigured
from django.test import TestCase, override_settings from django.test import TestCase, override_settings
from django.test.utils import requires_tz_support from django.test.utils import requires_tz_support
from django.utils import timezone from django.utils import timezone
from django.utils.deprecation import RemovedInDjango20Warning from django.utils.feedgenerator import rfc2822_date, rfc3339_date
from django.utils.feedgenerator import (
Enclosure, SyndicationFeed, rfc2822_date, rfc3339_date,
)
from .models import Article, Entry from .models import Article, Entry
@ -520,16 +517,3 @@ class SyndicationFeedTest(FeedTestCase):
views.add_domain('example.com', '//example.com/foo/?arg=value'), views.add_domain('example.com', '//example.com/foo/?arg=value'),
'http://example.com/foo/?arg=value' 'http://example.com/foo/?arg=value'
) )
class FeedgeneratorTestCase(TestCase):
def test_add_item_warns_when_enclosure_kwarg_is_used(self):
feed = SyndicationFeed(title='Example', link='http://example.com', description='Foo')
msg = 'The enclosure keyword argument is deprecated, use enclosures instead.'
with self.assertRaisesMessage(RemovedInDjango20Warning, msg):
feed.add_item(
title='Example Item',
link='https://example.com/item',
description='bar',
enclosure=Enclosure('http://example.com/favicon.ico', 0, 'image/png'),
)