Skip to content

Commit

Permalink
Merge pull request #73 from maykinmedia/feature/convert-schemar-to-oas3
Browse files Browse the repository at this point in the history
Feature/convert schemar to oas3
  • Loading branch information
annashamray committed Sep 30, 2020
2 parents 96e02a4 + abf0b0f commit a387f97
Show file tree
Hide file tree
Showing 12 changed files with 3,158 additions and 75 deletions.
588 changes: 565 additions & 23 deletions package-lock.json

Large diffs are not rendered by default.

4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
"scripts": {
"test": "gulp test",
"build": "gulp build",
"watch": "gulp watch"
"watch": "gulp watch",
"convert": "swagger2openapi src/swagger2.0.json -o src/openapi.yaml"
},
"repository": {
"type": "git",
Expand Down Expand Up @@ -59,6 +60,7 @@
"sass-loader": "latest",
"simulant": "latest",
"sinon": "latest",
"swagger2openapi": "^7.0.2",
"url-loader": "latest",
"webpack": "latest",
"webpack-dev-server": "latest",
Expand Down
3 changes: 3 additions & 0 deletions requirements/base.in
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,6 @@ drf-yasg # api documentation
uwsgi
sentry-sdk # error monitoring
elastic-apm # Elastic APM integration

# Common ground libraries
vng_api_common
27 changes: 19 additions & 8 deletions requirements/base.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,45 +12,56 @@ coreschema==0.0.4 # via coreapi, drf-yasg
django-admin-index==1.3.0 # via -r requirements/base.in
django-appconf==1.0.4 # via django-axes
django-axes==5.3.1 # via -r requirements/base.in
django-choices==1.7.1 # via -r requirements/base.in
django-choices==1.7.1 # via -r requirements/base.in, vng-api-common
django-compat==1.0.15 # via django-hijack, django-hijack-admin
django-filter==2.4.0 # via vng-api-common
django-hijack-admin==2.1.10 # via -r requirements/base.in
django-hijack==2.1.10 # via -r requirements/base.in, django-hijack-admin
django-ipware==2.1.0 # via django-axes
django-ordered-model==3.3.0 # via django-admin-index
django-redis==4.11.0 # via -r requirements/base.in
django-rest-framework-condition==0.1.1 # via vng-api-common
django-rosetta==0.9.4 # via -r requirements/base.in
django-sniplates==0.7.0 # via -r requirements/base.in
django==2.2.12 # via -r requirements/base.in, django-appconf, django-axes, django-choices, django-redis, django-rosetta, django-sniplates, djangorestframework, drf-yasg
djangorestframework==3.11.0 # via -r requirements/base.in, drf-yasg
drf-yasg==1.17.1 # via -r requirements/base.in
django-solo==1.1.3 # via vng-api-common
django==2.2.12 # via -r requirements/base.in, django-appconf, django-axes, django-choices, django-filter, django-redis, django-rest-framework-condition, django-rosetta, django-sniplates, drf-nested-routers, drf-yasg, vng-api-common
djangorestframework-camel-case==1.2.0 # via vng-api-common
djangorestframework==3.9.4 # via -r requirements/base.in, drf-nested-routers, drf-yasg, vng-api-common
drf-nested-routers==0.91 # via vng-api-common
drf-yasg==1.16.0 # via -r requirements/base.in, vng-api-common
elastic-apm==5.5.2 # via -r requirements/base.in
gemma-zds-client==0.13.3 # via vng-api-common
idna==2.9 # via requests
importlib-metadata==1.6.0 # via jsonschema
inflection==0.4.0 # via drf-yasg
iso-639==0.4.5 # via vng-api-common
isodate==0.6.0 # via vng-api-common
itypes==1.2.0 # via coreapi
jinja2==2.11.2 # via coreschema
jsonschema==3.2.0 # via -r requirements/base.in
markupsafe==1.1.1 # via jinja2
packaging==20.3 # via drf-yasg
oyaml==1.0 # via vng-api-common
pillow==7.1.1 # via -r requirements/base.in
polib==1.1.0 # via django-rosetta
psycopg2==2.8.5 # via -r requirements/base.in
pyparsing==2.4.7 # via packaging
pyjwt==1.7.1 # via gemma-zds-client, vng-api-common
pyrsistent==0.16.0 # via jsonschema
python-decouple==3.3 # via -r requirements/base.in
python-dotenv==0.12.0 # via -r requirements/base.in
pytz==2019.3 # via -r requirements/base.in, django
pyyaml==5.3.1 # via gemma-zds-client, oyaml, vng-api-common
redis==3.4.1 # via django-redis
requests==2.23.0 # via coreapi, django-rosetta
requests==2.23.0 # via coreapi, django-rosetta, gemma-zds-client, vng-api-common
ruamel.yaml.clib==0.2.0 # via ruamel.yaml
ruamel.yaml==0.16.10 # via drf-yasg
sentry-sdk==0.14.3 # via -r requirements/base.in
six==1.14.0 # via django-choices, django-compat, django-rosetta, drf-yasg, jsonschema, packaging, pyrsistent
six==1.14.0 # via django-choices, django-compat, django-rosetta, drf-yasg, isodate, jsonschema, pyrsistent
sqlparse==0.3.1 # via django
unidecode==1.1.1 # via vng-api-common
uritemplate==3.0.1 # via coreapi, drf-yasg
urllib3==1.25.8 # via elastic-apm, requests, sentry-sdk
uwsgi==2.0.18 # via -r requirements/base.in
vng-api-common==1.5.6 # via -r requirements/base.in
zipp==3.1.0 # via importlib-metadata

# The following packages are considered to be unsafe in a requirements file:
Expand Down
27 changes: 19 additions & 8 deletions requirements/ci.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,57 +15,68 @@ cssselect==1.1.0 # via pyquery
django-admin-index==1.3.0 # via -r requirements/base.txt
django-appconf==1.0.4 # via -r requirements/base.txt, django-axes
django-axes==5.3.1 # via -r requirements/base.txt
django-choices==1.7.1 # via -r requirements/base.txt
django-choices==1.7.1 # via -r requirements/base.txt, vng-api-common
django-compat==1.0.15 # via -r requirements/base.txt, django-hijack, django-hijack-admin
django-filter==2.4.0 # via -r requirements/base.txt, vng-api-common
django-hijack-admin==2.1.10 # via -r requirements/base.txt
django-hijack==2.1.10 # via -r requirements/base.txt, django-hijack-admin
django-ipware==2.1.0 # via -r requirements/base.txt, django-axes
django-jenkins==0.110.0 # via -r requirements/test-tools.in
django-ordered-model==3.3.0 # via -r requirements/base.txt, django-admin-index
django-redis==4.11.0 # via -r requirements/base.txt
django-rest-framework-condition==0.1.1 # via -r requirements/base.txt, vng-api-common
django-rosetta==0.9.4 # via -r requirements/base.txt
django-sniplates==0.7.0 # via -r requirements/base.txt
django-solo==1.1.3 # via -r requirements/base.txt, vng-api-common
django-webtest==1.9.7 # via -r requirements/test-tools.in
django==2.2.12 # via -r requirements/base.txt, django-appconf, django-axes, django-choices, django-jenkins, django-redis, django-rosetta, django-sniplates, djangorestframework, drf-yasg
djangorestframework==3.11.0 # via -r requirements/base.txt, drf-yasg
drf-yasg==1.17.1 # via -r requirements/base.txt
django==2.2.12 # via -r requirements/base.txt, django-appconf, django-axes, django-choices, django-filter, django-jenkins, django-redis, django-rest-framework-condition, django-rosetta, django-sniplates, drf-nested-routers, drf-yasg, vng-api-common
djangorestframework-camel-case==1.2.0 # via -r requirements/base.txt, vng-api-common
djangorestframework==3.9.4 # via -r requirements/base.txt, drf-nested-routers, drf-yasg, vng-api-common
drf-nested-routers==0.91 # via -r requirements/base.txt, vng-api-common
drf-yasg==1.16.0 # via -r requirements/base.txt, vng-api-common
elastic-apm==5.5.2 # via -r requirements/base.txt
factory-boy==2.12.0 # via -r requirements/test-tools.in
faker==4.0.3 # via factory-boy
freezegun==0.3.15 # via -r requirements/test-tools.in
gemma-zds-client==0.13.3 # via -r requirements/base.txt, vng-api-common
idna==2.9 # via -r requirements/base.txt, requests
importlib-metadata==1.6.0 # via -r requirements/base.txt, jsonschema
inflection==0.4.0 # via -r requirements/base.txt, drf-yasg
iso-639==0.4.5 # via -r requirements/base.txt, vng-api-common
isodate==0.6.0 # via -r requirements/base.txt, vng-api-common
itypes==1.2.0 # via -r requirements/base.txt, coreapi
jinja2==2.11.2 # via -r requirements/base.txt, coreschema
jsonschema==3.2.0 # via -r requirements/base.txt
lxml==4.5.0 # via pyquery
markupsafe==1.1.1 # via -r requirements/base.txt, jinja2
packaging==20.3 # via -r requirements/base.txt, drf-yasg
oyaml==1.0 # via -r requirements/base.txt, vng-api-common
pillow==7.1.1 # via -r requirements/base.txt
polib==1.1.0 # via -r requirements/base.txt, django-rosetta
psycopg2==2.8.5 # via -r requirements/base.txt
pyparsing==2.4.7 # via -r requirements/base.txt, packaging
pyjwt==1.7.1 # via -r requirements/base.txt, gemma-zds-client, vng-api-common
pyquery==1.4.1 # via -r requirements/test-tools.in
pyrsistent==0.16.0 # via -r requirements/base.txt, jsonschema
python-dateutil==2.8.1 # via faker, freezegun
python-decouple==3.3 # via -r requirements/base.txt
python-dotenv==0.12.0 # via -r requirements/base.txt
pytz==2019.3 # via -r requirements/base.txt, django
pyyaml==5.3.1 # via -r requirements/base.txt, gemma-zds-client, oyaml, vng-api-common
redis==3.4.1 # via -r requirements/base.txt, django-redis
requests-mock==1.7.0 # via -r requirements/test-tools.in
requests==2.23.0 # via -r requirements/base.txt, coreapi, django-rosetta, requests-mock
requests==2.23.0 # via -r requirements/base.txt, coreapi, django-rosetta, gemma-zds-client, requests-mock, vng-api-common
ruamel.yaml.clib==0.2.0 # via -r requirements/base.txt, ruamel.yaml
ruamel.yaml==0.16.10 # via -r requirements/base.txt, drf-yasg
sentry-sdk==0.14.3 # via -r requirements/base.txt
six==1.14.0 # via -r requirements/base.txt, django-choices, django-compat, django-rosetta, drf-yasg, freezegun, jsonschema, packaging, pyrsistent, python-dateutil, requests-mock, webtest
six==1.14.0 # via -r requirements/base.txt, django-choices, django-compat, django-rosetta, drf-yasg, freezegun, isodate, jsonschema, pyrsistent, python-dateutil, requests-mock, webtest
soupsieve==2.0 # via beautifulsoup4
sqlparse==0.3.1 # via -r requirements/base.txt, django
tblib==1.6.0 # via -r requirements/test-tools.in
text-unidecode==1.3 # via faker
unidecode==1.1.1 # via -r requirements/base.txt, vng-api-common
uritemplate==3.0.1 # via -r requirements/base.txt, coreapi, drf-yasg
urllib3==1.25.8 # via -r requirements/base.txt, elastic-apm, requests, sentry-sdk
uwsgi==2.0.18 # via -r requirements/base.txt
vng-api-common==1.5.6 # via -r requirements/base.txt
waitress==1.4.3 # via webtest
webob==1.8.6 # via webtest
webtest==2.0.34 # via django-webtest
Expand Down
29 changes: 21 additions & 8 deletions requirements/dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,33 +20,41 @@ cssselect==1.1.0 # via -r requirements/ci.txt, pyquery
django-admin-index==1.3.0 # via -r requirements/ci.txt
django-appconf==1.0.4 # via -r requirements/ci.txt, django-axes
django-axes==5.3.1 # via -r requirements/ci.txt
django-choices==1.7.1 # via -r requirements/ci.txt
django-choices==1.7.1 # via -r requirements/ci.txt, vng-api-common
django-compat==1.0.15 # via -r requirements/ci.txt, django-hijack, django-hijack-admin
django-debug-toolbar==2.2 # via -r requirements/dev.in
django-extensions==2.2.9 # via -r requirements/dev.in
django-filter==2.4.0 # via -r requirements/ci.txt, vng-api-common
django-hijack-admin==2.1.10 # via -r requirements/ci.txt
django-hijack==2.1.10 # via -r requirements/ci.txt, django-hijack-admin
django-ipware==2.1.0 # via -r requirements/ci.txt, django-axes
django-jenkins==0.110.0 # via -r requirements/ci.txt
django-ordered-model==3.3.0 # via -r requirements/ci.txt, django-admin-index
django-redis==4.11.0 # via -r requirements/ci.txt
django-rest-framework-condition==0.1.1 # via -r requirements/ci.txt, vng-api-common
django-rosetta==0.9.4 # via -r requirements/ci.txt
django-sniplates==0.7.0 # via -r requirements/ci.txt
django-solo==1.1.3 # via -r requirements/ci.txt, vng-api-common
django-webtest==1.9.7 # via -r requirements/ci.txt
django==2.2.12 # via -r requirements/ci.txt, django-appconf, django-axes, django-choices, django-debug-toolbar, django-jenkins, django-redis, django-rosetta, django-sniplates, djangorestframework, drf-yasg
djangorestframework==3.11.0 # via -r requirements/ci.txt, drf-yasg
django==2.2.12 # via -r requirements/ci.txt, django-appconf, django-axes, django-choices, django-debug-toolbar, django-filter, django-jenkins, django-redis, django-rest-framework-condition, django-rosetta, django-sniplates, drf-nested-routers, drf-yasg, vng-api-common
djangorestframework-camel-case==1.2.0 # via -r requirements/ci.txt, vng-api-common
djangorestframework==3.9.4 # via -r requirements/ci.txt, drf-nested-routers, drf-yasg, vng-api-common
docutils==0.16 # via sphinx
drf-yasg==1.17.1 # via -r requirements/ci.txt
drf-nested-routers==0.91 # via -r requirements/ci.txt, vng-api-common
drf-yasg==1.16.0 # via -r requirements/ci.txt, vng-api-common
elastic-apm==5.5.2 # via -r requirements/ci.txt
entrypoints==0.3 # via flake8
factory-boy==2.12.0 # via -r requirements/ci.txt
faker==4.0.3 # via -r requirements/ci.txt, factory-boy
flake8==3.7.9 # via -r requirements/dev.in
freezegun==0.3.15 # via -r requirements/ci.txt
gemma-zds-client==0.13.3 # via -r requirements/ci.txt, vng-api-common
idna==2.9 # via -r requirements/ci.txt, requests
imagesize==1.2.0 # via sphinx
importlib-metadata==1.6.0 # via -r requirements/ci.txt, jsonschema
inflection==0.4.0 # via -r requirements/ci.txt, drf-yasg
iso-639==0.4.5 # via -r requirements/ci.txt, vng-api-common
isodate==0.6.0 # via -r requirements/ci.txt, vng-api-common
isort==5.5.3 # via -r requirements/dev.in
itypes==1.2.0 # via -r requirements/ci.txt, coreapi
jinja2==2.11.2 # via -r requirements/ci.txt, coreschema, sphinx
Expand All @@ -55,7 +63,8 @@ lxml==4.5.0 # via -r requirements/ci.txt, pyquery
markupsafe==1.1.1 # via -r requirements/ci.txt, jinja2
mccabe==0.6.1 # via flake8
mypy-extensions==0.4.3 # via black
packaging==20.3 # via -r requirements/ci.txt, drf-yasg, sphinx
oyaml==1.0 # via -r requirements/ci.txt, vng-api-common
packaging==20.3 # via sphinx
pathspec==0.8.0 # via black
pillow==7.1.1 # via -r requirements/ci.txt
pip-tools==4.5.1 # via -r requirements/dev.in
Expand All @@ -64,21 +73,23 @@ psycopg2==2.8.5 # via -r requirements/ci.txt
pycodestyle==2.5.0 # via flake8
pyflakes==2.1.1 # via flake8
pygments==2.6.1 # via sphinx
pyparsing==2.4.7 # via -r requirements/ci.txt, packaging
pyjwt==1.7.1 # via -r requirements/ci.txt, gemma-zds-client, vng-api-common
pyparsing==2.4.7 # via packaging
pyquery==1.4.1 # via -r requirements/ci.txt
pyrsistent==0.16.0 # via -r requirements/ci.txt, jsonschema
python-dateutil==2.8.1 # via -r requirements/ci.txt, faker, freezegun
python-decouple==3.3 # via -r requirements/ci.txt
python-dotenv==0.12.0 # via -r requirements/ci.txt
pytz==2019.3 # via -r requirements/ci.txt, babel, django
pyyaml==5.3.1 # via -r requirements/ci.txt, gemma-zds-client, oyaml, vng-api-common
redis==3.4.1 # via -r requirements/ci.txt, django-redis
regex==2020.4.4 # via black
requests-mock==1.7.0 # via -r requirements/ci.txt
requests==2.23.0 # via -r requirements/ci.txt, coreapi, django-rosetta, requests-mock, sphinx
requests==2.23.0 # via -r requirements/ci.txt, coreapi, django-rosetta, gemma-zds-client, requests-mock, sphinx, vng-api-common
ruamel.yaml.clib==0.2.0 # via -r requirements/ci.txt, ruamel.yaml
ruamel.yaml==0.16.10 # via -r requirements/ci.txt, drf-yasg
sentry-sdk==0.14.3 # via -r requirements/ci.txt
six==1.14.0 # via -r requirements/ci.txt, django-choices, django-compat, django-extensions, django-rosetta, drf-yasg, freezegun, jsonschema, packaging, pip-tools, pyrsistent, python-dateutil, requests-mock, webtest
six==1.14.0 # via -r requirements/ci.txt, django-choices, django-compat, django-extensions, django-rosetta, drf-yasg, freezegun, isodate, jsonschema, packaging, pip-tools, pyrsistent, python-dateutil, requests-mock, webtest
snowballstemmer==2.0.0 # via sphinx
soupsieve==2.0 # via -r requirements/ci.txt, beautifulsoup4
sphinx-rtd-theme==0.4.3 # via -r requirements/dev.in
Expand All @@ -95,9 +106,11 @@ text-unidecode==1.3 # via -r requirements/ci.txt, faker
toml==0.10.1 # via black
typed-ast==1.4.1 # via black
typing-extensions==3.7.4.3 # via black
unidecode==1.1.1 # via -r requirements/ci.txt, vng-api-common
uritemplate==3.0.1 # via -r requirements/ci.txt, coreapi, drf-yasg
urllib3==1.25.8 # via -r requirements/ci.txt, elastic-apm, requests, sentry-sdk
uwsgi==2.0.18 # via -r requirements/ci.txt
vng-api-common==1.5.6 # via -r requirements/ci.txt
waitress==1.4.3 # via -r requirements/ci.txt, webtest
webob==1.8.6 # via -r requirements/ci.txt, webtest
webtest==2.0.34 # via -r requirements/ci.txt, django-webtest
Expand Down
11 changes: 11 additions & 0 deletions src/objects/api/schema.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from django.conf import settings

from drf_yasg import openapi

description = """An API to access Objects"""

info = openapi.Info(
title=f"{settings.PROJECT_NAME} API",
default_version=settings.API_VERSION,
description=description,
)
20 changes: 5 additions & 15 deletions src/objects/api/urls.py
Original file line number Diff line number Diff line change
@@ -1,24 +1,14 @@
from django.conf.urls import include
from django.urls import path, re_path

from drf_yasg import openapi
from drf_yasg.views import get_schema_view
from rest_framework import permissions, routers
from rest_framework import routers
from vng_api_common.schema import SchemaView

from .views import ObjectViewSet

router = routers.DefaultRouter()
router.register(r"objects", ObjectViewSet)

schema_view = get_schema_view(
openapi.Info(
title="Objects API",
default_version="v1",
description="OAS for Objects API",
),
public=True,
permission_classes=(permissions.AllowAny,),
)

urlpatterns = [
path("v1/", include(router.urls)),
Expand All @@ -27,13 +17,13 @@
include(
[
re_path(
r"^openapi(?P<format>\.json|\.yaml)$",
schema_view.without_ui(cache_timeout=0),
r"^schema/openapi(?P<format>\.json|\.yaml)$",
SchemaView.without_ui(cache_timeout=0),
name="schema-json",
),
re_path(
r"^schema/$",
schema_view.with_ui("redoc", cache_timeout=0),
SchemaView.with_ui("redoc", cache_timeout=0),
name="schema-redoc",
),
]
Expand Down
21 changes: 21 additions & 0 deletions src/objects/conf/api.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from vng_api_common.conf.api import * # noqa - imports white-listed

API_VERSION = "0.1.0"


# api settings
REST_FRAMEWORK = {
"DEFAULT_RENDERER_CLASSES": ["rest_framework.renderers.JSONRenderer"],
"DEFAULT_PARSER_CLASSES": ["rest_framework.parsers.JSONParser"],
# test
"TEST_REQUEST_DEFAULT_FORMAT": "json",
}

# OAS settings
SWAGGER_SETTINGS = BASE_SWAGGER_SETTINGS.copy()
SWAGGER_SETTINGS.update(
{
"DEFAULT_INFO": "objects.api.schema.info",
"SECURITY_DEFINITIONS": None,
}
)

0 comments on commit a387f97

Please sign in to comment.