diff --git a/plovidba_aplikacija/__pycache__/views.cpython-38.pyc b/plovidba_aplikacija/__pycache__/views.cpython-38.pyc index c957fc9..ab30d8a 100644 Binary files a/plovidba_aplikacija/__pycache__/views.cpython-38.pyc and b/plovidba_aplikacija/__pycache__/views.cpython-38.pyc differ diff --git a/plovidba_aplikacija/views.py b/plovidba_aplikacija/views.py index a575364..06192bd 100644 --- a/plovidba_aplikacija/views.py +++ b/plovidba_aplikacija/views.py @@ -19,6 +19,8 @@ class ObjektSigurnostiList(generics.ListCreateAPIView): queryset = ObjektSigurnosti.objects.all().order_by("naziv") serializer_class = ObjektSigurnostiSerializer pagination_class = CustomObjektSigurnostiPagination + permission_classes = [] + def get_queryset(self): user = self.request.user diff --git a/plovidba_projekt/__pycache__/settings.cpython-38.pyc b/plovidba_projekt/__pycache__/settings.cpython-38.pyc index bde7ac6..6296b3a 100644 Binary files a/plovidba_projekt/__pycache__/settings.cpython-38.pyc and b/plovidba_projekt/__pycache__/settings.cpython-38.pyc differ diff --git a/plovidba_projekt/__pycache__/urls.cpython-38.pyc b/plovidba_projekt/__pycache__/urls.cpython-38.pyc index a3061ee..88c0bdc 100644 Binary files a/plovidba_projekt/__pycache__/urls.cpython-38.pyc and b/plovidba_projekt/__pycache__/urls.cpython-38.pyc differ diff --git a/plovidba_projekt/settings.py b/plovidba_projekt/settings.py index adf68ff..f580181 100644 --- a/plovidba_projekt/settings.py +++ b/plovidba_projekt/settings.py @@ -49,6 +49,8 @@ INSTALLED_APPS = [ 'django_extensions', # 3rd party 'rest_framework', + 'drf_yasg', + 'rest_framework_swagger', # Custom apps: 'plovidba_aplikacija', @@ -122,6 +124,21 @@ AUTH_PASSWORD_VALIDATORS = [ }, ] +# Define DRF settings +REST_FRAMEWORK = { + "DEFAULT_AUTHENTICATION_CLASSES": [ + "rest_framework_simplejwt.authentication.JWTAuthentication", + ], + "DEFAULT_PERMISSION_CLASSES": [ + "rest_framework.permissions.IsAuthenticated", + ], + "DEFAULT_FILTER_BACKENDS": ["django_filters.rest_framework.DjangoFilterBackend"], + "DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.LimitOffsetPagination", + "PAGE_SIZE": 100, +} + +# API docs +SHOW_API_DOCS = ENV_BOOL("SHOW_API_DOCS", True) # Internationalization # https://docs.djangoproject.com/en/4.2/topics/i18n/ diff --git a/plovidba_projekt/urls.py b/plovidba_projekt/urls.py index fd56703..00ca650 100644 --- a/plovidba_projekt/urls.py +++ b/plovidba_projekt/urls.py @@ -14,11 +14,39 @@ Including another URLconf 1. Import the include() function: from django.urls import include, path 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ +from django.conf import settings from django.contrib import admin from django.urls import path, include from plovidba_aplikacija import views +from drf_yasg import openapi +from drf_yasg.views import get_schema_view +from drf_yasg import openapi +from rest_framework import permissions + + +api_schema_view = get_schema_view( + openapi.Info( + title="API docs", + default_version='v1', + description="Swagger docs for ListLabs API", + contact=openapi.Contact(email="elena.maric@listlabs.net") + ), + public=True, + permission_classes=[permissions.AllowAny], +) + urlpatterns = [ path('admin/', admin.site.urls), path('api/', include('plovidba_aplikacija.urls')), -] \ No newline at end of file + path("swagger/", api_schema_view.with_ui("swagger", cache_timeout=0), name="schema-swagger-ui"), + path("redoc/", api_schema_view.with_ui("redoc", cache_timeout=0), name="schema-redoc"), +] + +if settings.SHOW_API_DOCS: + urlpatterns += [ + path('api/docs/swagger/', + api_schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'), + path('api/docs/redoc/', + api_schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc-ui') + ] \ No newline at end of file