mod: отключены внешние типографы
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
# Generated by Django 3.1.2 on 2020-10-05 06:52
|
||||
# Generated by Django 6.0.2 on 2026-02-17 22:08
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import taggit.managers
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
@@ -10,21 +10,21 @@ class Migration(migrations.Migration):
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('taggit', '0003_taggeditem_add_unique_index'),
|
||||
('taggit', '0006_rename_taggeditem_content_type_object_id_taggit_tagg_content_8fc721_idx'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='TbAuthor',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('szAuthor', models.CharField(db_index=True, default='', help_text='Автор и, если необходимо, краткая справка', max_length=128, unique=True, verbose_name='Автор')),
|
||||
('szAuthorHTML', models.TextField(default='', help_text='Автор и, если необходимо, краткая справка<br />Свертано в HTML по правилам типографики <small>(рекламные URL вставляются тут)</small>', null=True, verbose_name='Автор HTML')),
|
||||
('bIsChecked', models.BooleanField(db_index=True, default=True, help_text='Есть доступ для сканирования.', verbose_name='Проверен')),
|
||||
('iViewCounter', models.PositiveIntegerField(default=0, help_text='Число просмотров картинки.', verbose_name='Просмотры')),
|
||||
('szAuthorHTML', models.TextField(blank=True, default='', help_text='Автор и, если необходимо, краткая справка<br />Свертано в HTML по правилам типографики <small>(рекламные URL вставляются тут)</small>', verbose_name='Автор HTML')),
|
||||
('bTypograph', models.BooleanField(db_index=True, default=True, help_text='Применять типографику к этому автору?', verbose_name='Типографить')),
|
||||
('bIsChecked', models.BooleanField(db_index=True, default=True, help_text='Автор проверен.', verbose_name='Проверен')),
|
||||
('iViewCounter', models.PositiveIntegerField(default=0, help_text='Число просмотров Автора.', verbose_name='◉')),
|
||||
('dtCreated', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='Дата создания')),
|
||||
('dtEdited', models.DateTimeField(auto_now=True, db_index=True, verbose_name='Дата последнего редактирования')),
|
||||
('tags', taggit.managers.TaggableManager(help_text='Теги через запятую… Регистр не чувствителен… <b>Теги нужны для подстановки картинок и навигации<b>', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Теги')),
|
||||
('dtEdited', models.DateTimeField(auto_now=True, db_index=True, verbose_name='Дата редактирования')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'АВТОР',
|
||||
@@ -35,10 +35,10 @@ class Migration(migrations.Migration):
|
||||
migrations.CreateModel(
|
||||
name='TbOrigin',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('szOrigin', models.CharField(db_index=True, default='', help_text='Ссылка или указание источника: книга, URL, просто что-то…', max_length=256, unique=True, verbose_name='Источник')),
|
||||
('dtCreated', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='Дата создания')),
|
||||
('dtEdited', models.DateTimeField(auto_now=True, db_index=True, verbose_name='Дата последнего редактирования')),
|
||||
('dtEdited', models.DateTimeField(auto_now=True, db_index=True, verbose_name='Дата редактирования')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'ИСТОЧНИК',
|
||||
@@ -46,17 +46,39 @@ class Migration(migrations.Migration):
|
||||
'ordering': ['id'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='RuTaggedItem',
|
||||
fields=[
|
||||
],
|
||||
options={
|
||||
'proxy': True,
|
||||
'indexes': [],
|
||||
'constraints': [],
|
||||
},
|
||||
bases=('taggit.taggeditem',),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='RuTag',
|
||||
fields=[
|
||||
],
|
||||
options={
|
||||
'proxy': True,
|
||||
'indexes': [],
|
||||
'constraints': [],
|
||||
},
|
||||
bases=('taggit.tag',),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='TbImages',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('imFile', models.ImageField(db_index=True, default='', help_text='Файл с картинкой (gif, jpeg, png, bmp).', max_length=136, unique=True, upload_to='img2', verbose_name='Картинка')),
|
||||
('szCaption', models.CharField(db_index=True, default='', help_text='Название, подпись, описание что изображено…', max_length=128, unique=True, verbose_name='Название')),
|
||||
('bIsChecked', models.BooleanField(db_index=True, default=True, help_text='Есть доступ для сканирования.', verbose_name='Проверен')),
|
||||
('iViewCounter', models.PositiveIntegerField(default=0, help_text='Число просмотров картинки.', verbose_name='Просмотры')),
|
||||
('bIsChecked', models.BooleanField(db_index=True, default=True, help_text='Картинку проверили.', verbose_name='Проверен')),
|
||||
('iViewCounter', models.PositiveIntegerField(default=0, help_text='Число просмотров картинки.', verbose_name='◉')),
|
||||
('dtCreated', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='Дата создания')),
|
||||
('dtEdited', models.DateTimeField(auto_now=True, db_index=True, verbose_name='Дата последнего редактирования')),
|
||||
('tags', taggit.managers.TaggableManager(help_text='Теги через запятую… Регистр не чувствителен… <b>Теги нужны для подстановки картинок и навигации<b>', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Теги')),
|
||||
('dtEdited', models.DateTimeField(auto_now=True, db_index=True, verbose_name='Дата редактирования')),
|
||||
('tags', taggit.managers.TaggableManager(blank=True, help_text='Теги через запятую… Регистр не чувствителен… <b>Теги нужны для подстановки картинок и навигации<b>', through='web.RuTaggedItem', to='taggit.Tag', verbose_name='Теги')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'КАРТИНКА',
|
||||
@@ -67,19 +89,20 @@ class Migration(migrations.Migration):
|
||||
migrations.CreateModel(
|
||||
name='TbDictumAndQuotes',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('szIntro', models.CharField(default=None, help_text='Не обязательно. Вступление перед цитатой.', max_length=256, null=True, verbose_name='Вступление')),
|
||||
('szIntroHTML', models.TextField(default='', help_text='Автор и, если необходимо, краткая справка<br />Вступление перед цитатой, в HTML по правилам типографики</small>', verbose_name='Вступление HTML')),
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('szIntro', models.CharField(blank=True, default=None, help_text='Не обязательно. Вступление перед цитатой.', max_length=256, verbose_name='Вступление')),
|
||||
('szIntroHTML', models.TextField(blank=True, default='', help_text='Автор и, если необходимо, краткая справка<br />Вступление перед цитатой, в HTML по правилам типографики</small>', verbose_name='Вступление HTML')),
|
||||
('szContent', models.TextField(default='', help_text='Не обязательно. Вступление перед цитатой.', max_length=256, verbose_name='Высказывание')),
|
||||
('szContentHTML', models.TextField(default='', help_text='<b>Высказывание Крылатое</b> -- крылатое, пародоксальное и все такое', verbose_name='Высказывание HTML')),
|
||||
('imFileOG', models.ImageField(default='', help_text='Картинка для социальной сети <b>(будет создана автоматически)</b>.<br /><small>Файл с картинкой (png).<small>', max_length=136, upload_to='img2og', verbose_name='OG-image</b>')),
|
||||
('iViewCounter', models.PositiveIntegerField(db_index=True, default=0, help_text='Число сканирований хоста.', verbose_name='Просмотры')),
|
||||
('szContentHTML', models.TextField(blank=True, default='', help_text='Содержание цитаты, афоризма, высказывания…<br />Свертано в HTML по правилам типографики', verbose_name='Изречение HTML')),
|
||||
('bTypograph', models.BooleanField(db_index=True, default=True, help_text='Применять типографику?', verbose_name='Типографить')),
|
||||
('imFileOG', models.ImageField(blank=True, default='', help_text='Картинка для социальной сети <b>(будет создана автоматически)</b>.<br /><small>Файл с картинкой (png).<small>', max_length=136, upload_to='img2og', verbose_name='OG-image')),
|
||||
('iViewCounter', models.PositiveIntegerField(db_index=True, default=0, help_text='Число просмотров высказывания.', verbose_name='◉')),
|
||||
('dtCreated', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='Дата создания')),
|
||||
('dtEdited', models.DateTimeField(auto_now=True, db_index=True, verbose_name='Дата последнего редактирования')),
|
||||
('kAuthor', models.ForeignKey(default=None, help_text='Автор изречения или цитаты <b>(не обязательно, но желательно)</b>', null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='web.tbauthor', verbose_name='Автор')),
|
||||
('kImages', models.ForeignKey(default=None, help_text='Ссылка на картинку, в табличке картинок <b>(не обязательно)</b><br /><small>если нужна именно данная картинка, а не выбранная автоматически</small>', null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='web.tbimages', verbose_name='Картинка')),
|
||||
('kOrigin', models.ForeignKey(default=None, help_text='Откуда взята циатата, высказывание, изречение <b>(не обязательно, но желательно)</b>', null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='web.tborigin', verbose_name='Источник')),
|
||||
('tags', taggit.managers.TaggableManager(help_text='Теги через запятую… Регистр не чувствителен… <b>Теги нужны для подстановки картинок и навигации<b>', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Теги')),
|
||||
('dtEdited', models.DateTimeField(auto_now=True, db_index=True, verbose_name='Дата редактирования')),
|
||||
('kAuthor', models.ForeignKey(blank=True, default=None, help_text='Автор изречения или цитаты <b>(не обязательно, но желательно)</b>', null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='web.tbauthor', verbose_name='Автор')),
|
||||
('kImages', models.ForeignKey(blank=True, default=None, help_text='Ссылка на картинку, в табличке картинок <b>(не обязательно)</b><br /><small>если нужна именно данная картинка, а не выбранная автоматически</small>', null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='web.tbimages', verbose_name='Картинка')),
|
||||
('kOrigin', models.ForeignKey(blank=True, default=None, help_text='Откуда взята циатата, высказывание, изречение <b>(не обязательно, но желательно)</b>', null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='web.tborigin', verbose_name='Источник')),
|
||||
('tags', taggit.managers.TaggableManager(blank=True, help_text='Теги через запятую… Регистр не чувствителен… <b>Теги нужны для подстановки картинок и навигации<b>', through='web.RuTaggedItem', to='taggit.Tag', verbose_name='Теги')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'ВЫСКАЗЫВАНИЕ',
|
||||
@@ -87,4 +110,9 @@ class Migration(migrations.Migration):
|
||||
'ordering': ['id'],
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='tbauthor',
|
||||
name='tags',
|
||||
field=taggit.managers.TaggableManager(blank=True, help_text='Теги через запятую… Регистр не чувствителен… <b>Теги нужны для подстановки картинок и навигации<b>', through='web.RuTaggedItem', to='taggit.Tag', verbose_name='Теги'),
|
||||
),
|
||||
]
|
||||
|
||||
@@ -2,9 +2,13 @@
|
||||
from django.db import models
|
||||
from taggit.managers import TaggableManager
|
||||
from taggit.models import Tag, TaggedItem
|
||||
from typus import en_typus, ru_typus
|
||||
try:
|
||||
from typus import en_typus, ru_typus
|
||||
except ImportError:
|
||||
def en_typus(text): return text
|
||||
def ru_typus(text): return text
|
||||
from pathlib import Path
|
||||
import urllib3
|
||||
# import urllib3
|
||||
import json
|
||||
import pytils
|
||||
|
||||
@@ -190,6 +194,12 @@ class TbAuthor(models.Model):
|
||||
help_text=u"Автор и, если необходимо, краткая справка<br />"
|
||||
u"Свертано в HTML по правилам типографики <small>(рекламные URL вставляются тут)</small>"
|
||||
)
|
||||
bTypograph = models.BooleanField(
|
||||
default=True,
|
||||
db_index=True,
|
||||
verbose_name=u"Типографить",
|
||||
help_text=u"Применять типографику к этому автору?"
|
||||
)
|
||||
bIsChecked = models.BooleanField(
|
||||
default=True,
|
||||
db_index=True,
|
||||
@@ -295,13 +305,21 @@ class TbDictumAndQuotes(models.Model):
|
||||
szContentHTML = models.TextField(
|
||||
default="",
|
||||
blank=True,
|
||||
verbose_name=u"Высказывание HTML",
|
||||
help_text=u"<b>Высказывание Крылатое</b> -- крылатое, пародоксальное и все такое"
|
||||
verbose_name=u"Изречение HTML",
|
||||
help_text=u"Содержание цитаты, афоризма, высказывания…<br />"
|
||||
u"Свертано в HTML по правилам типографики"
|
||||
)
|
||||
bTypograph = models.BooleanField(
|
||||
default=True,
|
||||
db_index=True,
|
||||
verbose_name=u"Типографить",
|
||||
help_text=u"Применять типографику?"
|
||||
)
|
||||
kAuthor = models.ForeignKey(
|
||||
TbAuthor,
|
||||
default=None,
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=models.DO_NOTHING,
|
||||
verbose_name=u"Автор",
|
||||
help_text=u"Автор изречения или цитаты <b>(не обязательно, но желательно)</b>"
|
||||
@@ -310,6 +328,7 @@ class TbDictumAndQuotes(models.Model):
|
||||
TbOrigin,
|
||||
default=None,
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=models.DO_NOTHING,
|
||||
verbose_name=u"Источник",
|
||||
help_text=u"Откуда взята циатата, высказывание, изречение <b>(не обязательно, но желательно)</b>"
|
||||
@@ -318,6 +337,7 @@ class TbDictumAndQuotes(models.Model):
|
||||
TbImages,
|
||||
default=None,
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=models.DO_NOTHING,
|
||||
verbose_name=u"Картинка",
|
||||
help_text=u"Ссылка на картинку, в табличке картинок <b>(не обязательно)</b><br />"
|
||||
@@ -373,41 +393,41 @@ class TbDictumAndQuotes(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)
|
||||
if self.szIntro != "" and self.szIntro != ru_typus(self.szIntro):
|
||||
# сравнение self.szIntro != ru_typus(self.szIntro) нужно для избежания повторных обращений
|
||||
# к типографам при обновлении щетчиков просмотра
|
||||
self.szIntro = ru_typus(self.szIntro)
|
||||
resp = http.request("POST",
|
||||
"http://www.typograf.ru/webservice/",
|
||||
fields={"text": self.szIntro.replace("\u202f", " ").replace("\u2009", " ").encode('cp1251')})
|
||||
self.szIntroHTML = resp.data.decode('cp1251')
|
||||
# print(self.szIntroHTML)
|
||||
resp = http.request("POST",
|
||||
"http://mdash.ru/api.v1.php",
|
||||
fields={"text": self.szIntroHTML.encode('utf-8')})
|
||||
self.szIntroHTML = json.loads(resp.data)["result"]
|
||||
# print(self.szIntroHTML)
|
||||
else:
|
||||
self.szIntroHTML = ""
|
||||
if self.szContent != ru_typus(self.szContent):
|
||||
# self.szContent != ru_typus(self.szContent) нужно для избежания повторных обращений
|
||||
# к типографам при обновлении щетчиков просмотра
|
||||
self.szContent = ru_typus(self.szContent)
|
||||
resp = http.request("POST",
|
||||
"http://www.typograf.ru/webservice/",
|
||||
fields={"text": self.szContent.replace("\u202f", " ").replace("\u2009", " ").encode('cp1251')})
|
||||
self.szContentHTML = resp.data.decode('cp1251')
|
||||
print(self.szContentHTML)
|
||||
resp = http.request("POST",
|
||||
"http://mdash.ru/api.v1.php",
|
||||
fields={"text": self.szContentHTML.encode('utf-8')})
|
||||
self.szContentHTML = json.loads(resp.data)["result"]
|
||||
# if self.szIntro != "" and self.szIntro != ru_typus(self.szIntro):
|
||||
# # сравнение self.szIntro != ru_typus(self.szIntro) нужно для избежания повторных обращений
|
||||
# # к типографам при обновлении щетчиков просмотра
|
||||
# self.szIntro = ru_typus(self.szIntro)
|
||||
# resp = http.request("POST",
|
||||
# "http://www.typograf.ru/webservice/",
|
||||
# fields={"text": self.szIntro.replace("\u202f", " ").replace("\u2009", " ").encode('cp1251')})
|
||||
# self.szIntroHTML = resp.data.decode('cp1251')
|
||||
# # print(self.szIntroHTML)
|
||||
# resp = http.request("POST",
|
||||
# "http://mdash.ru/api.v1.php",
|
||||
# fields={"text": self.szIntroHTML.encode('utf-8')})
|
||||
# self.szIntroHTML = json.loads(resp.data)["result"]
|
||||
# # print(self.szIntroHTML)
|
||||
# else:
|
||||
# self.szIntroHTML = ""
|
||||
# if self.szContent != ru_typus(self.szContent):
|
||||
# # self.szContent != ru_typus(self.szContent) нужно для избежания повторных обращений
|
||||
# # к типографам при обновлении щетчиков просмотра
|
||||
# self.szContent = ru_typus(self.szContent)
|
||||
# resp = http.request("POST",
|
||||
# "http://www.typograf.ru/webservice/",
|
||||
# fields={"text": self.szContent.replace("\u202f", " ").replace("\u2009", " ").encode('cp1251')})
|
||||
# self.szContentHTML = resp.data.decode('cp1251')
|
||||
# print(self.szContentHTML)
|
||||
# resp = http.request("POST",
|
||||
# "http://mdash.ru/api.v1.php",
|
||||
# fields={"text": self.szContentHTML.encode('utf-8')})
|
||||
# self.szContentHTML = json.loads(resp.data)["result"]
|
||||
# # print(self.szContentHTML)
|
||||
super(TbDictumAndQuotes, self).save(*args, **kwargs)
|
||||
|
||||
class Meta:
|
||||
|
||||
Reference in New Issue
Block a user