90 lines
3.4 KiB
Python
90 lines
3.4 KiB
Python
![]() |
# -*- coding: utf-8 -*-
|
|||
|
__author__ = "Sergei Erjemin"
|
|||
|
__copyright__ = "Copyright 2020, Sergei Erjemin"
|
|||
|
__credits__ = ["Sergei Erjemin", ]
|
|||
|
__license__ = "GPL"
|
|||
|
__version__ = "0.0.1"
|
|||
|
__maintainer__ = "Sergei Erjemin"
|
|||
|
__email__ = "erjemin@gmail.com"
|
|||
|
__status__ = "in progress"
|
|||
|
|
|||
|
from django.shortcuts import render
|
|||
|
from django.core.exceptions import ObjectDoesNotExist
|
|||
|
import time
|
|||
|
import hashlib
|
|||
|
import random
|
|||
|
import pytils
|
|||
|
from taggit.models import Tag
|
|||
|
from web.models import TbOrigin, TbDictumAndQuotes, TbImages, TbAuthor
|
|||
|
|
|||
|
|
|||
|
# Create your views here.
|
|||
|
def for_dq(dq):
|
|||
|
to_template = {}
|
|||
|
num = int(hashlib.blake2s(dq.szContent.encode("utf-8"), digest_size=1).hexdigest(), 16)
|
|||
|
clr = sorted([num / 2, num / 3, num / 5, num / 7, num / 11, num / 1.5], key=lambda A: random.random())
|
|||
|
to_template.update({'CLR': clr})
|
|||
|
to_template.update({'DQ': dq})
|
|||
|
try:
|
|||
|
au = TbAuthor.objects.get(id=dq.kAuthor_id)
|
|||
|
to_template.update({'AUTHOR': au})
|
|||
|
tags = au.tags.names()
|
|||
|
except ObjectDoesNotExist:
|
|||
|
tags = dq.tags.names()
|
|||
|
tag_and_slug = []
|
|||
|
for i in tags:
|
|||
|
tag_and_slug.append({"name": i, "slug": pytils.translit.slugify(i.lower())[:128]})
|
|||
|
to_template.update({'TAGS': sorted(tag_and_slug, key=lambda x: x["name"])}) # tag_and_slug
|
|||
|
if dq.kImages_id is None:
|
|||
|
if len(tags) != 0:
|
|||
|
try:
|
|||
|
tagged_image = TbImages.objects.filter(tags__name__in=tags).order_by('?')[0]
|
|||
|
to_template.update({'IMAGE': tagged_image.imFile})
|
|||
|
except IndexError:
|
|||
|
pass
|
|||
|
else:
|
|||
|
to_template.update({'IMAGE': dq.kImages.imFile})
|
|||
|
dq.iViewCounter += 1
|
|||
|
dq.save()
|
|||
|
dq_next = TbDictumAndQuotes.objects.exclude(id=dq.id).order_by('?').first()
|
|||
|
to_template.update({"NEXT": dq_next.id})
|
|||
|
to_template.update({"NEXT_TXT": pytils.translit.slugify(dq_next.szContent.lower()[:120])})
|
|||
|
return to_template
|
|||
|
|
|||
|
|
|||
|
def by_id( request, dq_id):
|
|||
|
t_start = time.process_time()
|
|||
|
template = "index.html" # шаблон
|
|||
|
dq = TbDictumAndQuotes.objects.get(id=dq_id)
|
|||
|
to_template = for_dq(dq)
|
|||
|
# пероверка, что посетитель согласился со сбором даных через cookies
|
|||
|
if request.COOKIES.get('cookie_accept'):
|
|||
|
to_template.update({'cookie_accept': 1})
|
|||
|
to_template.update({'ticks': float(time.process_time() - t_start)})
|
|||
|
response = render(request, template, to_template)
|
|||
|
return response
|
|||
|
|
|||
|
|
|||
|
def index(request):
|
|||
|
t_start = time.process_time()
|
|||
|
# проверка на аутентификацию
|
|||
|
# if not request.user.is_authenticated():
|
|||
|
# return HttpResponseRedirect("/access")
|
|||
|
template = "index.html" # шаблон
|
|||
|
dq_ = TbDictumAndQuotes.objects.order_by('?')
|
|||
|
if request.GET.get('tag'):
|
|||
|
dq = dq_.filter(kAuthor__tags__slug__in=[request.GET['tag']]).first()
|
|||
|
if dq is None:
|
|||
|
dq = dq_.filter(tags__slug__in=[request.GET['tag']]).first()
|
|||
|
if dq is None:
|
|||
|
dq = dq_.first()
|
|||
|
else:
|
|||
|
dq = dq_.first()
|
|||
|
to_template = for_dq(dq)
|
|||
|
# пероверка, что посетитель согласился со сбором даных через cookies
|
|||
|
if request.COOKIES.get('cookie_accept'):
|
|||
|
to_template.update({'cookie_accept': 1})
|
|||
|
to_template.update({'ticks': float(time.process_time() - t_start)})
|
|||
|
response = render(request, template, to_template)
|
|||
|
return response
|