diff --git a/oknardia/oknardia/urls.py b/oknardia/oknardia/urls.py index dc22b4c..a58569b 100644 --- a/oknardia/oknardia/urls.py +++ b/oknardia/oknardia/urls.py @@ -71,9 +71,14 @@ urlpatterns = [ re_path(r'^catalog/company[/*]$', catalog.catalog_company), re_path(r'^catalog/company/(?P\d+)-(?P\S*)[/*]$', catalog.catalog_company_detail), # ЦЕНОВЫЕ ПРЕДЛОЖЕНИЯ + # --- Одиночное окно re_path(r'^tsena-odnogo-okna/(?P\d+)x(?P\d+)mm/tip(?P\d+)[/*]$', prices.report_one_win_price), - re_path(r'^(?P\d{1,6})/(?P\d{1,})/(?P[\s\S]+|.*)$', prices.report_price), + # --- Ценовая выдача + re_path(r'^(?P\d+)/(?P\d+)/(?P[\s\S]+|.*)[/*]$', prices.report_price), + # --- Подгружаемый фрейм ценовая выдачи + re_path(r'^next_price_frame/idA(?P\d+)MDPO(?P\d+)LON(?P\d+)' + r'LAT(?P\d+\.*\d*)N(?P\d+\.*\d*)\S*[/*]$', prices.next_price_frame), ] diff --git a/oknardia/web/prices.py b/oknardia/web/prices.py index a1ce1e9..fc28266 100644 --- a/oknardia/web/prices.py +++ b/oknardia/web/prices.py @@ -314,6 +314,35 @@ def report_price_frame(apartment_id: int, mount_dim_per_offer: int, address_long return {'META_DATA_PUBLISH': time_for_meta, 'PRICE_FRAME': price_frame, 'N': n_begin} +def next_price_frame(request: HttpRequest, apart_id: str = "1", mount_dim_per_offer: str = "1", + address_longitude: str = "0.", address_latitude: str = "0.", + frame_begin_n: str = "0") -> HttpResponse: + """ Возвращает очередным фреймом ценовых предложений. + + :param request: HttpRequest -- входящий HTTP-запрос + :param apart_id: str -- ID типовой квартиры, для которой получаем ценовые предложения + :param mount_dim_per_offer: str -- число различных оконных проемов в этой квартире (чтобы отсеять предложения, + в которых не представлены все проемы) + :param address_longitude: str -- долгота адреса (геокоордината), для которого получаем ценовые предложения, чтобы + рассчитать удаленность компании предоставившей коммерческие предложения + :param address_latitude: str -- широта адреса (геокоордината), для которого получаем ценовые предложения, чтобы + рассчитать удаленность компании предоставившей коммерческие предложения + :param frame_begin_n: str -- Номер записи с которой начинается фрейм с ценами + :return: HttpResponse -- HTTP-ответ с JSON-данными: + """ + time_start = time.time() + # получаем данные для фрейма ценовых предложений + PriceFrame = report_price_frame(int(apart_id), int(mount_dim_per_offer), float(address_longitude), + float(address_latitude), int(frame_begin_n)) + to_template = PriceFrame + to_template.update({'APPARTMENT_ID': apart_id, + 'MOUNT_DIM_PER_OFFER': mount_dim_per_offer, + 'ADDRESS_LAT': address_latitude, + 'ADDRESS_LON': address_longitude, + 'ticks': float(time.time() - time_start)}) + return render(request, "report/report_precelist_frame.html", to_template) + + def report_one_win_price(request: HttpRequest, win_width_mm: str = '670', win_height_mm: str = '2160', win_id: str = '16') -> HttpResponse: """ Формируем выдачу цен для единичного ТИПОВОГО окна (т.е. проема из серийного дома). @@ -444,6 +473,8 @@ def report_one_win_price(request: HttpRequest, win_width_mm: str = '670', win_he return render(request, "report/report_price-offers_for_one_window.html", to_template) + + def report_price(request: HttpRequest, build_id: str = "22427", apart_id: str = "61", slug: str = "g-moskva-ul-novorossijskaya-d-16") -> HttpResponse: """ Страница с расчетом стоимости окон