models, admin and migrations
This commit is contained in:
@@ -1,3 +1,53 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
from django.db import models
|
||||||
|
from django.forms import TextInput, Textarea
|
||||||
|
from web.models import TbContent
|
||||||
|
from web.add_function import safe_html_special_symbols
|
||||||
|
|
||||||
|
|
||||||
# Register your models here.
|
# Register your models here.
|
||||||
|
class AdminContent(admin.ModelAdmin):
|
||||||
|
search_fields = ['szContentHead', 'szContentIntro', 'szContentBody',
|
||||||
|
'szContentKeywords', 'szContentDescription']
|
||||||
|
list_display = ('id', 'ContentHeadSafe', 'tag_list', 'bContentPublish', 'tdContentPublishUp')
|
||||||
|
list_display_links = ('id', 'ContentHeadSafe')
|
||||||
|
list_filter = ('bContentPublish', )
|
||||||
|
list_editable = ('bContentPublish', )
|
||||||
|
# настройка длины поля TextInput в админке
|
||||||
|
formfield_overrides = {
|
||||||
|
models.CharField: {'widget': TextInput(attrs={'size': '100%'})},
|
||||||
|
# models.TextField: {'widget': Textarea(attrs={'rows': 4, 'cols': 40})},
|
||||||
|
}
|
||||||
|
# Настройка страницы редактирования
|
||||||
|
fieldsets = [
|
||||||
|
(None, {
|
||||||
|
'fields': ('bContentPublish', 'tdContentPublishUp', 'tdContentPublishDown', 'tags',
|
||||||
|
'szContentHead', 'imgContentPreview', 'szContentIntro',
|
||||||
|
'szContentBody')
|
||||||
|
}),
|
||||||
|
('Типограф', {
|
||||||
|
'fields': ('bTypograf', ),
|
||||||
|
'classes': ('collapse',),
|
||||||
|
}),
|
||||||
|
('Поля для SEO', {
|
||||||
|
'fields': ('szContentSlug', 'szContentKeywords', 'szContentDescription', 'iContentHits'),
|
||||||
|
'classes': ('collapse', ),
|
||||||
|
}),
|
||||||
|
]
|
||||||
|
# exclude = ('', '', )
|
||||||
|
empty_value_display = u"<b style='color:red;'>—//—</b>"
|
||||||
|
actions_on_top = False
|
||||||
|
actions_on_bottom = False
|
||||||
|
|
||||||
|
def ContentHeadSafe(self, obj) -> str:
|
||||||
|
return safe_html_special_symbols(obj.szContentHead)
|
||||||
|
|
||||||
|
def get_queryset(self, request):
|
||||||
|
return super().get_queryset(request).prefetch_related('tags')
|
||||||
|
|
||||||
|
def tag_list(self, obj):
|
||||||
|
return u", ".join(o.name for o in obj.tags.all())
|
||||||
|
|
||||||
|
|
||||||
|
admin.site.register(TbContent, AdminContent)
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 3.2.5 on 2021-08-04 16:15
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('web', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='tbcontent',
|
||||||
|
name='tdContentPublishDown',
|
||||||
|
field=models.DateTimeField(db_index=True, default=0, help_text='Дата окончания публикации, с её момента новость исчезнет с сайта.', null=True, verbose_name='Окончания публикации'),
|
||||||
|
),
|
||||||
|
]
|
||||||
23
cadpoint/web/migrations/0003_auto_20210804_1933.py
Normal file
23
cadpoint/web/migrations/0003_auto_20210804_1933.py
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# Generated by Django 3.2.5 on 2021-08-04 16:33
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('web', '0002_alter_tbcontent_tdcontentpublishdown'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='tbcontent',
|
||||||
|
name='bTypograf',
|
||||||
|
field=models.BooleanField(default=False, help_text='Обработать через <a href="https://www.typograf.ru" target="_blank">Типограф 2.0</a><br /><small><b>НОРМАЛЬНЫЙ ТИПОГРАФ, ХОРОШИЙ HTML, РЕКОМЕНДУЕМ</b> «приклеивает» союзы, поддерживает неразрывные конструкции, замена тире, кавычек и дефисов, расстановка «мягких переносов» в словах длиннее 12 символов, убирает «вдовы» «сироты» (кроме заголовков), расставляет абзацы (кроме заголовков), расшифровывает аббревиатуры (те, что знает и кроме заголовков), висячая пунктуация (только в заголовках) и т.п.</small>', verbose_name='Типограф Стандарт'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='tbcontent',
|
||||||
|
name='tdContentPublishDown',
|
||||||
|
field=models.DateTimeField(blank=True, db_index=True, help_text='Дата окончания публикации, с её момента новость исчезнет с сайта.', null=True, verbose_name='Окончания публикации'),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -68,7 +68,7 @@ class TbContent(models.Model):
|
|||||||
help_text=u"Дата публикации, с её момента новость появится на сайте."
|
help_text=u"Дата публикации, с её момента новость появится на сайте."
|
||||||
)
|
)
|
||||||
tdContentPublishDown = models.DateTimeField(
|
tdContentPublishDown = models.DateTimeField(
|
||||||
db_index=True, default=0, # datetime.datetime(0, 0, 0, 0, 0, 0, 0),
|
db_index=True, null=True, blank=True, # default=datetime.datetime(2035, 12, 31, 23, 59, 59, 0), # default=0,
|
||||||
verbose_name="Окончания публикации",
|
verbose_name="Окончания публикации",
|
||||||
help_text=u"Дата окончания публикации, с её момента новость исчезнет с сайта."
|
help_text=u"Дата окончания публикации, с её момента новость исчезнет с сайта."
|
||||||
)
|
)
|
||||||
@@ -121,12 +121,12 @@ class TbContent(models.Model):
|
|||||||
verbose_name="Типограф Стандарт",
|
verbose_name="Типограф Стандарт",
|
||||||
help_text="Обработать через <a href=\"https://www.typograf.ru\""
|
help_text="Обработать через <a href=\"https://www.typograf.ru\""
|
||||||
" target=\"_blank\">Типограф 2.0</a><br />"
|
" target=\"_blank\">Типограф 2.0</a><br />"
|
||||||
"<small><b>НОРМАЛЬНЫЙ ТИПОГРАФ, ХОРОШИЙ HTML, РЕКОМЕНДУЕМ</b><br />"
|
"<small><b>НОРМАЛЬНЫЙ ТИПОГРАФ, ХОРОШИЙ HTML, РЕКОМЕНДУЕМ</b> "
|
||||||
"«приклеивает» союзы, поддерживает неразрывные конструкции,<br />"
|
"«приклеивает» союзы, поддерживает неразрывные конструкции, "
|
||||||
"замена тире, кавычек и дефисов, расстановка «мягких переносов»<br />"
|
"замена тире, кавычек и дефисов, расстановка «мягких переносов» "
|
||||||
"в словах длиннее 12 символов, убирает «вдовы» «сироты» (кроме<br />"
|
"в словах длиннее 12 символов, убирает «вдовы» «сироты» (кроме "
|
||||||
"заголовков), расставляет абзацы (кроме заголовков), расшифро-<br />"
|
"заголовков), расставляет абзацы (кроме заголовков), расшифровывает "
|
||||||
"вывает аббревиатуры (те, что знает и кроме заголовков), висячая<br />"
|
"аббревиатуры (те, что знает и кроме заголовков), висячая "
|
||||||
"пунктуация (только в заголовках) и т.п.</small>"
|
"пунктуация (только в заголовках) и т.п.</small>"
|
||||||
)
|
)
|
||||||
szContentKeywords = models.CharField(
|
szContentKeywords = models.CharField(
|
||||||
@@ -219,6 +219,7 @@ class TbContent(models.Model):
|
|||||||
' <link target="_blank" />'
|
' <link target="_blank" />'
|
||||||
'</preferences>'.encode('cp1251')})
|
'</preferences>'.encode('cp1251')})
|
||||||
self.szContentBody = resp.data.decode('cp1251')
|
self.szContentBody = resp.data.decode('cp1251')
|
||||||
|
self.bTypograf = False
|
||||||
except:
|
except:
|
||||||
self.bTypograf = False
|
self.bTypograf = False
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user