каталог -- главная страница
This commit is contained in:
28
oknardia/web/catalog.py
Normal file
28
oknardia/web/catalog.py
Normal file
@@ -0,0 +1,28 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from django.shortcuts import render
|
||||
from django.http import HttpRequest, HttpResponse
|
||||
from web.report1 import get_last_all_user_visit_list, get_last_user_visit_cookies, get_last_user_visit_list
|
||||
from time import time
|
||||
|
||||
|
||||
def catalog_root(request: HttpRequest) -> HttpResponse:
|
||||
""" Корневая страница каталога
|
||||
|
||||
ИДЕЯ: со временем нужно сделать функционал показа случайных картинок в каждый раздел (чтоб поисковики фигели)
|
||||
|
||||
:param request: HttpRequest -- входящий http-запрос
|
||||
:return response: HttpResponse -- исходящий http-ответ
|
||||
"""
|
||||
time_start = time()
|
||||
to_template = {} # словарь, для передачи шаблону
|
||||
template = "catalog/catalog_root.html" # шаблон
|
||||
# получаем из cookies последние визиты клиента
|
||||
last_visit = get_last_user_visit_cookies(request)
|
||||
to_template.update({'LAST_VISIT': get_last_user_visit_list(last_visit[:3])})
|
||||
# получаем последние визиты всех посетителей из базы
|
||||
# id2log, log_visit = get_last_all_user_visit_list()
|
||||
log_visit = get_last_all_user_visit_list()
|
||||
to_template.update({'LOG_VISIT': log_visit})
|
||||
to_template.update({'ticks': float(time() - time_start)})
|
||||
response = render(request, template, to_template)
|
||||
return response
|
||||
68
oknardia/web/report1.py
Normal file
68
oknardia/web/report1.py
Normal file
@@ -0,0 +1,68 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# from django.shortcuts import render, redirect
|
||||
from django.http import HttpRequest # , HttpResponse
|
||||
from django.utils.dateformat import format
|
||||
from oknardia.models import LogVisitPriceReport
|
||||
# from oknardia.settings import *
|
||||
# from web.add_func import normalize, get_rating_set_for_stars
|
||||
# from time import time
|
||||
import json
|
||||
import pytils
|
||||
|
||||
|
||||
def get_last_user_visit_cookies(request: HttpRequest) -> list:
|
||||
""" Служебная функция: проверяет есть ли куки о последних посещениях пользователя, и если есть возвращает их
|
||||
|
||||
:param request: HttpRequest -- входящий http-запрос
|
||||
:return LastVisit: json -- загруженный json-объект из куки LastVisit
|
||||
"""
|
||||
if "LastVisit" in request.COOKIES:
|
||||
try:
|
||||
return json.loads(request.COOKIES["LastVisit"])
|
||||
except (json.decoder.JSONDecodeError, TypeError, ValueError, KeyError, AttributeError):
|
||||
return []
|
||||
else:
|
||||
return []
|
||||
|
||||
|
||||
def get_last_user_visit_list(list_visit: list) -> list:
|
||||
""" Служебная функция: получает список с посещенных страниц с ценовой выдачей (ListVisit), меняет в нем даты
|
||||
на описание типа "три недели назад" и возвращает обратно.
|
||||
|
||||
:param list_visit:
|
||||
:return:
|
||||
"""
|
||||
result_list_visit = []
|
||||
for i in list_visit:
|
||||
result_list_visit.append({
|
||||
"Time": pytils.dt.distance_of_time_in_words(int(i["Time"])),
|
||||
"LastURL": i["LastURL"],
|
||||
"LastAddress": i["LastAddress"],
|
||||
"LastApart": i["LastApart"]
|
||||
})
|
||||
return result_list_visit
|
||||
|
||||
|
||||
# def get_last_all_user_visit_list() -> tuple:
|
||||
def get_last_all_user_visit_list() -> list:
|
||||
""" Служебная функция: получает список с посещенных страниц с ценовой выдачей для всех пользователей из DB
|
||||
|
||||
:return: list -- список четырех последних посещений ценовых предложений всеми пользователями
|
||||
"""
|
||||
list_visit = []
|
||||
id_fourth_visit = 0
|
||||
try:
|
||||
q_log_visit = LogVisitPriceReport.objects.all().order_by('-dLogVisitTime')[:4]
|
||||
for i in q_log_visit:
|
||||
if id_fourth_visit == 0:
|
||||
id_fourth_visit = i.id
|
||||
list_visit.append({
|
||||
"Time": pytils.dt.distance_of_time_in_words(int(format(i.dLogVisitTime, 'U'))),
|
||||
"LogURL": i.sLogURL,
|
||||
"LogAddress": i.sLogAddress,
|
||||
"LogApart": i.sLogNameApartment
|
||||
})
|
||||
except LogVisitPriceReport.DoesNotExist:
|
||||
pass
|
||||
# return id_fourth_visit+1, list_visit
|
||||
return list_visit
|
||||
Reference in New Issue
Block a user