From 224bda6e7ace7b47b70b19915b42486a3f6abe02 Mon Sep 17 00:00:00 2001 From: Aniruddha Maru Date: Fri, 1 Apr 2016 13:38:53 -0700 Subject: [PATCH 01/17] Respect serializer.Meta.read_only_fields in introspector Fixes marcgibbons/django-rest-swagger#424 --- rest_framework_swagger/introspectors.py | 10 ++++++---- rest_framework_swagger/tests.py | 4 ++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/rest_framework_swagger/introspectors.py b/rest_framework_swagger/introspectors.py index 10eb88d7..3adec86d 100644 --- a/rest_framework_swagger/introspectors.py +++ b/rest_framework_swagger/introspectors.py @@ -425,16 +425,18 @@ def build_form_parameters(self): Builds form parameters from the serializer class """ data = [] - serializer = self.get_request_serializer_class() + serializer_class = self.get_request_serializer_class() - if serializer is None: + if serializer_class is None: return data - fields = serializer().get_fields() + serializer = serializer_class() + fields = serializer.get_fields() + read_only_fields = getattr(getattr(serializer, 'Meta', None), 'read_only_fields', []) for name, field in fields.items(): - if getattr(field, 'read_only', False): + if getattr(field, 'read_only', False) or name in read_only_fields: continue data_type, data_format = get_data_type(field) or ('string', 'string') diff --git a/rest_framework_swagger/tests.py b/rest_framework_swagger/tests.py index bae70373..ebc43f43 100644 --- a/rest_framework_swagger/tests.py +++ b/rest_framework_swagger/tests.py @@ -1434,6 +1434,10 @@ class MySerializer(serializers.Serializer): content = serializers.CharField( max_length=200, min_length=10, default="Vandalay Industries") a_read_only_field = serializers.BooleanField(read_only=True) + another_read_only_field = serializers.BooleanField() + + class Meta: + read_only_fields = ('a_read_only_field', 'another_read_only_field') class MyAPIView(ListCreateAPIView): serializer_class = MySerializer From 2726eadb326c4c0638aaabd27c5641d989884050 Mon Sep 17 00:00:00 2001 From: Bakuutin Date: Fri, 13 May 2016 12:44:47 +0300 Subject: [PATCH 02/17] for #413: fixed lists with primitive child --- rest_framework_swagger/docgenerator.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/rest_framework_swagger/docgenerator.py b/rest_framework_swagger/docgenerator.py index cd8dda11..4b59c380 100644 --- a/rest_framework_swagger/docgenerator.py +++ b/rest_framework_swagger/docgenerator.py @@ -379,12 +379,16 @@ def _get_serializer_fields(self, serializer): if isinstance(field, BaseSerializer) or has_many: if isinstance(field, BaseSerializer): - field_serializer = IntrospectorHelper.get_serializer_name(field) + if isinstance(field, ListSerializer) and not isinstance(field.child, BaseSerializer): + data_type, data_format = get_data_type(field.child) + field_serializer = None + else: + field_serializer = IntrospectorHelper.get_serializer_name(field) - if getattr(field, 'write_only', False): - field_serializer = "Write{}".format(field_serializer) + if getattr(field, 'write_only', False): + field_serializer = "Write{}".format(field_serializer) - f['type'] = field_serializer + f['type'] = field_serializer else: field_serializer = None data_type = 'string' From 93fa770ce0a369fcc29cfcc19ceeea287b01cb43 Mon Sep 17 00:00:00 2001 From: Bakuutin Date: Fri, 13 May 2016 12:50:23 +0300 Subject: [PATCH 03/17] for #413: added extra check for 'get_fields' method --- rest_framework_swagger/docgenerator.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rest_framework_swagger/docgenerator.py b/rest_framework_swagger/docgenerator.py index 4b59c380..7b358239 100644 --- a/rest_framework_swagger/docgenerator.py +++ b/rest_framework_swagger/docgenerator.py @@ -277,6 +277,8 @@ def get_thing(field, key): serializers_set = set() for serializer in serializers: + if not hasattr(serializer, 'get_fields'): + continue fields = serializer().get_fields() for name, field in fields.items(): if isinstance(field, BaseSerializer): @@ -296,7 +298,9 @@ def _get_serializer_fields(self, serializer): if serializer is None: return - if hasattr(serializer, '__call__'): + if not hasattr(serializer, 'get_fields'): + fields = {} + elif callable(serializer): fields = serializer().get_fields() else: fields = serializer.get_fields() From e7b5719e5d77d9877886f8400b6c8fe8e8167712 Mon Sep 17 00:00:00 2001 From: Bakuutin Date: Fri, 13 May 2016 13:54:51 +0300 Subject: [PATCH 04/17] fixed imports --- rest_framework_swagger/docgenerator.py | 1 + 1 file changed, 1 insertion(+) diff --git a/rest_framework_swagger/docgenerator.py b/rest_framework_swagger/docgenerator.py index 7b358239..3b894ced 100644 --- a/rest_framework_swagger/docgenerator.py +++ b/rest_framework_swagger/docgenerator.py @@ -383,6 +383,7 @@ def _get_serializer_fields(self, serializer): if isinstance(field, BaseSerializer) or has_many: if isinstance(field, BaseSerializer): + from rest_framework.serializers import ListSerializer if isinstance(field, ListSerializer) and not isinstance(field.child, BaseSerializer): data_type, data_format = get_data_type(field.child) field_serializer = None From 86432b4c2e6edac17c10c6c62ad0cfc0be9ef1f3 Mon Sep 17 00:00:00 2001 From: Bakuutin Date: Fri, 13 May 2016 14:56:12 +0300 Subject: [PATCH 05/17] Fixed support for old djangorestframework --- rest_framework_swagger/docgenerator.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/rest_framework_swagger/docgenerator.py b/rest_framework_swagger/docgenerator.py index 3b894ced..b2192879 100644 --- a/rest_framework_swagger/docgenerator.py +++ b/rest_framework_swagger/docgenerator.py @@ -383,8 +383,10 @@ def _get_serializer_fields(self, serializer): if isinstance(field, BaseSerializer) or has_many: if isinstance(field, BaseSerializer): - from rest_framework.serializers import ListSerializer - if isinstance(field, ListSerializer) and not isinstance(field.child, BaseSerializer): + if (rest_framework.VERSION >= '3.0.0' and + isinstance(field, ListSerializer) and + not isinstance(field.child, BaseSerializer)): + data_type, data_format = get_data_type(field.child) field_serializer = None else: From 421be7d61d30b3eb2b65b27ce62b1b2853a5c9ba Mon Sep 17 00:00:00 2001 From: Bakuutin Date: Fri, 13 May 2016 19:52:14 +0300 Subject: [PATCH 06/17] Fixed linter error --- rest_framework_swagger/docgenerator.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rest_framework_swagger/docgenerator.py b/rest_framework_swagger/docgenerator.py index b2192879..86c4641e 100644 --- a/rest_framework_swagger/docgenerator.py +++ b/rest_framework_swagger/docgenerator.py @@ -384,8 +384,8 @@ def _get_serializer_fields(self, serializer): if isinstance(field, BaseSerializer) or has_many: if isinstance(field, BaseSerializer): if (rest_framework.VERSION >= '3.0.0' and - isinstance(field, ListSerializer) and - not isinstance(field.child, BaseSerializer)): + isinstance(field, ListSerializer) and + not isinstance(field.child, BaseSerializer)): data_type, data_format = get_data_type(field.child) field_serializer = None From 0627ad67dd2ac0a0035a7c019e7f72cf3b7b6444 Mon Sep 17 00:00:00 2001 From: Adam Chainz Date: Tue, 31 May 2016 19:38:16 +0100 Subject: [PATCH 07/17] Convert readthedocs link for their .org -> .io migration for hosted projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As per [their blog post of the 27th April](https://blog.readthedocs.com/securing-subdomains/) ‘Securing subdomains’: > Starting today, Read the Docs will start hosting projects from subdomains on the domain readthedocs.io, instead of on readthedocs.org. This change addresses some security concerns around site cookies while hosting user generated data on the same domain as our dashboard. Test Plan: Manually visited all the links I’ve modified. --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 99a6177d..1d372c65 100644 --- a/setup.py +++ b/setup.py @@ -32,7 +32,7 @@ pip install django-rest-swagger Project @ https://github.com/marcgibbons/django-rest-swagger -Docs @ http://django-rest-swagger.readthedocs.org/ +Docs @ https://django-rest-swagger.readthedocs.io/ """ # allow setup.py to be run from any path From 59c741fbf5ee4c4ed71d83f57ad9a2fd7ac83fde Mon Sep 17 00:00:00 2001 From: Ed Morley Date: Wed, 8 Jun 2016 01:47:33 +0100 Subject: [PATCH 08/17] Use HTTPS GitHub URL in setup.py --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 99a6177d..ec5e3980 100644 --- a/setup.py +++ b/setup.py @@ -68,7 +68,7 @@ author_email='marc_gibbons@rogers.com', maintainer='Ellery Newcomer', maintainer_email='ellery-newcomer@utulsa.edu', - url='http://github.com/marcgibbons/django-rest-swagger', + url='https://github.com/marcgibbons/django-rest-swagger', classifiers=[ 'Environment :: Web Environment', 'Framework :: Django', From d185b9938e5901084798f2fa1b679ef31ffb862a Mon Sep 17 00:00:00 2001 From: Ed Morley Date: Wed, 8 Jun 2016 00:49:27 +0100 Subject: [PATCH 09/17] Travis: Stop testing on unsupported versions of Django Django versions prior to 1.8 are no longer maintained and so insecure: https://www.djangoproject.com/download/#supported-versions Removing them leaves all Python 2.6 permutations excluded, so the redundant entries have also been removed. (Django 1.7 was the last version to support Python 2.6.) --- .travis.yml | 27 --------------------------- README.md | 4 ++-- setup.py | 11 +---------- tox.ini | 14 +++----------- 4 files changed, 6 insertions(+), 50 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1a36a61a..3b9e1e50 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,38 +4,11 @@ sudo: false env: - TOX_ENV=py27-flake8 - - TOX_ENV=py26-django1.5-drf2.3 - - TOX_ENV=py26-django1.6-drf3.1 - - TOX_ENV=py27-django1.5-drf2.3 - - TOX_ENV=py27-django1.5-drf2.4 - - TOX_ENV=py27-django1.5-drf3.0 - - TOX_ENV=py27-django1.5-drf3.1 - - TOX_ENV=py27-django1.6-drf2.3 - - TOX_ENV=py27-django1.6-drf2.4 - - TOX_ENV=py27-django1.6-drf3.0 - - TOX_ENV=py27-django1.6-drf3.1 - - TOX_ENV=py27-django1.7-drf2.3 - - TOX_ENV=py27-django1.7-drf2.4 - - TOX_ENV=py27-django1.7-drf3.0 - - TOX_ENV=py27-django1.7-drf3.1 - TOX_ENV=py27-django1.8-drf2.3 - TOX_ENV=py27-django1.8-drf2.4 - TOX_ENV=py27-django1.8-drf3.0 - TOX_ENV=py27-django1.8-drf3.1 - - TOX_ENV=py33-django1.5-drf2.3 - TOX_ENV=py33-django1.8-drf3.1 - - TOX_ENV=py34-django1.5-drf2.3 - - TOX_ENV=py34-django1.5-drf2.4 - - TOX_ENV=py34-django1.5-drf3.0 - - TOX_ENV=py34-django1.5-drf3.1 - - TOX_ENV=py34-django1.6-drf2.3 - - TOX_ENV=py34-django1.6-drf2.4 - - TOX_ENV=py34-django1.6-drf3.0 - - TOX_ENV=py34-django1.6-drf3.1 - - TOX_ENV=py34-django1.7-drf2.3 - - TOX_ENV=py34-django1.7-drf2.4 - - TOX_ENV=py34-django1.7-drf3.0 - - TOX_ENV=py34-django1.7-drf3.1 - TOX_ENV=py34-django1.8-drf2.3 - TOX_ENV=py34-django1.8-drf2.4 - TOX_ENV=py34-django1.8-drf3.0 diff --git a/README.md b/README.md index f94ad26f..5d0f8faa 100644 --- a/README.md +++ b/README.md @@ -41,8 +41,8 @@ This project is built on the [Django REST Framework Docs](https://github.com/mar for more information, see the [documentation][docs]. ## Requirements -* Python (2.6.5+, 2.7, 3.2, 3.3, 3.4) -* Django (1.5.5+, 1.6, 1.7, 1.8) +* Python (2.7, 3.3, 3.4) +* Django (1.8) * Django REST framework (2.3.8+) * PyYAML (3.10+) diff --git a/setup.py b/setup.py index ec5e3980..bd19770d 100644 --- a/setup.py +++ b/setup.py @@ -38,18 +38,11 @@ # allow setup.py to be run from any path os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir))) install_requires = [ - 'Django>=1.5', + 'Django>=1.8', 'djangorestframework>=2.3.8', 'PyYAML>=3.10', ] -import platform - -version = platform.python_version_tuple() -if version < ('2','7'): - install_requires.append('importlib>=1.0.1') - install_requires.append('ordereddict>=1.1') - setup( name='django-rest-swagger', version=VERSION, @@ -75,9 +68,7 @@ 'Intended Audience :: Developers', 'License :: OSI Approved :: BSD License', 'Operating System :: OS Independent', - 'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3.2', 'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.4', 'Topic :: Internet :: WWW/HTTP', diff --git a/tox.ini b/tox.ini index 3e032980..dca5c92d 100644 --- a/tox.ini +++ b/tox.ini @@ -1,26 +1,18 @@ [tox] envlist = py27-flake8, - py26-django{1.5,1.6}-drf{2.3,2.4,3.0,3.1}, - {py27,py32,py33,py34}-django{1.5,1.6,1.7,1.8}-drf{2.3,2.4,3.0,3.1} + {py27,py33,py34}-django{1.8}-drf{2.3,2.4,3.0,3.1} [testenv] commands = ./runtests.py --stop deps = - django1.5: Django==1.5.11 - django1.6: Django==1.6.11 - django1.7: Django==1.7.8 django1.8: Django==1.8.2 drf2.3: djangorestframework==2.3.8 drf2.4: djangorestframework==2.4.5 drf3.0: djangorestframework==3.0.5 drf3.1: djangorestframework==3.1.3 - {py27,py32,py33,py34}-django{1.5,1.6,1.7,1.8}-drf{2.3,2.4}: PyYAML==3.10 - {py27,py32,py33,py34}-django{1.5,1.6,1.7,1.8}-drf{2.3,2.4,3.0,3.1}: Markdown==2.5.1 - py26: Markdown==2.1.1 - py26: importlib==1.0.1 - py26: ordereddict==1.1 - py26: unittest2==1.1.0 + {py27,py33,py34}-django{1.8}-drf{2.3,2.4}: PyYAML==3.10 + {py27,py33,py34}-django{1.8}-drf{2.3,2.4,3.0,3.1}: Markdown==2.5.1 py27: functools32==3.2.3-2 docutils==0.11 argparse==1.2.1 From 923dd396edf4a44b3df3519a9e646c1cfc368c72 Mon Sep 17 00:00:00 2001 From: Ed Morley Date: Wed, 8 Jun 2016 00:57:30 +0100 Subject: [PATCH 10/17] Travis: Use latest point releases of Django and django-rest-framework Rather than pinned older versions. --- tox.ini | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tox.ini b/tox.ini index dca5c92d..d345eb09 100644 --- a/tox.ini +++ b/tox.ini @@ -6,11 +6,11 @@ envlist = [testenv] commands = ./runtests.py --stop deps = - django1.8: Django==1.8.2 - drf2.3: djangorestframework==2.3.8 - drf2.4: djangorestframework==2.4.5 - drf3.0: djangorestframework==3.0.5 - drf3.1: djangorestframework==3.1.3 + django1.8: Django>=1.8,<1.9 + drf2.3: djangorestframework>=2.3,<2.4 + drf2.4: djangorestframework>=2.4,<2.5 + drf3.0: djangorestframework>=3.0,<3.1 + drf3.1: djangorestframework>=3.1,<3.2 {py27,py33,py34}-django{1.8}-drf{2.3,2.4}: PyYAML==3.10 {py27,py33,py34}-django{1.8}-drf{2.3,2.4,3.0,3.1}: Markdown==2.5.1 py27: functools32==3.2.3-2 From 138580916a0692769389a707174a429f819718de Mon Sep 17 00:00:00 2001 From: Ed Morley Date: Wed, 8 Jun 2016 01:18:23 +0100 Subject: [PATCH 11/17] Travis: Test with django-rest-framework 3.2 and 3.3 --- .travis.yml | 6 ++++++ tox.ini | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3b9e1e50..3044e45f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,11 +8,17 @@ env: - TOX_ENV=py27-django1.8-drf2.4 - TOX_ENV=py27-django1.8-drf3.0 - TOX_ENV=py27-django1.8-drf3.1 + - TOX_ENV=py27-django1.8-drf3.2 + - TOX_ENV=py27-django1.8-drf3.3 - TOX_ENV=py33-django1.8-drf3.1 + - TOX_ENV=py33-django1.8-drf3.2 + - TOX_ENV=py33-django1.8-drf3.3 - TOX_ENV=py34-django1.8-drf2.3 - TOX_ENV=py34-django1.8-drf2.4 - TOX_ENV=py34-django1.8-drf3.0 - TOX_ENV=py34-django1.8-drf3.1 + - TOX_ENV=py34-django1.8-drf3.2 + - TOX_ENV=py34-django1.8-drf3.3 matrix: fast_finish: true diff --git a/tox.ini b/tox.ini index d345eb09..c794de31 100644 --- a/tox.ini +++ b/tox.ini @@ -1,7 +1,7 @@ [tox] envlist = py27-flake8, - {py27,py33,py34}-django{1.8}-drf{2.3,2.4,3.0,3.1} + {py27,py33,py34}-django{1.8}-drf{2.3,2.4,3.0,3.1,3.2,3.3} [testenv] commands = ./runtests.py --stop @@ -11,13 +11,15 @@ deps = drf2.4: djangorestframework>=2.4,<2.5 drf3.0: djangorestframework>=3.0,<3.1 drf3.1: djangorestframework>=3.1,<3.2 + drf3.2: djangorestframework>=3.2,<3.3 + drf3.3: djangorestframework>=3.3,<3.4 {py27,py33,py34}-django{1.8}-drf{2.3,2.4}: PyYAML==3.10 - {py27,py33,py34}-django{1.8}-drf{2.3,2.4,3.0,3.1}: Markdown==2.5.1 py27: functools32==3.2.3-2 docutils==0.11 argparse==1.2.1 argh==0.23.2 nose==1.3.0 + Markdown==2.5.1 mock==1.0.1 django-nose==1.4 coverage==3.6 From 68ae5e0114b92c735996b2048ce443f6c5eafe49 Mon Sep 17 00:00:00 2001 From: Ed Morley Date: Wed, 8 Jun 2016 01:24:51 +0100 Subject: [PATCH 12/17] Travis: Test with Django 1.9 but allow failures Since the test run isn't yet passing. --- .travis.yml | 5 +++++ tox.ini | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 3044e45f..841d075b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,6 +10,7 @@ env: - TOX_ENV=py27-django1.8-drf3.1 - TOX_ENV=py27-django1.8-drf3.2 - TOX_ENV=py27-django1.8-drf3.3 + - TOX_ENV=py27-django1.9-drf3.3 - TOX_ENV=py33-django1.8-drf3.1 - TOX_ENV=py33-django1.8-drf3.2 - TOX_ENV=py33-django1.8-drf3.3 @@ -19,8 +20,12 @@ env: - TOX_ENV=py34-django1.8-drf3.1 - TOX_ENV=py34-django1.8-drf3.2 - TOX_ENV=py34-django1.8-drf3.3 + - TOX_ENV=py34-django1.9-drf3.3 matrix: + allow_failures: + - env: TOX_ENV=py27-django1.9-drf3.3 + - env: TOX_ENV=py34-django1.9-drf3.3 fast_finish: true install: diff --git a/tox.ini b/tox.ini index c794de31..89e2d617 100644 --- a/tox.ini +++ b/tox.ini @@ -1,12 +1,15 @@ [tox] envlist = py27-flake8, - {py27,py33,py34}-django{1.8}-drf{2.3,2.4,3.0,3.1,3.2,3.3} + {py27,py33,py34}-django1.8-drf{2.3,2.4,3.0,3.1,3.2,3.3}, + # Django 1.9+ requires Python 2.7/3.4+ and django-rest-framework 3.3+. + {py27,py34}-django1.9-drf3.3 [testenv] commands = ./runtests.py --stop deps = django1.8: Django>=1.8,<1.9 + django1.9: Django>=1.9,<1.10 drf2.3: djangorestframework>=2.3,<2.4 drf2.4: djangorestframework>=2.4,<2.5 drf3.0: djangorestframework>=3.0,<3.1 From 01424a039d91b4a5dc68e3d8aab6709ab8a40993 Mon Sep 17 00:00:00 2001 From: Ed Morley Date: Wed, 8 Jun 2016 01:33:27 +0100 Subject: [PATCH 13/17] Travis: Test with Python 3.5 --- .travis.yml | 10 ++++++++++ README.md | 2 +- setup.py | 3 +++ tox.ini | 3 ++- 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 841d075b..25071bc1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,11 @@ language: python +# This only controls the version of Python used to run tox, the +# versions used for the tests are handled by tox itself. Python 3.5 +# is only installed if we explicitly request it, so we have to use +# it as the base, so that it's available to tox. Python 2.7 and 3.4 +# are available in the Travis images by default. See: +# https://github.com/travis-ci/travis-ci/issues/4794#issuecomment-143758799 +python: "3.5" sudo: false @@ -21,11 +28,14 @@ env: - TOX_ENV=py34-django1.8-drf3.2 - TOX_ENV=py34-django1.8-drf3.3 - TOX_ENV=py34-django1.9-drf3.3 + - TOX_ENV=py35-django1.8-drf3.3 + - TOX_ENV=py35-django1.9-drf3.3 matrix: allow_failures: - env: TOX_ENV=py27-django1.9-drf3.3 - env: TOX_ENV=py34-django1.9-drf3.3 + - env: TOX_ENV=py35-django1.9-drf3.3 fast_finish: true install: diff --git a/README.md b/README.md index 5d0f8faa..f0923a41 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ This project is built on the [Django REST Framework Docs](https://github.com/mar for more information, see the [documentation][docs]. ## Requirements -* Python (2.7, 3.3, 3.4) +* Python (2.7, 3.3, 3.4, 3.5) * Django (1.8) * Django REST framework (2.3.8+) * PyYAML (3.10+) diff --git a/setup.py b/setup.py index bd19770d..973a3c43 100644 --- a/setup.py +++ b/setup.py @@ -68,9 +68,12 @@ 'Intended Audience :: Developers', 'License :: OSI Approved :: BSD License', 'Operating System :: OS Independent', + 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.4', + 'Programming Language :: Python :: 3.5', 'Topic :: Internet :: WWW/HTTP', 'Topic :: Internet :: WWW/HTTP :: Dynamic Content', ], diff --git a/tox.ini b/tox.ini index 89e2d617..941bb24a 100644 --- a/tox.ini +++ b/tox.ini @@ -3,7 +3,8 @@ envlist = py27-flake8, {py27,py33,py34}-django1.8-drf{2.3,2.4,3.0,3.1,3.2,3.3}, # Django 1.9+ requires Python 2.7/3.4+ and django-rest-framework 3.3+. - {py27,py34}-django1.9-drf3.3 + {py27,py34}-django1.9-drf3.3, + {py35}-django{1.8,1.9}-drf3.3 [testenv] commands = ./runtests.py --stop From 8b0095def80361eaf73df6f41f14fb4c2ee31170 Mon Sep 17 00:00:00 2001 From: Marc Gibbons Date: Wed, 15 Jun 2016 08:30:35 -0400 Subject: [PATCH 14/17] Use {{ STATIC_URL }} Fixes #420, #447 Thank you @Symmetric --- .../templates/rest_framework_swagger/base.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework_swagger/templates/rest_framework_swagger/base.html b/rest_framework_swagger/templates/rest_framework_swagger/base.html index d43fc09b..b4d89509 100644 --- a/rest_framework_swagger/templates/rest_framework_swagger/base.html +++ b/rest_framework_swagger/templates/rest_framework_swagger/base.html @@ -47,7 +47,7 @@
From f2c35e8794b0d146bf4eff71a9863ac2ddf0e77a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Dal=C3=BCge?= Date: Wed, 15 Jun 2016 19:28:11 +0200 Subject: [PATCH 15/17] Fix missing arguments upon child field instantiation --- rest_framework_swagger/docgenerator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework_swagger/docgenerator.py b/rest_framework_swagger/docgenerator.py index 86c4641e..f83174b0 100644 --- a/rest_framework_swagger/docgenerator.py +++ b/rest_framework_swagger/docgenerator.py @@ -271,7 +271,7 @@ def _find_field_serializers(self, serializers, found_serializers=set()): def get_thing(field, key): if rest_framework.VERSION >= '3.0.0': from rest_framework.serializers import ListSerializer - if isinstance(field, ListSerializer): + if isinstance(field, ListSerializer) and isinstance(field.child, BaseSerializer): return key(field.child) return key(field) From 31f017459a1c0f5551bcde2124cfb1d3fb678f24 Mon Sep 17 00:00:00 2001 From: Joey Wilhelm Date: Wed, 15 Jun 2016 17:05:15 -0700 Subject: [PATCH 16/17] Fixed support for Django 1.10 --- rest_framework_swagger/views.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rest_framework_swagger/views.py b/rest_framework_swagger/views.py index 57150fa0..48cde540 100644 --- a/rest_framework_swagger/views.py +++ b/rest_framework_swagger/views.py @@ -5,7 +5,8 @@ from django.views.generic import View from django.utils.safestring import mark_safe from django.utils.encoding import smart_text -from django.shortcuts import render_to_response, RequestContext +from django.shortcuts import render_to_response +from django.template import RequestContext from django.core.exceptions import PermissionDenied from .compat import import_string From 33c63d38d4b527d844d015cc2c86bb1421f89a18 Mon Sep 17 00:00:00 2001 From: Marc Gibbons Date: Mon, 27 Jun 2016 08:22:46 -0400 Subject: [PATCH 17/17] Bump version. --- CHANGELOG.md | 21 +++++++++++++++++++++ rest_framework_swagger/__init__.py | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d31f4da..afb39823 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,26 @@ # Change Log +## [Unreleased](https://github.com/marcgibbons/django-rest-swagger/tree/HEAD) + +[Full Changelog](https://github.com/marcgibbons/django-rest-swagger/compare/0.3.7...HEAD) + +**Closed issues:** + +- AssertionError: The `slug\_field` argument is required. [\#460](https://github.com/marcgibbons/django-rest-swagger/issues/460) +- Errors with Django 1.10 [\#452](https://github.com/marcgibbons/django-rest-swagger/issues/452) +- Opening the docs makes 2 requests for each endpoint [\#440](https://github.com/marcgibbons/django-rest-swagger/issues/440) +- Serializer Meta option read\_only\_fields is not respected [\#424](https://github.com/marcgibbons/django-rest-swagger/issues/424) +- django1.9 can not work in web browser [\#405](https://github.com/marcgibbons/django-rest-swagger/issues/405) + +**Merged pull requests:** + +- Fix child field instantiation with missing arguments [\#459](https://github.com/marcgibbons/django-rest-swagger/pull/459) ([daluege](https://github.com/daluege)) +- Fixed support for Django 1.10 [\#456](https://github.com/marcgibbons/django-rest-swagger/pull/456) ([tarkatronic](https://github.com/tarkatronic)) +- Update testing matrix [\#451](https://github.com/marcgibbons/django-rest-swagger/pull/451) ([edmorley](https://github.com/edmorley)) +- Respect serializer.Meta.read\_only\_fields in introspector [\#450](https://github.com/marcgibbons/django-rest-swagger/pull/450) ([maroux](https://github.com/maroux)) +- Convert readthedocs link for their .org -\> .io migration for hosted projects [\#449](https://github.com/marcgibbons/django-rest-swagger/pull/449) ([adamchainz](https://github.com/adamchainz)) +- Primitive list fields 413 [\#444](https://github.com/marcgibbons/django-rest-swagger/pull/444) ([Bakuutin](https://github.com/Bakuutin)) + ## [0.3.7](https://github.com/marcgibbons/django-rest-swagger/tree/0.3.7) (2016-05-18) [Full Changelog](https://github.com/marcgibbons/django-rest-swagger/compare/0.3.6...0.3.7) diff --git a/rest_framework_swagger/__init__.py b/rest_framework_swagger/__init__.py index 80593c98..42692b62 100644 --- a/rest_framework_swagger/__init__.py +++ b/rest_framework_swagger/__init__.py @@ -1,4 +1,4 @@ -VERSION = '0.3.7' +VERSION = '0.3.8' DEFAULT_SWAGGER_SETTINGS = { 'exclude_url_names': [],