mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-10 19:56:59 +03:00
Update framework deprecation warnings (#7075)
- Bump version numbers for deprecation warnings - Drop deprecated features
This commit is contained in:
parent
95d4843abe
commit
90eaf51839
|
@ -25,9 +25,9 @@ ISO_8601 = 'iso-8601'
|
|||
default_app_config = 'rest_framework.apps.RestFrameworkConfig'
|
||||
|
||||
|
||||
class RemovedInDRF311Warning(DeprecationWarning):
|
||||
class RemovedInDRF312Warning(DeprecationWarning):
|
||||
pass
|
||||
|
||||
|
||||
class RemovedInDRF312Warning(PendingDeprecationWarning):
|
||||
class RemovedInDRF313Warning(PendingDeprecationWarning):
|
||||
pass
|
||||
|
|
|
@ -14,15 +14,13 @@ For example, you might have a `urls.py` that looks something like this:
|
|||
urlpatterns = router.urls
|
||||
"""
|
||||
import itertools
|
||||
import warnings
|
||||
from collections import OrderedDict, namedtuple
|
||||
|
||||
from django.conf.urls import url
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
from django.urls import NoReverseMatch
|
||||
from django.utils.deprecation import RenameMethodsBase
|
||||
|
||||
from rest_framework import RemovedInDRF311Warning, views
|
||||
from rest_framework import views
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.reverse import reverse
|
||||
from rest_framework.schemas import SchemaGenerator
|
||||
|
@ -48,27 +46,11 @@ def flatten(list_of_lists):
|
|||
return itertools.chain(*list_of_lists)
|
||||
|
||||
|
||||
class RenameRouterMethods(RenameMethodsBase):
|
||||
renamed_methods = (
|
||||
('get_default_base_name', 'get_default_basename', RemovedInDRF311Warning),
|
||||
)
|
||||
|
||||
|
||||
class BaseRouter(metaclass=RenameRouterMethods):
|
||||
class BaseRouter:
|
||||
def __init__(self):
|
||||
self.registry = []
|
||||
|
||||
def register(self, prefix, viewset, basename=None, base_name=None):
|
||||
if base_name is not None:
|
||||
msg = "The `base_name` argument is pending deprecation in favor of `basename`."
|
||||
warnings.warn(msg, RemovedInDRF311Warning, 2)
|
||||
|
||||
assert not (basename and base_name), (
|
||||
"Do not provide both the `basename` and `base_name` arguments.")
|
||||
|
||||
if basename is None:
|
||||
basename = base_name
|
||||
|
||||
def register(self, prefix, viewset, basename=None):
|
||||
if basename is None:
|
||||
basename = self.get_default_basename(viewset)
|
||||
self.registry.append((prefix, viewset, basename))
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import warnings
|
||||
from collections import namedtuple
|
||||
|
||||
import pytest
|
||||
|
@ -8,9 +7,7 @@ from django.db import models
|
|||
from django.test import TestCase, override_settings
|
||||
from django.urls import resolve, reverse
|
||||
|
||||
from rest_framework import (
|
||||
RemovedInDRF311Warning, permissions, serializers, viewsets
|
||||
)
|
||||
from rest_framework import permissions, serializers, viewsets
|
||||
from rest_framework.compat import get_regex_pattern
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.response import Response
|
||||
|
@ -488,71 +485,3 @@ class TestViewInitkwargs(URLPatternsTestCase, TestCase):
|
|||
initkwargs = match.func.initkwargs
|
||||
|
||||
assert initkwargs['basename'] == 'routertestmodel'
|
||||
|
||||
|
||||
class TestBaseNameRename(TestCase):
|
||||
|
||||
def test_base_name_and_basename_assertion(self):
|
||||
router = SimpleRouter()
|
||||
|
||||
msg = "Do not provide both the `basename` and `base_name` arguments."
|
||||
with warnings.catch_warnings(record=True) as w, \
|
||||
self.assertRaisesMessage(AssertionError, msg):
|
||||
warnings.simplefilter('always')
|
||||
router.register('mock', MockViewSet, 'mock', base_name='mock')
|
||||
|
||||
msg = "The `base_name` argument is pending deprecation in favor of `basename`."
|
||||
assert len(w) == 1
|
||||
assert str(w[0].message) == msg
|
||||
|
||||
def test_base_name_argument_deprecation(self):
|
||||
router = SimpleRouter()
|
||||
|
||||
with pytest.warns(RemovedInDRF311Warning) as w:
|
||||
warnings.simplefilter('always')
|
||||
router.register('mock', MockViewSet, base_name='mock')
|
||||
|
||||
msg = "The `base_name` argument is pending deprecation in favor of `basename`."
|
||||
assert len(w) == 1
|
||||
assert str(w[0].message) == msg
|
||||
assert router.registry == [
|
||||
('mock', MockViewSet, 'mock'),
|
||||
]
|
||||
|
||||
def test_basename_argument_no_warnings(self):
|
||||
router = SimpleRouter()
|
||||
|
||||
with warnings.catch_warnings(record=True) as w:
|
||||
warnings.simplefilter('always')
|
||||
router.register('mock', MockViewSet, basename='mock')
|
||||
|
||||
assert len(w) == 0
|
||||
assert router.registry == [
|
||||
('mock', MockViewSet, 'mock'),
|
||||
]
|
||||
|
||||
def test_get_default_base_name_deprecation(self):
|
||||
msg = "`CustomRouter.get_default_base_name` method should be renamed `get_default_basename`."
|
||||
|
||||
# Class definition should raise a warning
|
||||
with pytest.warns(RemovedInDRF311Warning) as w:
|
||||
warnings.simplefilter('always')
|
||||
|
||||
class CustomRouter(SimpleRouter):
|
||||
def get_default_base_name(self, viewset):
|
||||
return 'foo'
|
||||
|
||||
assert len(w) == 1
|
||||
assert str(w[0].message) == msg
|
||||
|
||||
# Deprecated method implementation should still be called
|
||||
with warnings.catch_warnings(record=True) as w:
|
||||
warnings.simplefilter('always')
|
||||
|
||||
router = CustomRouter()
|
||||
router.register('mock', MockViewSet)
|
||||
|
||||
assert len(w) == 0
|
||||
assert router.registry == [
|
||||
('mock', MockViewSet, 'foo'),
|
||||
]
|
||||
|
|
Loading…
Reference in New Issue
Block a user