diff --git a/postamates/settings.py b/postamates/settings.py index cfce8ea..f71c406 100644 --- a/postamates/settings.py +++ b/postamates/settings.py @@ -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' \ No newline at end of file diff --git a/postamates/urls.py b/postamates/urls.py index f8e57db..bb122ae 100644 --- a/postamates/urls.py +++ b/postamates/urls.py @@ -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\.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')), ] diff --git a/service/urls.py b/service/urls.py index f92a5d1..ea03f38 100644 --- a/service/urls.py +++ b/service/urls.py @@ -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\.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) diff --git a/service/views.py b/service/views.py index d72e8d0..77b5a3f 100644 --- a/service/views.py +++ b/service/views.py @@ -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')