From d2900ef38e57c5f9a58ddeb81ba36ef42f0e1d2a Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Fri, 8 Apr 2016 13:42:09 +0200 Subject: [PATCH] Use django-rest-swagger for API documentation. --- modoboa/admin/api.py | 31 ++++++++++++++++++- .../core/commands/templates/settings.py.tpl | 12 +++++++ modoboa/urls.py | 1 + requirements.txt | 1 + 4 files changed, 44 insertions(+), 1 deletion(-) diff --git a/modoboa/admin/api.py b/modoboa/admin/api.py index 65d092f53..c64b5d616 100644 --- a/modoboa/admin/api.py +++ b/modoboa/admin/api.py @@ -103,7 +103,36 @@ class AccountViewSet(viewsets.ModelViewSet): class AliasViewSet(viewsets.ModelViewSet): - """ViewSet for Alias.""" + """ViewSet for Alias. + + --- + create: + serializer: modoboa.admin.serializers.AliasSerializer + parameters: + - name: recipients + description: recipient(s) of the alias + required: true + type: array[string] + paramType: form + + update: + serializer: modoboa.admin.serializers.AliasSerializer + parameters: + - name: recipients + description: recipient(s) of the alias + required: true + type: array[string] + paramType: form + + partial_update: + serializer: modoboa.admin.serializers.AliasSerializer + parameters: + - name: recipients + description: recipient(s) of the alias + required: true + type: array[string] + paramType: form + """ permission_classes = [IsAuthenticated, DjangoModelPermissions, ] serializer_class = serializers.AliasSerializer diff --git a/modoboa/core/commands/templates/settings.py.tpl b/modoboa/core/commands/templates/settings.py.tpl index 0a4781432..f9fdbb072 100644 --- a/modoboa/core/commands/templates/settings.py.tpl +++ b/modoboa/core/commands/templates/settings.py.tpl @@ -49,6 +49,7 @@ INSTALLED_APPS = ( 'django.contrib.staticfiles', 'reversion', 'rest_framework.authtoken', + 'rest_framework.swagger, {% if devmode %} 'djangobower',{% endif %} ) @@ -160,6 +161,17 @@ REST_FRAMEWORK = { ) } +SWAGGER_SETTINGS = { + "is_authenticated": False, + "api_version": "1.0", + "exclude_namespaces": [], + "info": { + "contact": "contact@modoboa.com", + "description": ("Modoboa API, requires a valid token."), + "title": "Modoboa API", + } +} + # Modoboa settings #MODOBOA_CUSTOM_LOGO = os.path.join(MEDIA_URL, "custom_logo.png") diff --git a/modoboa/urls.py b/modoboa/urls.py index 484552ecd..30192a6f9 100644 --- a/modoboa/urls.py +++ b/modoboa/urls.py @@ -34,6 +34,7 @@ parameters.apply_to_django_settings() urlpatterns += patterns( "", ("^api/v1/", include("modoboa.urls_api", namespace="external_api")), + url("^docs/api/", include('rest_framework_swagger.urls')), ) if 'modoboa.demo' in settings.INSTALLED_APPS: diff --git a/requirements.txt b/requirements.txt index f265c3af9..fe893fb09 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,5 +11,6 @@ django-passwords==0.3.4 rfc6266 progressbar==2.3 djangorestframework==3.3.1 +django-rest-swagger==0.3.5 django-subcommand2==0.1.1