Skip to content

Commit

Permalink
Merge release branches (#897)
Browse files Browse the repository at this point in the history
* Add sample code to handle Base64 fields in drf-extra-fields project

* Fix format for .rst

* Update answer to the easier version as suggested in Hipo/drf-extra-fields#66 (comment)

* update readme.rst

`permission_classes` expects tuple but list was provided

* url from DEFAULT_API_URL now works

fix a bug: url from swagger_settings.DEFAULT_API_URL is not working

* Check for allow_null attribute

* Add utf-8 support for generated formats

* Added `many` support to example code.

* serialize pytz object as a string

* simplify if condition

* handle errors rendering with TemplateHTMLRenderer

This change fixes an `OPTIONS` request to the API page which will return
a successful response, but the `TemplateHTMLRender` will not be prepared
to render it since there is no template name provided in either the view
or response [1].

[1]: https://github.com/encode/django-rest-framework/blob/f0a5b958a134e8cd94e3ef3263e8fa623ac9b82f/rest_framework/renderers.py#L178-L189

* Allow specifying response as a reference

* [readme] Fix missing re_path import

* fix map source mapping

* Remove universal wheel, python 2 is unsupported

* Inline allow_unicode parameter

* Update changelog

* Update changelog typos

* Add cspell

* Fix old spelling errors

* Add ref_name to UserSerializer after removing suffix typo

* Set permission classes to a tuple

* Update chagnelog

* Add prepublish twine check

* Fix action version syntax

* Fix indentation in README.rst code blocks

* Add twine to publish dependencies

* Specify toxenv explicitly

* Specify all tox targets

* Add py prefix to toxenvs

* Update changelog

* Update changelog

* Declare Django 3.2 support in README, classifiers

This commit will make sure that `Django :: 3.2` will show up in the
classifiers list on PyPI: https://pypi.org/project/drf-yasg/

(The magic happens because we parse the README to get supported Django):
https://github.com/DavidCain/drf-yasg/blob/ee29412d3cdb311/setup.py#L36

3.2 support should already exist
================================
A closed pull request, #735,
noted support for Django 3.2 in both `tox.ini`, and the README.

That PR was closed in favor of
#741, which edited `tox.ini`
and switched to GitHub Actions.

#735 (comment)

This project has been testing on Django 3.2 for a long time (about a
year). I think we can declare it supported it the README!

* Fix `pip install` command for contributors on zsh

On `zsh` (a popular shell, and the default for macOS), install fails:

    $ pip install -U -e .[validation]
    zsh: no matches found: .[validation]

Quote the arguments so that `bash` or `zsh` will succeed.

* Dont use NullBooleanField if drf version >= 3.14.0

* Swap back BooleanField and NullBooleanField

* Update changelog

* Update README to use path instead of re_path in example

* Run tests with latest dependencies

- Django 4.0 & 4.1
- DRF 3.13 & 3.14
- Python 3.10

* Add python 3.10 in GH actions matrix

* Fix RecursiveField

* Change github actions runner from ubuntu-latest to ubuntu-20.04

* Change github actions runner from ubuntu-latest to ubuntu-20.04

* Remove python 3.6 tests since swagger-spec-validator no longer supports it

* Use a string literal for python versions such as "3.10"

* Add python 3.10 compatibility to README.md

* Update changelog

* Fix: Provide enums support for schema.

* Fix: Tests for Python 3.11.

* Refactoring: Removed old version code.

* Fix: Linting is now working.

* Fix: Provide usage of Enums as dict keys.

* Fix: Docs build with latest sphinx versions.

* keep path parameters in their given order

* Fix: Action build docs with latest tox version.

* Fix: Update python version for dj-master branch.

Django master branch bumped minimal python version
to Python 3.10. In latest version was added check for uniq basename.

* Feature: Migrate to PyYAML for yaml generator. (#845)

* Feature: Migrate to PyYAML for yaml generator.

Closes #833

* Chore: Update swagger ui and redoc dependencies.

* Fix: Remove required coreapi dependency. (#854)

* Feature: Migrate to PyYAML for yaml generator.

Closes #833

* Chore: Update swagger ui and redoc dependencies.

* Fix: Remove required coreapi dependency.

* Update Changelog

* Feature: Add ``drf_yasg.inspectors.query.DrfAPICompatInspector``. (#857)

* Feature: Provide to override default renderers via settings.

* Feature: Enable tests for django 4.2.

* Docs: Add information how to override ``DEFAULT_SPEC_RENDERERS``.

* Feature: Add ``drf_yasg.inspectors.query.DrfAPICompatInspector``.

This inspector should be main and replace ``CoreAPICompatInspector`` in the future.

* [fix] Fixed map source mapping (#859)

* Tests: Improve test coverage 95.91% -> 98.30%. (#862)

* Update Changelog

* Add python3.6 to the actions matrix but exclude it from tests

* Allow swagger to use custom CSRF settings and read the CSRF cookie (#660)

* Update README.rst to fix import error (#889)

---------

Co-authored-by: Terry <[email protected]>
Co-authored-by: Sumit Singh <[email protected]>
Co-authored-by: Core-Chan <[email protected]>
Co-authored-by: Krista Mae Rectra <[email protected]>
Co-authored-by: mmurashov <[email protected]>
Co-authored-by: Christoph Beckmann <[email protected]>
Co-authored-by: MilanPecov <[email protected]>
Co-authored-by: Terence D. Honles <[email protected]>
Co-authored-by: Cristi Vîjdea <[email protected]>
Co-authored-by: Max Vorobev <[email protected]>
Co-authored-by: Damien Ramelet <[email protected]>
Co-authored-by: Petr Dlouhý <[email protected]>
Co-authored-by: gopackgo90 <[email protected]>
Co-authored-by: David Cain <[email protected]>
Co-authored-by: Amir Andohkosh <[email protected]>
Co-authored-by: Nikolaos Michas <[email protected]>
Co-authored-by: Ignacio Orlandini <[email protected]>
Co-authored-by: Sergey Klyuykov <[email protected]>
Co-authored-by: Joel Lefkowitz <[email protected]>
Co-authored-by: Gagan Deep <[email protected]>
Co-authored-by: Ummer Farooq <[email protected]>
  • Loading branch information
1 parent 828f53b commit 637cf97
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 5 deletions.
4 changes: 0 additions & 4 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,6 @@ jobs:
- name: Checkout the source code
uses: actions/checkout@v4

# This is the version of python used to package the code. The unit
# tests will have run against python 3.6, 3.7 etc ensuring
# compatibility with those runtimes.
# https://github.com/axnsan12/drf-yasg/pull/741#discussion_r713297594
- name: Set the python version
uses: actions/setup-python@v5
with:
Expand Down
2 changes: 2 additions & 0 deletions src/drf_yasg/app_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@
'DEFAULT_API_URL': None,

'USE_SESSION_AUTH': True,
'CSRF_COOKIE_NAME': settings.CSRF_COOKIE_NAME,
'CSRF_HEADER_NAME': settings.CSRF_HEADER_NAME,
'SECURITY_DEFINITIONS': {
'Basic': {
'type': 'basic'
Expand Down
3 changes: 3 additions & 0 deletions src/drf_yasg/renderers.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,9 @@ def get_swagger_ui_settings(self):
'refetchWithAuth': swagger_settings.REFETCH_SCHEMA_WITH_AUTH,
'refetchOnLogout': swagger_settings.REFETCH_SCHEMA_ON_LOGOUT,
'fetchSchemaWithQuery': swagger_settings.FETCH_SCHEMA_WITH_QUERY,
'csrfCookie': swagger_settings.CSRF_COOKIE_NAME,
# remove HTTP_ and convert underscores to dashes
'csrfHeader': swagger_settings.CSRF_HEADER_NAME[5:].replace('_', '-'),
}

data = filter_none(data)
Expand Down
17 changes: 16 additions & 1 deletion src/drf_yasg/static/drf-yasg/swagger-ui-init.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,26 @@ var swaggerUiConfig = {
],
layout: "StandaloneLayout",
filter: true,
csrfCookie: 'csrftoken',
csrfHeader: 'X-CSRFToken',
requestInterceptor: function (request) {
var headers = request.headers || {};
var csrftoken = document.querySelector("[name=csrfmiddlewaretoken]");
if (csrftoken) {
headers["X-CSRFToken"] = csrftoken.value;
csrftoken = csrftoken.value;
} else {
var cookies = document.cookie.split(/;\s+/);
var name = swaggerUiConfig.csrfCookie;
for (var i = 0; i < cookies.length; i++) {
if (cookies[i].indexOf(name) === 0) {
csrftoken = cookies[i].slice(cookies[i].indexOf('=') + 1);
break;
}
}
}

if (csrftoken) {
headers[swaggerUiConfig.csrfHeader] = csrftoken;
}

return request;
Expand Down

0 comments on commit 637cf97

Please sign in to comment.