mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-03-12 16:05:49 +03:00
Fix typos (#9662)
* Fix typo of 'related' in tests * Fix typo of permission_classes in coreapi test * Fix some minor typos in docs * Fix typos in tests * Fix flake8 issue
This commit is contained in:
parent
1e8ac7c23b
commit
73cbb9cd4a
|
@ -121,7 +121,7 @@ Date: 15th March 2024
|
||||||
* Fix 404 when page query parameter is empty string [[#8578](https://github.com/encode/django-rest-framework/pull/8578)]
|
* Fix 404 when page query parameter is empty string [[#8578](https://github.com/encode/django-rest-framework/pull/8578)]
|
||||||
* Fixes instance check in ListSerializer.to_representation [[#8726](https://github.com/encode/django-rest-framework/pull/8726)] [[#8727](https://github.com/encode/django-rest-framework/pull/8727)]
|
* Fixes instance check in ListSerializer.to_representation [[#8726](https://github.com/encode/django-rest-framework/pull/8726)] [[#8727](https://github.com/encode/django-rest-framework/pull/8727)]
|
||||||
* FloatField will crash if the input is a number that is too big [[#8725](https://github.com/encode/django-rest-framework/pull/8725)]
|
* FloatField will crash if the input is a number that is too big [[#8725](https://github.com/encode/django-rest-framework/pull/8725)]
|
||||||
* Add missing DurationField to SimpleMetada label_lookup [[#8702](https://github.com/encode/django-rest-framework/pull/8702)]
|
* Add missing DurationField to SimpleMetadata label_lookup [[#8702](https://github.com/encode/django-rest-framework/pull/8702)]
|
||||||
* Add support for Python 3.11 [[#8752](https://github.com/encode/django-rest-framework/pull/8752)]
|
* Add support for Python 3.11 [[#8752](https://github.com/encode/django-rest-framework/pull/8752)]
|
||||||
* Make request consistently available in pagination classes [[#8764](https://github.com/encode/django-rest-framework/pull/9764)]
|
* Make request consistently available in pagination classes [[#8764](https://github.com/encode/django-rest-framework/pull/9764)]
|
||||||
* Possibility to remove trailing zeros on DecimalFields representation [[#6514](https://github.com/encode/django-rest-framework/pull/6514)]
|
* Possibility to remove trailing zeros on DecimalFields representation [[#6514](https://github.com/encode/django-rest-framework/pull/6514)]
|
||||||
|
@ -428,7 +428,7 @@ Be sure to upgrade to Python 3 before upgrading to Django REST Framework 3.10.
|
||||||
* Allow hashing of ErrorDetail. [#5932][gh5932]
|
* Allow hashing of ErrorDetail. [#5932][gh5932]
|
||||||
* Correct schema parsing for JSONField [#5878][gh5878]
|
* Correct schema parsing for JSONField [#5878][gh5878]
|
||||||
* Render descriptions (from help_text) using safe [#5869][gh5869]
|
* Render descriptions (from help_text) using safe [#5869][gh5869]
|
||||||
* Removed input value from deault_error_message [#5881][gh5881]
|
* Removed input value from default_error_message [#5881][gh5881]
|
||||||
* Added min_value/max_value support in DurationField [#5643][gh5643]
|
* Added min_value/max_value support in DurationField [#5643][gh5643]
|
||||||
* Fixed instance being overwritten in pk-only optimization try/except block [#5747][gh5747]
|
* Fixed instance being overwritten in pk-only optimization try/except block [#5747][gh5747]
|
||||||
* Fixed AttributeError from items filter when value is None [#5981][gh5981]
|
* Fixed AttributeError from items filter when value is None [#5981][gh5981]
|
||||||
|
|
|
@ -50,7 +50,7 @@ There are a wide range of resources available for learning and using Django REST
|
||||||
### Talks
|
### Talks
|
||||||
|
|
||||||
* [Level Up! Rethinking the Web API Framework][pycon-us-2017]
|
* [Level Up! Rethinking the Web API Framework][pycon-us-2017]
|
||||||
* [How to Make a Full Fledged REST API with Django OAuth Toolkit][full-fledged-rest-api-with-django-oauth-tookit]
|
* [How to Make a Full Fledged REST API with Django OAuth Toolkit][full-fledged-rest-api-with-django-oauth-toolkit]
|
||||||
* [Django REST API - So Easy You Can Learn It in 25 Minutes][django-rest-api-so-easy]
|
* [Django REST API - So Easy You Can Learn It in 25 Minutes][django-rest-api-so-easy]
|
||||||
* [Tom Christie about Django Rest Framework at Django: Under The Hood][django-under-hood-2014]
|
* [Tom Christie about Django Rest Framework at Django: Under The Hood][django-under-hood-2014]
|
||||||
* [Django REST Framework: Schemas, Hypermedia & Client Libraries][pycon-uk-2016]
|
* [Django REST Framework: Schemas, Hypermedia & Client Libraries][pycon-uk-2016]
|
||||||
|
@ -122,7 +122,7 @@ Want your Django REST Framework talk/tutorial/article to be added to our website
|
||||||
[django-polls-api]: https://learndjango.com/tutorials/django-polls-tutorial-api
|
[django-polls-api]: https://learndjango.com/tutorials/django-polls-tutorial-api
|
||||||
[django-rest-framework-todo-api]: https://learndjango.com/tutorials/django-rest-framework-tutorial-todo-api
|
[django-rest-framework-todo-api]: https://learndjango.com/tutorials/django-rest-framework-tutorial-todo-api
|
||||||
[django-rest-api-so-easy]: https://www.youtube.com/watch?v=cqP758k1BaQ
|
[django-rest-api-so-easy]: https://www.youtube.com/watch?v=cqP758k1BaQ
|
||||||
[full-fledged-rest-api-with-django-oauth-tookit]: https://www.youtube.com/watch?v=M6Ud3qC2tTk
|
[full-fledged-rest-api-with-django-oauth-toolkit]: https://www.youtube.com/watch?v=M6Ud3qC2tTk
|
||||||
[drf-in-your-pjs]: https://www.youtube.com/watch?v=xMtHsWa72Ww
|
[drf-in-your-pjs]: https://www.youtube.com/watch?v=xMtHsWa72Ww
|
||||||
[building-a-rest-api-using-django-and-drf]: https://www.youtube.com/watch?v=PwssEec3IRw
|
[building-a-rest-api-using-django-and-drf]: https://www.youtube.com/watch?v=PwssEec3IRw
|
||||||
[drf-tutorials]: https://www.youtube.com/watch?v=axRCBgbOJp8&list=PLJtp8Jm8EDzjgVg9vVyIUMoGyqtegj7FH
|
[drf-tutorials]: https://www.youtube.com/watch?v=axRCBgbOJp8&list=PLJtp8Jm8EDzjgVg9vVyIUMoGyqtegj7FH
|
||||||
|
|
|
@ -1177,7 +1177,7 @@ class NamingCollisionViewSet(GenericViewSet):
|
||||||
"""
|
"""
|
||||||
Example via: https://stackoverflow.com/questions/43778668/django-rest-framwork-occured-typeerror-link-object-does-not-support-item-ass/
|
Example via: https://stackoverflow.com/questions/43778668/django-rest-framwork-occured-typeerror-link-object-does-not-support-item-ass/
|
||||||
"""
|
"""
|
||||||
permision_class = ()
|
permission_classes = ()
|
||||||
|
|
||||||
@action(detail=False)
|
@action(detail=False)
|
||||||
def detail(self, request):
|
def detail(self, request):
|
||||||
|
|
|
@ -19,7 +19,7 @@ factory = APIRequestFactory()
|
||||||
|
|
||||||
class SearchSplitTests(SimpleTestCase):
|
class SearchSplitTests(SimpleTestCase):
|
||||||
|
|
||||||
def test_keep_quoted_togheter_regardless_of_commas(self):
|
def test_keep_quoted_together_regardless_of_commas(self):
|
||||||
assert ['hello, world'] == list(filters.search_smart_split('"hello, world"'))
|
assert ['hello, world'] == list(filters.search_smart_split('"hello, world"'))
|
||||||
|
|
||||||
def test_strips_commas_around_quoted(self):
|
def test_strips_commas_around_quoted(self):
|
||||||
|
@ -516,7 +516,7 @@ class OrderingFilterModel(models.Model):
|
||||||
|
|
||||||
|
|
||||||
class OrderingFilterRelatedModel(models.Model):
|
class OrderingFilterRelatedModel(models.Model):
|
||||||
related_object = models.ForeignKey(OrderingFilterModel, related_name="relateds", on_delete=models.CASCADE)
|
related_object = models.ForeignKey(OrderingFilterModel, related_name="related", on_delete=models.CASCADE)
|
||||||
index = models.SmallIntegerField(help_text="A non-related field to test with", default=0)
|
index = models.SmallIntegerField(help_text="A non-related field to test with", default=0)
|
||||||
|
|
||||||
|
|
||||||
|
@ -725,9 +725,9 @@ class OrderingFilterTests(TestCase):
|
||||||
def test_ordering_by_aggregate_field(self):
|
def test_ordering_by_aggregate_field(self):
|
||||||
# create some related models to aggregate order by
|
# create some related models to aggregate order by
|
||||||
num_objs = [2, 5, 3]
|
num_objs = [2, 5, 3]
|
||||||
for obj, num_relateds in zip(OrderingFilterModel.objects.all(),
|
for obj, num_related in zip(OrderingFilterModel.objects.all(),
|
||||||
num_objs):
|
num_objs):
|
||||||
for _ in range(num_relateds):
|
for _ in range(num_related):
|
||||||
new_related = OrderingFilterRelatedModel(
|
new_related = OrderingFilterRelatedModel(
|
||||||
related_object=obj
|
related_object=obj
|
||||||
)
|
)
|
||||||
|
@ -739,10 +739,10 @@ class OrderingFilterTests(TestCase):
|
||||||
ordering = 'title'
|
ordering = 'title'
|
||||||
ordering_fields = '__all__'
|
ordering_fields = '__all__'
|
||||||
queryset = OrderingFilterModel.objects.all().annotate(
|
queryset = OrderingFilterModel.objects.all().annotate(
|
||||||
models.Count("relateds"))
|
models.Count("related"))
|
||||||
|
|
||||||
view = OrderingListView.as_view()
|
view = OrderingListView.as_view()
|
||||||
request = factory.get('/', {'ordering': 'relateds__count'})
|
request = factory.get('/', {'ordering': 'related__count'})
|
||||||
response = view(request)
|
response = view(request)
|
||||||
assert response.data == [
|
assert response.data == [
|
||||||
{'id': 1, 'title': 'zyx', 'text': 'abc'},
|
{'id': 1, 'title': 'zyx', 'text': 'abc'},
|
||||||
|
|
|
@ -797,7 +797,7 @@ class TestIntegration(TestCase):
|
||||||
)
|
)
|
||||||
self.instance.many_to_many.set(self.many_to_many_targets)
|
self.instance.many_to_many.set(self.many_to_many_targets)
|
||||||
|
|
||||||
def test_pk_retrival(self):
|
def test_pk_retrieval(self):
|
||||||
class TestSerializer(serializers.ModelSerializer):
|
class TestSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = RelationalModel
|
model = RelationalModel
|
||||||
|
|
|
@ -61,8 +61,8 @@ class TestAcceptedMediaType(TestCase):
|
||||||
|
|
||||||
def test_match_is_false_if_main_types_not_match(self):
|
def test_match_is_false_if_main_types_not_match(self):
|
||||||
mediatype = _MediaType('test_1')
|
mediatype = _MediaType('test_1')
|
||||||
anoter_mediatype = _MediaType('test_2')
|
another_mediatype = _MediaType('test_2')
|
||||||
assert mediatype.match(anoter_mediatype) is False
|
assert mediatype.match(another_mediatype) is False
|
||||||
|
|
||||||
def test_mediatype_match_is_false_if_keys_not_match(self):
|
def test_mediatype_match_is_false_if_keys_not_match(self):
|
||||||
mediatype = _MediaType(';test_param=foo')
|
mediatype = _MediaType(';test_param=foo')
|
||||||
|
|
|
@ -513,7 +513,7 @@ class TestLimitOffset:
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
def test_erronous_offset(self):
|
def test_erroneous_offset(self):
|
||||||
request = Request(factory.get('/', {'limit': 5, 'offset': 1000}))
|
request = Request(factory.get('/', {'limit': 5, 'offset': 1000}))
|
||||||
queryset = self.paginate_queryset(request)
|
queryset = self.paginate_queryset(request)
|
||||||
self.get_paginated_content(queryset)
|
self.get_paginated_content(queryset)
|
||||||
|
|
|
@ -624,7 +624,7 @@ class PermissionsCompositionTests(TestCase):
|
||||||
)
|
)
|
||||||
assert composed_perm().has_permission(request, None) is True
|
assert composed_perm().has_permission(request, None) is True
|
||||||
|
|
||||||
def test_or_lazyness(self):
|
def test_or_laziness(self):
|
||||||
request = factory.get('/1', format='json')
|
request = factory.get('/1', format='json')
|
||||||
request.user = AnonymousUser()
|
request.user = AnonymousUser()
|
||||||
|
|
||||||
|
@ -644,7 +644,7 @@ class PermissionsCompositionTests(TestCase):
|
||||||
assert mock_deny.call_count == 1
|
assert mock_deny.call_count == 1
|
||||||
assert mock_allow.call_count == 1
|
assert mock_allow.call_count == 1
|
||||||
|
|
||||||
def test_object_or_lazyness(self):
|
def test_object_or_laziness(self):
|
||||||
request = factory.get('/1', format='json')
|
request = factory.get('/1', format='json')
|
||||||
request.user = AnonymousUser()
|
request.user = AnonymousUser()
|
||||||
|
|
||||||
|
@ -664,7 +664,7 @@ class PermissionsCompositionTests(TestCase):
|
||||||
assert mock_deny.call_count == 0
|
assert mock_deny.call_count == 0
|
||||||
assert mock_allow.call_count == 1
|
assert mock_allow.call_count == 1
|
||||||
|
|
||||||
def test_and_lazyness(self):
|
def test_and_laziness(self):
|
||||||
request = factory.get('/1', format='json')
|
request = factory.get('/1', format='json')
|
||||||
request.user = AnonymousUser()
|
request.user = AnonymousUser()
|
||||||
|
|
||||||
|
@ -684,7 +684,7 @@ class PermissionsCompositionTests(TestCase):
|
||||||
assert mock_deny.call_count == 1
|
assert mock_deny.call_count == 1
|
||||||
mock_allow.assert_not_called()
|
mock_allow.assert_not_called()
|
||||||
|
|
||||||
def test_object_and_lazyness(self):
|
def test_object_and_laziness(self):
|
||||||
request = factory.get('/1', format='json')
|
request = factory.get('/1', format='json')
|
||||||
request.user = AnonymousUser()
|
request.user = AnonymousUser()
|
||||||
|
|
||||||
|
|
|
@ -406,7 +406,7 @@ class TestUniquenessTogetherValidation(TestCase):
|
||||||
"with a `UniqueTogetherValidator` using the desired field names.")
|
"with a `UniqueTogetherValidator` using the desired field names.")
|
||||||
assert str(excinfo.value) == expected
|
assert str(excinfo.value) == expected
|
||||||
|
|
||||||
def test_allow_explict_override(self):
|
def test_allow_explicit_override(self):
|
||||||
"""
|
"""
|
||||||
Ensure validators can be explicitly removed..
|
Ensure validators can be explicitly removed..
|
||||||
"""
|
"""
|
||||||
|
@ -664,7 +664,7 @@ class TestUniqueConstraintValidation(TestCase):
|
||||||
UniqueConstraint with single field must be transformed into
|
UniqueConstraint with single field must be transformed into
|
||||||
field's UniqueValidator
|
field's UniqueValidator
|
||||||
"""
|
"""
|
||||||
# Django 5 includes Max and Min values validators for IntergerField
|
# Django 5 includes Max and Min values validators for IntegerField
|
||||||
extra_validators_qty = 2 if django_version[0] >= 5 else 0
|
extra_validators_qty = 2 if django_version[0] >= 5 else 0
|
||||||
serializer = UniqueConstraintSerializer()
|
serializer = UniqueConstraintSerializer()
|
||||||
assert len(serializer.validators) == 2
|
assert len(serializer.validators) == 2
|
||||||
|
|
|
@ -47,7 +47,7 @@ def custom_handler(exc, context):
|
||||||
return Response({'error': 'UnknownError'}, status=500)
|
return Response({'error': 'UnknownError'}, status=500)
|
||||||
|
|
||||||
|
|
||||||
class OverridenSettingsView(APIView):
|
class OverriddenSettingsView(APIView):
|
||||||
settings = APISettings({'EXCEPTION_HANDLER': custom_handler})
|
settings = APISettings({'EXCEPTION_HANDLER': custom_handler})
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
|
@ -131,7 +131,7 @@ class TestCustomExceptionHandler(TestCase):
|
||||||
|
|
||||||
class TestCustomSettings(TestCase):
|
class TestCustomSettings(TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.view = OverridenSettingsView.as_view()
|
self.view = OverriddenSettingsView.as_view()
|
||||||
|
|
||||||
def test_get_exception_handler(self):
|
def test_get_exception_handler(self):
|
||||||
request = factory.get('/', content_type='application/json')
|
request = factory.get('/', content_type='application/json')
|
||||||
|
|
Loading…
Reference in New Issue
Block a user