# -*- coding: utf-8 -*-
from django.shortcuts import render, redirect
from django.http import HttpRequest, HttpResponse
from oknardia.models import PVCprofiles, Seria_Info, Win_MountDim, Building_Info, SetKit
from datetime import datetime, timezone
import django.utils.dateformat
import django.utils.timezone
from oknardia.settings import *
import time
import random
import pytils
# Главная страница для вызова служебных процедур.
def service(request: HttpRequest) -> HttpResponse:
""" Страница для вызова служебных процедур
:param request: HttpRequest
:return: HttpResponse
"""
time_start = time.time()
# проверка на аутентификацию
print(request.user.is_authenticated)
if not request.user.is_authenticated:
return redirect("/service/not-denice")
return render(request, "service/index.html", {'ticks': float(time.time()-time_start)})
# страничка, на которую переадресует служебный интерфейс, если нет аутентификации.
def not_denice(request):
time_start = time.time()
return render(request, "service/not_denice.html", {'ticks': float(time.time()-time_start)})
def tmp(request: HttpRequest) -> HttpResponse:
""" Страница для тестирования верстки текста в блоге
:param request:
:return:
"""
t_start = time.time()
return render(request, "service/tmp.html", {'TAU': float(time.time()-t_start)})
SITEMAP_MAX_ITEM = 40000 # максимальное число URL-ов в sitemap.xml -- 50000
SITEMAP_MAX_FILE_SIZE = 5242880 # максимальный размер файла sitemap.xml -- 10Mb (10485760 байт)
SITEMAP_MAX_FILES_QTY = 998 # максимальный число вложенных sitemap.xml -- 1000
def str_time() -> str:
""" Возвращает текущее время в ISO 8601 со смещением от текущего часового пояса
"""
return django.utils.dateformat.format(django.utils.timezone.now(), 'c')
def make_site_maps (request: HttpRequest) -> HttpResponse:
"""Функция создания sitemap.xml ... периодически надо вызывать через crone
:param request: request
:return: HttpResponse ( msg )
"""
msg = ""
time_start = time.time()
count_total_item = 0
count_item_per_file = 0
count_file = 0
# форматирование даты-времени в ISO 8601 со смещением от текущего часового пояса
# str_time = django.utils.dateformat.format(django.utils.timezone.now(), 'c') # форматирование даты в ISO 8601
# ПОЛУЧАЕМ ВСЕ СТРАНИЧКИ С ЦЕНАМИ ДЛЯ ОДИНОЧНОГО ПРОЕМА
q1 = Win_MountDim.objects.raw("SELECT"
" oknardia_win_mountdim.iWinWidth,"
" oknardia_win_mountdim.iWinHight,"
" oknardia_win_mountdim.id,"
" COUNT(oknardia_priceoffer.kOffer2MountDim_id) AS NumOffer,"
" oknardia_win_mountdim.sFlapConfig "
"FROM oknardia_priceoffer"
" INNER JOIN oknardia_win_mountdim"
" ON oknardia_priceoffer.kOffer2MountDim_id = oknardia_win_mountdim.id "
"GROUP BY oknardia_win_mountdim.id,"
" oknardia_win_mountdim.iWinWidth,"
" oknardia_win_mountdim.iWinHight,"
" oknardia_win_mountdim.sFlapConfig "
"ORDER BY COUNT(oknardia_priceoffer.kOffer2MountDim_id);")
for i in q1:
msg += f"
{msg}\n\nвремя выполнения: {float(time.time()-time_start)} сек.")
def compare() -> list:
""" Возвращает список сравнения из всех возможных вариантов сравнения оконных наборов (из доступных в базе)
:return: список сравнения
"""
q_set_kit = SetKit.objects.raw('SELECT oknardia_setkit.id, oknardia_setkit.sSetActive '
'FROM oknardia_setkit '
'WHERE oknardia_setkit.sSetActive = TRUE')
count = 0
dim_comp = []
l_set_kit = list(q_set_kit)
for i1 in l_set_kit:
for i2 in l_set_kit:
if i1.id >= i2.id:
continue
dim_comp.append(f"{i1.id},{i2.id}")
count += 1
for i3 in l_set_kit:
if i2.id >= i3.id:
continue
dim_comp.append(f"{i1.id},{i2.id},{i3.id}")
count += 1
for i4 in l_set_kit:
if i3.id >= i4.id:
continue
dim_comp.append(f"{i1.id},{i2.id},{i3.id},{i4.id}")
count += 1
for i5 in l_set_kit:
if i4.id >= i5.id:
continue
dim_comp.append(f"{i1.id},{i2.id},{i3.id},{i4.id},{i5.id}")
count += 1
for i6 in l_set_kit:
if i5.id >= i6.id:
continue
dim_comp.append(f"{i1.id},{i2.id},{i3.id},{i4.id},{i5.id},{i6.id}")
count += 1
# random.shuffle(dim_comp)
# for i1 in dim_comp:
# print(i1)
# print(f"---------------{count}---------------")
return dim_comp