From 6a4c315cdc5a6a3d251ef49ac3c5c4b2e3ae275d Mon Sep 17 00:00:00 2001 From: erjemin Date: Sat, 31 Dec 2022 04:33:59 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D1=8C=D1=8E=D1=88=D0=BA=D0=B0:=20=D0=9F?= =?UTF-8?q?=D0=BE=D0=B4=D0=B3=D1=80=D1=83=D0=B6=D0=B0=D0=B5=D0=BC=D1=8B?= =?UTF-8?q?=D1=85=20=D1=84=D1=80=D0=B5=D0=B9=D0=BC=D0=BE=D0=B2=20=D1=86?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=D0=B2=D1=8B=D1=85=20=D0=BF=D1=80=D0=B5=D0=B4?= =?UTF-8?q?=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=B8=D0=B9=20--=20=D0=B3=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oknardia/oknardia/urls.py | 7 ++++++- oknardia/web/prices.py | 31 +++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) 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: """ Страница с расчетом стоимости окон