From 6114f40e44190ce819f2b3566ace24d1c6d7dfed Mon Sep 17 00:00:00 2001 From: erjemin Date: Wed, 4 Aug 2021 19:47:46 +0300 Subject: [PATCH] models, admin and migrations --- cadpoint/web/admin.py | 50 +++++++++++++++++++ ...02_alter_tbcontent_tdcontentpublishdown.py | 18 +++++++ .../web/migrations/0003_auto_20210804_1933.py | 23 +++++++++ cadpoint/web/models.py | 15 +++--- 4 files changed, 99 insertions(+), 7 deletions(-) create mode 100644 cadpoint/web/migrations/0002_alter_tbcontent_tdcontentpublishdown.py create mode 100644 cadpoint/web/migrations/0003_auto_20210804_1933.py diff --git a/cadpoint/web/admin.py b/cadpoint/web/admin.py index 8c38f3f..ee8d986 100644 --- a/cadpoint/web/admin.py +++ b/cadpoint/web/admin.py @@ -1,3 +1,53 @@ +# -*- coding: utf-8 -*- 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. +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"—//—" + 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) diff --git a/cadpoint/web/migrations/0002_alter_tbcontent_tdcontentpublishdown.py b/cadpoint/web/migrations/0002_alter_tbcontent_tdcontentpublishdown.py new file mode 100644 index 0000000..7576d0a --- /dev/null +++ b/cadpoint/web/migrations/0002_alter_tbcontent_tdcontentpublishdown.py @@ -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='Окончания публикации'), + ), + ] diff --git a/cadpoint/web/migrations/0003_auto_20210804_1933.py b/cadpoint/web/migrations/0003_auto_20210804_1933.py new file mode 100644 index 0000000..b0662bb --- /dev/null +++ b/cadpoint/web/migrations/0003_auto_20210804_1933.py @@ -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='Обработать через Типограф 2.0
НОРМАЛЬНЫЙ ТИПОГРАФ, ХОРОШИЙ HTML, РЕКОМЕНДУЕМ «приклеивает» союзы, поддерживает неразрывные конструкции, замена тире, кавычек и дефисов, расстановка «мягких переносов» в словах длиннее 12 символов, убирает «вдовы» «сироты» (кроме заголовков), расставляет абзацы (кроме заголовков), расшифровывает аббревиатуры (те, что знает и кроме заголовков), висячая пунктуация (только в заголовках) и т.п.', verbose_name='Типограф Стандарт'), + ), + migrations.AlterField( + model_name='tbcontent', + name='tdContentPublishDown', + field=models.DateTimeField(blank=True, db_index=True, help_text='Дата окончания публикации, с её момента новость исчезнет с сайта.', null=True, verbose_name='Окончания публикации'), + ), + ] diff --git a/cadpoint/web/models.py b/cadpoint/web/models.py index 701a0a5..b794f7a 100644 --- a/cadpoint/web/models.py +++ b/cadpoint/web/models.py @@ -68,7 +68,7 @@ class TbContent(models.Model): help_text=u"Дата публикации, с её момента новость появится на сайте." ) 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="Окончания публикации", help_text=u"Дата окончания публикации, с её момента новость исчезнет с сайта." ) @@ -121,12 +121,12 @@ class TbContent(models.Model): verbose_name="Типограф Стандарт", help_text="Обработать через Типограф 2.0
" - "НОРМАЛЬНЫЙ ТИПОГРАФ, ХОРОШИЙ HTML, РЕКОМЕНДУЕМ
" - "«приклеивает» союзы, поддерживает неразрывные конструкции,
" - "замена тире, кавычек и дефисов, расстановка «мягких переносов»
" - "в словах длиннее 12 символов, убирает «вдовы» «сироты» (кроме
" - "заголовков), расставляет абзацы (кроме заголовков), расшифро-
" - "вывает аббревиатуры (те, что знает и кроме заголовков), висячая
" + "НОРМАЛЬНЫЙ ТИПОГРАФ, ХОРОШИЙ HTML, РЕКОМЕНДУЕМ " + "«приклеивает» союзы, поддерживает неразрывные конструкции, " + "замена тире, кавычек и дефисов, расстановка «мягких переносов» " + "в словах длиннее 12 символов, убирает «вдовы» «сироты» (кроме " + "заголовков), расставляет абзацы (кроме заголовков), расшифровывает " + "аббревиатуры (те, что знает и кроме заголовков), висячая " "пунктуация (только в заголовках) и т.п." ) szContentKeywords = models.CharField( @@ -219,6 +219,7 @@ class TbContent(models.Model): ' ' ''.encode('cp1251')}) self.szContentBody = resp.data.decode('cp1251') + self.bTypograf = False except: self.bTypograf = False