Вьюшка: "Каталог / Типовые серии зданий" -- готово

This commit is contained in:
2022-12-10 16:28:22 +03:00
parent 988f8f1e07
commit 20f43ce692
3 changed files with 138 additions and 2 deletions

View File

@@ -52,12 +52,15 @@ urlpatterns = [
re_path(r'^stat/rating[/*]$', report2.ratings), re_path(r'^stat/rating[/*]$', report2.ratings),
re_path(r'^stat/rating/profiles_rank[/*]$', report2.profiles_rating), re_path(r'^stat/rating/profiles_rank[/*]$', report2.profiles_rating),
# --- Каталог # --- Каталог
# --- --- Каталог профилей
re_path(r'^catalog[/*]$', catalog.catalog_root), re_path(r'^catalog[/*]$', catalog.catalog_root),
re_path(r'^catalog/profile[/*]$', catalog.catalog_profile), re_path(r'^catalog/profile[/*]$', catalog.catalog_profile),
re_path(r'^catalog/profile/(?P<manufacture_id>\d+)-(?P<manufacture_name>\S*)' re_path(r'^catalog/profile/(?P<manufacture_id>\d+)-(?P<manufacture_name>\S*)'
r'/(?P<model_id>\d+)-(?P<model_name>\S*)[/*]$', catalog.catalog_profile_model), r'/(?P<model_id>\d+)-(?P<model_name>\S*)[/*]$', catalog.catalog_profile_model),
re_path(r'^catalog/profile/(?P<manufacture_id>\d+)-(?P<manufacture_name>\S*)[/*]$', re_path(r'^catalog/profile/(?P<manufacture_id>\d+)-(?P<manufacture_name>\S*)[/*]$',
catalog.catalog_profile_manufacture), catalog.catalog_profile_manufacture),
# --- --- Каталог серий типового строительства
re_path(r'^catalog/seria[/*]$', catalog.catalog_seria),
] ]

View File

