From ac7b20cca2f7189f44fd3b86a9339d8f1763f17a Mon Sep 17 00:00:00 2001 From: SrdjanCosicPrica Date: Mon, 4 Mar 2019 14:46:14 +0100 Subject: [PATCH 01/10] Fix get_search_fields example (#6487) --- docs/api-guide/filtering.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/api-guide/filtering.md b/docs/api-guide/filtering.md index aff267818..8a500f386 100644 --- a/docs/api-guide/filtering.md +++ b/docs/api-guide/filtering.md @@ -220,10 +220,13 @@ By default, the search parameter is named `'search`', but this may be overridden To dynamically change search fields based on request content, it's possible to subclass the `SearchFilter` and override the `get_search_fields()` function. For example, the following subclass will only search on `title` if the query parameter `title_only` is in the request: - class CustomSearchFilter(self, view, request): - if request.query_params.get('title_only'): - return ('title',) - return super(CustomSearchFilter, self).get_search_fields(view, request) + from rest_framework import filters + + class CustomSearchFilter(filters.SearchFilter): + def get_search_fields(self, view, request): + if request.query_params.get('title_only'): + return ('title',) + return super(CustomSearchFilter, self).get_search_fields(view, request) For more details, see the [Django documentation][search-django-admin]. From dfc277cce669af8c574c5fd0ac0a3a432b6d45e6 Mon Sep 17 00:00:00 2001 From: Luoxzhg Date: Tue, 5 Mar 2019 18:50:13 +0800 Subject: [PATCH 02/10] Corrected tutorial 1 example renderer output to bytes. (#6486) --- docs/tutorial/1-serialization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorial/1-serialization.md b/docs/tutorial/1-serialization.md index ec507df05..07ee8f208 100644 --- a/docs/tutorial/1-serialization.md +++ b/docs/tutorial/1-serialization.md @@ -150,7 +150,7 @@ At this point we've translated the model instance into Python native datatypes. content = JSONRenderer().render(serializer.data) content - # '{"id": 2, "title": "", "code": "print(\\"hello, world\\")\\n", "linenos": false, "language": "python", "style": "friendly"}' + # b'{"id": 2, "title": "", "code": "print(\\"hello, world\\")\\n", "linenos": false, "language": "python", "style": "friendly"}' Deserialization is similar. First we parse a stream into Python native datatypes... From 9d06e43d05abf1ec57f15566b29ad53ac418ae05 Mon Sep 17 00:00:00 2001 From: Jon Dufresne Date: Tue, 5 Mar 2019 03:11:46 -0800 Subject: [PATCH 03/10] Replace type('') with six.text_type (#6482) As all source files import unicode_literals, type('') is always equivalent to six.text_type (str on Python 3 and unicode on Python 2). Removes the need to call type(), is more explicit, and will be easier to catch places to change for when it is time to eventually drop Python 2. --- rest_framework/fields.py | 4 ++-- rest_framework/relations.py | 2 +- tests/test_pagination.py | 9 +++++---- tests/test_validation.py | 3 ++- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index b5fafeaa3..c8f65db0e 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -1486,7 +1486,7 @@ class MultipleChoiceField(ChoiceField): return dictionary.get(self.field_name, empty) def to_internal_value(self, data): - if isinstance(data, type('')) or not hasattr(data, '__iter__'): + if isinstance(data, six.text_type) or not hasattr(data, '__iter__'): self.fail('not_a_list', input_type=type(data).__name__) if not self.allow_empty and len(data) == 0: self.fail('empty') @@ -1660,7 +1660,7 @@ class ListField(Field): """ if html.is_html_input(data): data = html.parse_html_list(data, default=[]) - if isinstance(data, (type(''), Mapping)) or not hasattr(data, '__iter__'): + if isinstance(data, (six.text_type, Mapping)) or not hasattr(data, '__iter__'): self.fail('not_a_list', input_type=type(data).__name__) if not self.allow_empty and len(data) == 0: self.fail('empty') diff --git a/rest_framework/relations.py b/rest_framework/relations.py index e8a4ec2ac..31c1e7561 100644 --- a/rest_framework/relations.py +++ b/rest_framework/relations.py @@ -518,7 +518,7 @@ class ManyRelatedField(Field): return dictionary.get(self.field_name, empty) def to_internal_value(self, data): - if isinstance(data, type('')) or not hasattr(data, '__iter__'): + if isinstance(data, six.text_type) or not hasattr(data, '__iter__'): self.fail('not_a_list', input_type=type(data).__name__) if not self.allow_empty and len(data) == 0: self.fail('empty') diff --git a/tests/test_pagination.py b/tests/test_pagination.py index d9ad9e6f6..6d940fe2b 100644 --- a/tests/test_pagination.py +++ b/tests/test_pagination.py @@ -5,6 +5,7 @@ import pytest from django.core.paginator import Paginator as DjangoPaginator from django.db import models from django.test import TestCase +from django.utils import six from rest_framework import ( exceptions, filters, generics, pagination, serializers, status @@ -207,7 +208,7 @@ class TestPageNumberPagination: ] } assert self.pagination.display_page_controls - assert isinstance(self.pagination.to_html(), type('')) + assert isinstance(self.pagination.to_html(), six.text_type) def test_second_page(self): request = Request(factory.get('/', {'page': 2})) @@ -313,7 +314,7 @@ class TestPageNumberPaginationOverride: ] } assert not self.pagination.display_page_controls - assert isinstance(self.pagination.to_html(), type('')) + assert isinstance(self.pagination.to_html(), six.text_type) def test_invalid_page(self): request = Request(factory.get('/', {'page': 'invalid'})) @@ -368,7 +369,7 @@ class TestLimitOffset: ] } assert self.pagination.display_page_controls - assert isinstance(self.pagination.to_html(), type('')) + assert isinstance(self.pagination.to_html(), six.text_type) def test_pagination_not_applied_if_limit_or_default_limit_not_set(self): class MockPagination(pagination.LimitOffsetPagination): @@ -631,7 +632,7 @@ class CursorPaginationTestsMixin: assert current == [1, 1, 1, 1, 1] assert next == [1, 2, 3, 4, 4] - assert isinstance(self.pagination.to_html(), type('')) + assert isinstance(self.pagination.to_html(), six.text_type) def test_cursor_pagination_with_page_size(self): (previous, current, next, previous_url, next_url) = self.get_pages('/?page_size=20') diff --git a/tests/test_validation.py b/tests/test_validation.py index 8b71693c5..4132a7b00 100644 --- a/tests/test_validation.py +++ b/tests/test_validation.py @@ -5,6 +5,7 @@ import re from django.core.validators import MaxValueValidator, RegexValidator from django.db import models from django.test import TestCase +from django.utils import six from rest_framework import generics, serializers, status from rest_framework.test import APIRequestFactory @@ -111,7 +112,7 @@ class TestAvoidValidation(TestCase): assert not serializer.is_valid() assert serializer.errors == { 'non_field_errors': [ - 'Invalid data. Expected a dictionary, but got %s.' % type('').__name__ + 'Invalid data. Expected a dictionary, but got %s.' % six.text_type.__name__ ] } From 9e1e32f678fad5b0222b4cec092abfd34c2d8fa0 Mon Sep 17 00:00:00 2001 From: Asif Saif Uddin Date: Thu, 7 Mar 2019 15:22:00 +0600 Subject: [PATCH 04/10] upgraded pytest dependencies (#6492) --- requirements/requirements-testing.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/requirements/requirements-testing.txt b/requirements/requirements-testing.txt index fbddc4f20..a2a2fa753 100644 --- a/requirements/requirements-testing.txt +++ b/requirements/requirements-testing.txt @@ -1,4 +1,4 @@ # Pytest for running the tests. -pytest==3.6.2 -pytest-django==3.3.2 -pytest-cov==2.5.1 +pytest==4.3.0 +pytest-django==3.4.8 +pytest-cov==2.6.1 From fd32dd7ca4fa584efc31e1d913bbca7ffbd1c586 Mon Sep 17 00:00:00 2001 From: Ryan P Kilby Date: Thu, 7 Mar 2019 01:44:20 -0800 Subject: [PATCH 05/10] Explicitly raise exc in 'raise_uncaught_exception' (#6435) --- rest_framework/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/views.py b/rest_framework/views.py index 04951ed93..9d5d959e9 100644 --- a/rest_framework/views.py +++ b/rest_framework/views.py @@ -463,7 +463,7 @@ class APIView(View): renderer_format = getattr(request.accepted_renderer, 'format') use_plaintext_traceback = renderer_format not in ('html', 'api', 'admin') request.force_plaintext_errors(use_plaintext_traceback) - raise + raise exc # Note: Views are made CSRF exempt from within `as_view` as to prevent # accidental removal of this exemption in cases where `dispatch` needs to From 86c72bb2268ad06c503de4fb7caa46c9e495f8d8 Mon Sep 17 00:00:00 2001 From: Kevin Brown Date: Thu, 7 Mar 2019 05:26:03 -0500 Subject: [PATCH 06/10] Fix schema generation of `ManyRelatedField` to detect the child type (#6489) * Introspect ManyRelatedField data type recursively For all `ManyRelatedField` objects, we were assuming that the inner type was always a `String`. While this may be true for the default output, a `ManyRelatedField` is a wrapper for a lot of other classes which includes more than just strings. This should allow us to document lists of things other than strings. * Added test for schemas for many-to-many fields This adds a test that makes sure we generate the schema for a many-to-many field such that it actually has the right type. For some reason we did not previously have any tests for schema generation that included them, so hopefully this will prevent any future issues from popping up. This should serve as a regression test for the `items` field on to-many relationships, which was previously forced to a `String` even though in most cases it is a different inner type within the array. --- rest_framework/schemas/inspectors.py | 4 ++- tests/test_schemas.py | 47 +++++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/rest_framework/schemas/inspectors.py b/rest_framework/schemas/inspectors.py index a17a1f1aa..85142edce 100644 --- a/rest_framework/schemas/inspectors.py +++ b/rest_framework/schemas/inspectors.py @@ -51,8 +51,10 @@ def field_to_schema(field): description=description ) elif isinstance(field, serializers.ManyRelatedField): + related_field_schema = field_to_schema(field.child_relation) + return coreschema.Array( - items=coreschema.String(), + items=related_field_schema, title=title, description=description ) diff --git a/tests/test_schemas.py b/tests/test_schemas.py index d3bd43073..3cb9e0cda 100644 --- a/tests/test_schemas.py +++ b/tests/test_schemas.py @@ -24,7 +24,7 @@ from rest_framework.utils import formatting from rest_framework.views import APIView from rest_framework.viewsets import GenericViewSet, ModelViewSet -from .models import BasicModel, ForeignKeySource +from .models import BasicModel, ForeignKeySource, ManyToManySource factory = APIRequestFactory() @@ -701,6 +701,51 @@ class TestSchemaGeneratorWithForeignKey(TestCase): assert schema == expected +class ManyToManySourceSerializer(serializers.ModelSerializer): + class Meta: + model = ManyToManySource + fields = ('id', 'name', 'targets') + + +class ManyToManySourceView(generics.CreateAPIView): + queryset = ManyToManySource.objects.all() + serializer_class = ManyToManySourceSerializer + + +@unittest.skipUnless(coreapi, 'coreapi is not installed') +class TestSchemaGeneratorWithManyToMany(TestCase): + def setUp(self): + self.patterns = [ + url(r'^example/?$', ManyToManySourceView.as_view()), + ] + + def test_schema_for_regular_views(self): + """ + Ensure that AutoField many to many fields are output as Integer. + """ + generator = SchemaGenerator(title='Example API', patterns=self.patterns) + schema = generator.get_schema() + + expected = coreapi.Document( + url='', + title='Example API', + content={ + 'example': { + 'create': coreapi.Link( + url='/example/', + action='post', + encoding='application/json', + fields=[ + coreapi.Field('name', required=True, location='form', schema=coreschema.String(title='Name')), + coreapi.Field('targets', required=True, location='form', schema=coreschema.Array(title='Targets', items=coreschema.Integer())), + ] + ) + } + } + ) + assert schema == expected + + @unittest.skipUnless(coreapi, 'coreapi is not installed') class Test4605Regression(TestCase): def test_4605_regression(self): From bcdfcf7e493663d8738b9f07d59f9426b0cfb5a3 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Thu, 7 Mar 2019 11:00:50 +0000 Subject: [PATCH 07/10] Sponsor updates (#6495) --- README.md | 10 ++++------ docs/img/premium/auklet-readme.png | Bin 48745 -> 0 bytes docs/img/premium/release-history.png | Bin 0 -> 18009 bytes docs/index.md | 6 ++---- 4 files changed, 6 insertions(+), 10 deletions(-) delete mode 100644 docs/img/premium/auklet-readme.png create mode 100644 docs/img/premium/release-history.png diff --git a/README.md b/README.md index 0309ee2bd..bb05b1d92 100644 --- a/README.md +++ b/README.md @@ -19,17 +19,15 @@ continued development by [signing up for a paid plan][funding]. The initial aim is to provide a single full-time position on REST framework. *Every single sign-up makes a significant impact towards making that possible.* -[![][rover-img]][rover-url] [![][sentry-img]][sentry-url] [![][stream-img]][stream-url] [![][rollbar-img]][rollbar-url] [![][cadre-img]][cadre-url] -[![][load-impact-img]][load-impact-url] [![][kloudless-img]][kloudless-url] -[![][auklet-img]][auklet-url] +[![][release-history-img]][release-history-url] [![][lightson-img]][lightson-url] -Many thanks to all our [wonderful sponsors][sponsors], and in particular to our premium backers, [Rover][rover-url], [Sentry][sentry-url], [Stream][stream-url], [Rollbar][rollbar-url], [Cadre][cadre-url], [Load Impact][load-impact-url], [Kloudless][kloudless-url], [Auklet][auklet-url], and [Lights On Software][lightson-url]. +Many thanks to all our [wonderful sponsors][sponsors], and in particular to our premium backers, [Sentry][sentry-url], [Stream][stream-url], [Rollbar][rollbar-url], [Cadre][cadre-url], [Kloudless][kloudless-url], [Release History][release-history-url], and [Lights On Software][lightson-url]. --- @@ -201,7 +199,7 @@ Send a description of the issue via email to [rest-framework-security@googlegrou [cadre-img]: https://raw.githubusercontent.com/encode/django-rest-framework/master/docs/img/premium/cadre-readme.png [load-impact-img]: https://raw.githubusercontent.com/encode/django-rest-framework/master/docs/img/premium/load-impact-readme.png [kloudless-img]: https://raw.githubusercontent.com/encode/django-rest-framework/master/docs/img/premium/kloudless-readme.png -[auklet-img]: https://raw.githubusercontent.com/encode/django-rest-framework/master/docs/img/premium/auklet-readme.png +[release-history-img]: https://raw.githubusercontent.com/encode/django-rest-framework/master/docs/img/premium/release-history-readme.png [lightson-img]: https://raw.githubusercontent.com/encode/django-rest-framework/master/docs/img/premium/lightson-readme.png [rover-url]: http://jobs.rover.com/ @@ -211,7 +209,7 @@ Send a description of the issue via email to [rest-framework-security@googlegrou [cadre-url]: https://cadre.com/ [load-impact-url]: https://loadimpact.com/?utm_campaign=Sponsorship%20links&utm_source=drf&utm_medium=drf [kloudless-url]: https://hubs.ly/H0f30Lf0 -[auklet-url]: https://auklet.io/ +[release-history-url]: https://releasehistory.io [lightson-url]: https://lightsonsoftware.com [oauth1-section]: https://www.django-rest-framework.org/api-guide/authentication/#django-rest-framework-oauth diff --git a/docs/img/premium/auklet-readme.png b/docs/img/premium/auklet-readme.png deleted file mode 100644 index f55f7a70ea7e8a5b9ec6a9de62246606c21f1136..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48745 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 MNn5c&!6xGW08Og_`v3p{ diff --git a/docs/img/premium/release-history.png b/docs/img/premium/release-history.png new file mode 100644 index 0000000000000000000000000000000000000000..b732b1ca23b8ce74f758ce03e90b4e0674ad425a GIT binary patch literal 18009 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 literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md index c74b2caf0..9f5d3fa15 100644 --- a/docs/index.md +++ b/docs/index.md @@ -66,19 +66,17 @@ continued development by **[signing up for a paid plan][funding]**. *Every single sign-up helps us make REST framework long-term financially sustainable.*
-*Many thanks to all our [wonderful sponsors][sponsors], and in particular to our premium backers, [Rover](http://jobs.rover.com/), [Sentry](https://getsentry.com/welcome/), [Stream](https://getstream.io/?utm_source=drf&utm_medium=banner&utm_campaign=drf), [Auklet](https://auklet.io/), [Rollbar](https://rollbar.com), [Cadre](https://cadre.com), [Load Impact](https://loadimpact.com/?utm_campaign=Sponsorship%20links&utm_source=drf&utm_medium=drf), [Kloudless](https://hubs.ly/H0f30Lf0), and [Lights On Software](https://lightsonsoftware.com).* +*Many thanks to all our [wonderful sponsors][sponsors], and in particular to our premium backers, [Sentry](https://getsentry.com/welcome/), [Stream](https://getstream.io/?utm_source=drf&utm_medium=banner&utm_campaign=drf), [Release History](https://releasehistory.io), [Rollbar](https://rollbar.com), [Cadre](https://cadre.com), [Kloudless](https://hubs.ly/H0f30Lf0), and [Lights On Software](https://lightsonsoftware.com).* --- From 9bfb58746ef813fefa6c2528f4b26e462a8ffc1f Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Thu, 7 Mar 2019 11:02:43 +0000 Subject: [PATCH 08/10] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bb05b1d92..66079edf0 100644 --- a/README.md +++ b/README.md @@ -199,7 +199,7 @@ Send a description of the issue via email to [rest-framework-security@googlegrou [cadre-img]: https://raw.githubusercontent.com/encode/django-rest-framework/master/docs/img/premium/cadre-readme.png [load-impact-img]: https://raw.githubusercontent.com/encode/django-rest-framework/master/docs/img/premium/load-impact-readme.png [kloudless-img]: https://raw.githubusercontent.com/encode/django-rest-framework/master/docs/img/premium/kloudless-readme.png -[release-history-img]: https://raw.githubusercontent.com/encode/django-rest-framework/master/docs/img/premium/release-history-readme.png +[release-history-img]: https://raw.githubusercontent.com/encode/django-rest-framework/master/docs/img/premium/release-history.png [lightson-img]: https://raw.githubusercontent.com/encode/django-rest-framework/master/docs/img/premium/lightson-readme.png [rover-url]: http://jobs.rover.com/ From 6f24c21cfb1fa072c7bf2f36b54a63b51102f903 Mon Sep 17 00:00:00 2001 From: Matt Hegarty Date: Tue, 12 Mar 2019 11:46:02 +0000 Subject: [PATCH 09/10] Fixed typo: /Janurary/January/ (#6506) --- docs/community/release-notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/community/release-notes.md b/docs/community/release-notes.md index 288bf6d58..0f08342f5 100644 --- a/docs/community/release-notes.md +++ b/docs/community/release-notes.md @@ -62,7 +62,7 @@ You can determine your currently installed version using `pip show`: ### 3.9.1 -**Date**: [16th Janurary 2019][3.9.1-milestone] +**Date**: [16th January 2019][3.9.1-milestone] * Resolve XSS issue in browsable API. [#6330][gh6330] * Upgrade Bootstrap to 3.4.0 to resolve XSS issue. From d2d1888217e8cc5aba995edf522fec903b1f91be Mon Sep 17 00:00:00 2001 From: Ryan Siemens Date: Tue, 12 Mar 2019 21:15:12 -0700 Subject: [PATCH 10/10] Document DateTimeField default_timezone argument (#6469) --- docs/api-guide/fields.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/api-guide/fields.md b/docs/api-guide/fields.md index 74ce2251d..ede4f15ad 100644 --- a/docs/api-guide/fields.md +++ b/docs/api-guide/fields.md @@ -306,10 +306,11 @@ A date and time representation. Corresponds to `django.db.models.fields.DateTimeField`. -**Signature:** `DateTimeField(format=api_settings.DATETIME_FORMAT, input_formats=None)` +**Signature:** `DateTimeField(format=api_settings.DATETIME_FORMAT, input_formats=None, default_timezone=None)` * `format` - A string representing the output format. If not specified, this defaults to the same value as the `DATETIME_FORMAT` settings key, which will be `'iso-8601'` unless set. Setting to a format string indicates that `to_representation` return values should be coerced to string output. Format strings are described below. Setting this value to `None` indicates that Python `datetime` objects should be returned by `to_representation`. In this case the datetime encoding will be determined by the renderer. * `input_formats` - A list of strings representing the input formats which may be used to parse the date. If not specified, the `DATETIME_INPUT_FORMATS` setting will be used, which defaults to `['iso-8601']`. +* `default_timezone` - A `pytz.timezone` representing the timezone. If not specified and the `USE_TZ` setting is enabled, this defaults to the [current timezone][django-current-timezone]. If `USE_TZ` is disabled, then datetime objects will be naive. #### `DateTimeField` format strings. @@ -835,3 +836,4 @@ The [django-rest-framework-hstore][django-rest-framework-hstore] package provide [django-rest-framework-hstore]: https://github.com/djangonauts/django-rest-framework-hstore [django-hstore]: https://github.com/djangonauts/django-hstore [python-decimal-rounding-modes]: https://docs.python.org/3/library/decimal.html#rounding-modes +[django-current-timezone]: https://docs.djangoproject.com/en/stable/topics/i18n/timezones/#default-time-zone-and-current-time-zone