mod: современный способ создания sitemap.xml

This commit is contained in:
2026-02-18 16:00:52 +03:00
parent 33fa2d04a9
commit 65feb36f77
7 changed files with 68 additions and 29 deletions

View File

@@ -0,0 +1,18 @@
# Generated by Django 6.0.2 on 2026-02-18 12:21
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('web', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='tbdictumandquotes',
name='bIsChecked',
field=models.BooleanField(db_index=True, default=True, help_text='Цитата проверена.', verbose_name='Проверен'),
),
]

View File

@@ -243,22 +243,22 @@ class TbAuthor(models.Model):
return self.__str__()
def save(self, *args, **kwargs):
http = urllib3.PoolManager()
# http = urllib3.PoolManager()
# последовательно
# Используем типограф typus (https://github.com/byashimov/typus)
# Используем типограф Eugene Spearance (http://www.typograf.ru/)
# Используем типограф Муравьева (http://mdash.ru/api.v1.php)
self.szAuthor = ru_typus(self.szAuthor)
resp = http.request("POST",
"http://www.typograf.ru/webservice/",
fields={"text": self.szAuthor.encode('cp1251')})
self.szAuthorHTML = resp.data.decode('cp1251')
# print(self.szContentHTML)
resp = http.request("POST",
"http://mdash.ru/api.v1.php",
fields={"text": self.szAuthorHTML.encode('utf-8')})
self.szAuthorHTML = json.loads(resp.data)["result"]
# print(self.szContentHTML)
# resp = http.request("POST",
# "http://www.typograf.ru/webservice/",
# fields={"text": self.szAuthor.encode('cp1251')})
# self.szAuthorHTML = resp.data.decode('cp1251')
# # print(self.szContentHTML)
# resp = http.request("POST",
# "http://mdash.ru/api.v1.php",
# fields={"text": self.szAuthorHTML.encode('utf-8')})
# self.szAuthorHTML = json.loads(resp.data)["result"]
# # print(self.szContentHTML)
super(TbAuthor, self).save(*args, **kwargs)
class Meta:
@@ -315,6 +315,12 @@ class TbDictumAndQuotes(models.Model):
verbose_name=u"Типографить",
help_text=u"Применять типографику?"
)
bIsChecked = models.BooleanField(
default=True,
db_index=True,
verbose_name=u"Проверен",
help_text=u"Цитата проверена."
)
kAuthor = models.ForeignKey(
TbAuthor,
default=None,

20
dicquo/web/sitemaps.py Normal file
View File

@@ -0,0 +1,20 @@
from django.contrib.sitemaps import Sitemap
from web.models import TbDictumAndQuotes
import pytils
class DictumSitemap(Sitemap):
changefreq = "weekly" # Как часто меняются страницы
priority = 0.9 # Приоритет (от 0.0 до 1.0)
def items(self):
# Only show checked items in sitemap
return TbDictumAndQuotes.objects.filter(bIsChecked=True).order_by('-id')
def lastmod(self, obj):
return obj.dtEdited
def location(self, obj):
# Generates URL in format: /123_slug
slug = pytils.translit.slugify(obj.szContent.lower())[:120]
return f"/{obj.id}_{slug}"

View File

@@ -1,9 +1,9 @@
# -*- coding: utf-8 -*-
__author__ = "Sergei Erjemin"
__copyright__ = "Copyright 2020, Sergei Erjemin"
__copyright__ = "Copyright 2020-2026, Sergei Erjemin"
__credits__ = ["Sergei Erjemin", ]
__license__ = "GPL"
__version__ = "0.0.1"
__version__ = "0.3.9"
__maintainer__ = "Sergei Erjemin"
__email__ = "erjemin@gmail.com"
__status__ = "in progress"
@@ -92,13 +92,3 @@ def index(request):
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