# -*- 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())[:120]}) 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('?').first() tagged_image = TbImages.objects.filter(tags__name__in=tags) random.shuffle(list(tagged_image)) to_template.update({'IMAGE': tagged_image[0].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() dq_next = TbDictumAndQuotes.objects.exclude(id=dq.id) random.shuffle(list(dq_next)) to_template.update({"NEXT": dq_next[0].id}) to_template.update({"NEXT_TXT": pytils.translit.slugify(dq_next[0].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 if request.GET.get('tag'): dq = dq_.filter(kAuthor__tags__slug__in=[request.GET['tag']]).order_by('?').first() if dq is None: dq = dq_.filter(tags__slug__in=[request.GET['tag']]).order_by('?').first() if dq is None: dq = dq_.order_by('?').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 def sitemap(request): template = "sitemap.xml" # шаблон to_template = [] dq = TbDictumAndQuotes.objects.order_by('id').all() for i in dq: to_template.append({"ID": i.id, "SLUG": pytils.translit.slugify(i.szContent.lower()[:120])}) response = render(request, template, {"DATA": to_template}) return response