add swagger

dev
timofejmalinin 3 years ago
parent dde35b954d
commit 3909e5584c

@ -143,8 +143,8 @@ CORS_ORIGIN_ALLOW_ALL = True # If this is used then `CORS_ORIGIN_WHITELIST` will
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW = True
# DB_URL = 'postgresql://postamates_user:postamates_pass@postamates.spatiality.website:5481/postamates_db'
DB_URL = f"postgresql://{os.getenv('POSTGRES_USER', 'postgres')}:{os.getenv('POSTGRES_PASSWORD', 'postgres')}@{os.getenv('POSTGRES_HOST', 'postgres')}:{os.getenv('POSTGRES_PORT', 'postgres')}/{os.getenv('POSTGRES_DB', 'postgres')}"
DB_URL = 'postgresql://postamates_user:postamates_pass@postamates.spatiality.website:5481/postamates_db'
# DB_URL = f"postgresql://{os.getenv('POSTGRES_USER', 'postgres')}:{os.getenv('POSTGRES_PASSWORD', 'postgres')}@{os.getenv('POSTGRES_HOST', 'postgres')}:{os.getenv('POSTGRES_PORT', 'postgres')}/{os.getenv('POSTGRES_DB', 'postgres')}"
if os.getenv('local') is not None:
GDAL_LIBRARY_PATH = '/opt/homebrew/opt/gdal/lib/libgdal.dylib'
GEOS_LIBRARY_PATH = '/opt/homebrew/opt/geos/lib/libgeos_c.dylib'

@ -1,30 +1,10 @@
from django.contrib import admin
from django.urls import path, include, re_path
from django.urls import path, include
from django.conf.urls.static import static
from django.conf import settings
from rest_framework import permissions
from drf_yasg.views import get_schema_view
from drf_yasg import openapi
schema_view = get_schema_view(
openapi.Info(
title="Snippets API",
default_version='v1',
description="Test description",
terms_of_service="https://www.google.com/policies/terms/",
contact=openapi.Contact(email="contact@snippets.local"),
license=openapi.License(name="BSD License"),
),
public=True,
permission_classes=[permissions.AllowAny],
)
urlpatterns = [
re_path(r'^swagger(?P<format>\.json|\.yaml)$', schema_view.without_ui(cache_timeout=0), name='schema-json'),
re_path(r'^swagger/$', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
# re_path(r'^redoc/$', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),
path('admin/', admin.site.urls),
path('api/', include('service.urls')),
]

@ -1,7 +1,5 @@
from django.contrib import admin
from django.urls import path, include, re_path
from django.conf.urls.static import static
from django.conf import settings
from django.urls import path, re_path
from service import views
from rest_framework import permissions
from drf_yasg.views import get_schema_view
@ -22,10 +20,9 @@ schema_view = get_schema_view(
)
urlpatterns = [
path('ao_and_rayons/', views.ao_and_rayons.as_view(), name='ao_and_rayons'),
path('raschet/', views.raschet.as_view(), name='ao_and_rayons'),
re_path(r'^swagger(?P<format>\.json|\.yaml)$', schema_view.without_ui(cache_timeout=0), name='schema-json'),
re_path(r'^swagger/$', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
# re_path(r'^redoc/$', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),
path('admin/', admin.site.urls),
path('api/', include('service.urls')),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

@ -1,4 +1,3 @@
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import permissions
from django.core.cache import cache
@ -9,6 +8,10 @@ from io import BytesIO
from django.http import HttpResponse
from rest_framework.generics import GenericAPIView
def rename_result_dataset(dataframe, rename_dict, reverse=False):
if reverse:
return dataframe.rename(columns={v: k for k, v in rename_dict.items()})
return dataframe.rename(columns=rename_dict)
class ao_and_rayons(GenericAPIView):
permission_classes = [permissions.AllowAny]
@ -26,7 +29,56 @@ class raschet(GenericAPIView):
permission_classes = [permissions.AllowAny]
def post(self, request, format=None):
df_points, df_nets = raschet_alg(**request.data)
POINTS_RENAME_DICT = {
"point_id": "ID точки (для всех наборов одинаковые)",
"category": "тип объекта",
"msk_ao": "Адм. округ",
"msk_rayon": "Адм. район",
"people": "Численность населения в 2021 г.",
"people2025": "Численность населения в 2025 г. (прогноз)",
"stops_ot": "Остановки общественного транспорта",
"routes_ot": "Маршруты общетвенного транспорта",
"in_metro": "Входы в ближайшее метро в месяц",
"out_metro": "Выходы из ближайшего метро в месяц",
"tc": "Тогровые центры",
"empls": "Рабочие места",
"walkers": "Трафик населения",
"schools": "Школы и детские сады",
"parking": "Парковочные места",
"pvz": "Пункты выдачи заказов",
"gov_place": "Рекомендованные пункты размещения постаматов",
"bike_park": "Городская аренда велосипедов, шт.",
"products": "Продовольственные магазины",
"nonprod": "Непродовольственные магазины",
"service": "Пункты оказания бытовых услуг",
"vuz": "ВУЗы и техникумы"
}
NET_RENAME_DICT = {
"cell_id": "ID ячейки (для всех трёх сеток - разные, нумерация сквозная)",
"msk_ao": "Адм. округ",
"msk_rayon": "Адм. район",
"people": "Численность населения в 2021 г.",
"people2025": "Численность населения в 2025 г. (прогноз)",
"stops_ot": "Остановки общественного транспорта",
"routes_ot": "Маршруты общетвенного транспорта",
"in_metro": "Входы в ближайшее метро в месяц",
"out_metro": "Выходы из ближайшего метро в месяц",
"tc": "Тогровые центры",
"empls": "Рабочие места",
"walkers": "Трафик населения",
"schools": "Школы и детские сады",
"parking": "Парковочные места",
"pvz": "Пункты выдачи заказов",
"gov_place": "Рекомендованные пункты размещения постаматов",
"bike_park": "Городская аренда велосипедов, шт.",
"products": "Продовольственные магазины",
"nonprod": "Непродовольственные магазины",
"service": "Пункты оказания бытовых услуг",
"vuz": "ВУЗы и техникумы"
}
df_points_, df_nets_ = raschet_alg(**request.data)
df_points = rename_result_dataset(df_points_, POINTS_RENAME_DICT)
df_nets = rename_result_dataset(df_nets_, NET_RENAME_DICT)
with BytesIO() as b:
# Use the StringIO object as the filehandle.
writer = pd.ExcelWriter(b, engine='xlsxwriter')

Loading…
Cancel
Save