@@ -0,0 +1,94 @@
{% extends "base.html" %}
{% load static %}
{% block Title %}Каталог серий домов{% endblock %}
{% block Add_Body_Attribute %} style="padding-top:70px;"{% endblock %}
{% block Description %}Каталог типовых серий домов | Каталог «Окнардия»{% endblock %}
{% block Keywords %}Каталог, каталог серий, серии домов, серии зданий, типовые дома, типовые здания, каталог серий домов, oknardia, окнардия {{ META_KEYWORDS|default:"" }} {% endblock %}
{% block Date4Meta %}{% if PUB_DAT %}{{ PUB_DAT|date:"c" }}{% else %}{% now "c" %}{% endif %}{% endblock %}
{% block Last4Meta %}{% if PUB_DAT %}{{ PUB_DAT|date:"c" }}{% else %}{% now "c" %}{% endif %}{% endblock %}
{% block Author4Meta %}: Каталог серий домов{% endblock %}
{% block CopyrightAuthor4Meta %}: Каталог серий домов{% endblock %}
{% block Top_Meta1 %}{# <!-- BEGIN Дополнительные Metatags --> #}
<meta itemprop="author" content="Каталог «Окнардия»" />{% if IMG_FOR_BLOG %}
<meta itemprop="image" content="https://oknardia.ru/media/{{ IMG_FOR_BLOG }}" />{% else %}
<meta itemprop="image" content="https://oknardia.ru/static/img/MerDY3gpU0w.jpg" />{% endif %}
<meta itemprop="datePublished" content="{{ PUB_DAT|date:"c" }}" />
<span itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="Каталог «Окнардия»" /></span>
<span itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="name" content="Каталог «Окнардия»" /></span>
<meta itemprop="articleSection" content="Каталог «Окнардия»" />
<meta itemprop="headline" content="Каталог типовых серий домов | oknardia.ru" />
<meta name="news_keywords" content="{{ HEADER|striptags }}" />
<link rel="canonical" href="https://oknardia.ru//catalog/seria/" />
<link rel="standout" href="https://oknardia.ru//catalog/seria/" />
<!-- Разметка для соц-сетей Facebook Open Graph -->
<meta property="fb:admins" name="admins" content="100000084781830" />
<meta property="fb:pages" content="276108456054163" />
<meta property="fb:app_id" content="258354027974262" />
<meta property="fb:profile_id" name="profile_id" content="https://www.facebook.com/oknardia/" />
<meta property="og:locale" content="ru_RU" />
<meta property="og:site_name" content="oknardia.ru" />
<meta property="og:url" content="https://oknardia.ru//catalog/seria/" />
<meta property="og:type" content="article" />
<meta property="og:title" content="Каталог «Окнардия» | oknardia.ru" />
<meta property="og:description" content="Типовые проекты жилого строительства, вхождение стандартных оконных проёмов и балконных блоков в планировки типовых квартир серии, графики ввода в эксплуатацию зданий серии, география строительства, износ жилого фонда..." />
<meta property="og:image" content="{% if IMG_FOR_BLOG %}https://oknardia.ru/media/{% endif %}{{ IMG_FOR_BLOG|default:'https://oknardia.ru/static/img/MerDY3gpU0w.jpg' }}" />
<link rel="image_src" href="{% if IMG_FOR_BLOG %}https://oknardia.ru/media/{% endif %}{{ IMG_FOR_BLOG|default:'https://oknardia.ru/static/img/MerDY3gpU0w.jpg' }}" />
<!-- Разметка для соц-сетей Twitter Card -->
<meta name="twitter:title" content="Каталог типовых серий домов | oknardia.ru" />
<meta name="twitter:description" content="Типовые проекты жилого строительства, вхождение стандартных оконных проёмов и балконных блоков в планировки типовых квартир серии, графики ввода в эксплуатацию зданий серии, география строительства, износ жилого фонда..." />
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@oknardia" />
<meta name="twitter:domain" content="oknardia.ru" />
<meta property="twitter:url" content="{% if IMG_FOR_BLOG %}https://oknardia.ru/media/{% endif %}{{ IMG_FOR_BLOG|default:'https://oknardia.ru/static/img/MerDY3gpU0w.jpg' }}" />
<meta name="relap-image" content="{% if IMG_FOR_BLOG %}https://oknardia.ru/media/{% endif %}{{ IMG_FOR_BLOG|default:'https://oknardia.ru/static/img/MerDY3gpU0w.jpg' }}">
{# <!-- END Дополнительные Metatags --> #}{% endblock %}
{% block Main_Content %}
<div class="container-fluid">
{# <!--- Хлебные крошки: НАЧАЛО --> #}<div class="row">
<div class="col-md-11 col-xs-12">
<ol class="breadcrumb">
<li><a href="/">Главная</a></li>
<li><a href="/catalog">Каталог</a></li>
<li>Типовые серии зданий</li>
</ol>
<h1>Каталог типовых серий жилого строительства</h1>
</div>
</div>{# <!--- Хлебные крошки: КОНЕЦ ---> #}
<dIv class="row">
<div class="col-md-11 col-xs-12">
<p>Типовые проекты жилого строительства, вхождение стандартных оконных проёмов и&nbsp;балконных блоков в&nbsp;планировки типовых квартир серии, графики ввода в&nbsp;эксплуатацию зданий серии, география строительства, износ жилого фонда&hellip;</p>
</div>
</dIv>
<div class="row">{% for i in SERIAS %}
<div class="col--lg-2 col-md-3 col-sm-4 col-xs-6"><a href="/catalog/seria/{{ i.NAME_T }}/all{{ i.ID }}">
<div class="catalog-seria-img" style="background-image:url(/media/{{ i.URL }});">
<h4><span>Серия {{ i.NAME }}</span></h4>
</div></a>
</div>{% endfor %}
<DIV class="col-xs-12" style="height:6em;"></DIV>
</dIv>
{# --- Баннер: НАЧАЛО --- #}
<div class="row"><div class="col-md-12 col-xs-12"><hr class="dotted-black" />{% include "ad/bannet-wide.html" %}</div></div>
{# --- Баннер: конец --- #}
<div class="row">
{% include "report/report_last_user_visit.html" %}
{% include "report/report_log_user_visit.html" %}
</div>
</div>{% endblock %}

View File

@@ -4,7 +4,7 @@ from django.shortcuts import render, redirect
from django.http import HttpRequest, HttpResponse from django.http import HttpRequest, HttpResponse
from django.utils import timezone from django.utils import timezone
from oknardia.settings import * from oknardia.settings import *
from oknardia.models import PVCprofiles from oknardia.models import PVCprofiles, Seria_Info
from web.report1 import get_last_all_user_visit_list, get_last_user_visit_cookies, get_last_user_visit_list from web.report1 import get_last_all_user_visit_list, get_last_user_visit_cookies, get_last_user_visit_list
from web.add_func import normalize, get_rating_set_for_stars from web.add_func import normalize, get_rating_set_for_stars
import time import time
@@ -284,7 +284,7 @@ def catalog_profile_model(request: HttpRequest, manufacture_id: int, manufacture
return render(request, "catalog/catalog_of_profiles_model.html", to_template) return render(request, "catalog/catalog_of_profiles_model.html", to_template)
def catalog_profile_manufacture (request: HttpRequest, manufacture_id: int, manufacture_name: str) -> HttpResponse: def catalog_profile_manufacture(request: HttpRequest, manufacture_id: int, manufacture_name: str) -> HttpResponse:
""" """
КАТАЛОГ ПРОФИЛЕЙ: страница с описанием производителя профилей и списком марки производимых им профилей КАТАЛОГ ПРОФИЛЕЙ: страница с описанием производителя профилей и списком марки производимых им профилей
@@ -421,3 +421,42 @@ def catalog_profile_manufacture (request: HttpRequest, manufacture_id: int, manu
'ticks': float(time.time()-time_start) 'ticks': float(time.time()-time_start)
}) })
return render(request, "catalog/catalog_of_profiles_manufacture.html", to_template) return render(request, "catalog/catalog_of_profiles_manufacture.html", to_template)
# Каталог типовый серий зданий (пока переадресация)
def catalog_seria(request: HttpRequest) -> HttpResponse:
"""
КАТАЛОГ ТИПОВЫЙ СЕРИЙ: страница со всеми сериями зданий в базе окнардии
:param request: HttpRequest -- входящий http-запрос
:return response: HttpResponse -- исходящий http-ответ
"""
time_start = time.time()
try:
q_seria = Seria_Info.objects.raw('SELECT'
' oknardia_seria_info.id,'
' oknardia_seria_info.sURL2IMG,'
' oknardia_seria_info.sName '
'FROM oknardia_seria_info '
'WHERE oknardia_seria_info.id = oknardia_seria_info.kRoot_id '
'ORDER BY oknardia_seria_info.sName;')
list_seria = []
for i in q_seria:
list_seria.append({
"ID": i.id,
"URL": i.sURL2IMG,
"NAME": i.sName,
"NAME_T": pytils.translit.slugify(i.sName)
})
to_template = {'SERIAS': list_seria}
except (ObjectDoesNotExist, ):
to_template = {}
to_template.update({
# получаем последние визиты клиента через куки
'LAST_VISIT': get_last_user_visit_list(get_last_user_visit_cookies(request)[:3]),
# получаем последние визиты всех посетителей из базы
# id2log, log_visit = get_last_all_user_visit_list()
'LOG_VISIT': get_last_all_user_visit_list(),
'ticks': float(time.time() - time_start)
})
return render(request, "catalog/catalog_seria.html", to_template)