Merge remote-tracking branch 'origin/main'

This commit is contained in:
2023-09-22 17:11:53 +03:00
6 changed files with 309 additions and 81 deletions

View File

@@ -0,0 +1,104 @@
# Generated by Django 4.2.2 on 2023-09-22 13:29
import ckeditor_uploader.fields
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('ArticlesApp', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='articlemodel',
name='description',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание'),
),
migrations.AlterField(
model_name='articlemodel',
name='description_en',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание'),
),
migrations.AlterField(
model_name='articlemodel',
name='description_ru',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание'),
),
migrations.AlterField(
model_name='articlemodel',
name='seo_text',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Текст SEO статьи'),
),
migrations.AlterField(
model_name='articlemodel',
name='seo_text_en',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Текст SEO статьи'),
),
migrations.AlterField(
model_name='articlemodel',
name='seo_text_ru',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Текст SEO статьи'),
),
migrations.AlterField(
model_name='articlemodel',
name='text',
field=ckeditor_uploader.fields.RichTextUploadingField(verbose_name='Текст'),
),
migrations.AlterField(
model_name='articlemodel',
name='text_en',
field=ckeditor_uploader.fields.RichTextUploadingField(null=True, verbose_name='Текст'),
),
migrations.AlterField(
model_name='articlemodel',
name='text_ru',
field=ckeditor_uploader.fields.RichTextUploadingField(null=True, verbose_name='Текст'),
),
migrations.AlterField(
model_name='userpagemodel',
name='description',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание'),
),
migrations.AlterField(
model_name='userpagemodel',
name='description_en',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание'),
),
migrations.AlterField(
model_name='userpagemodel',
name='description_ru',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание'),
),
migrations.AlterField(
model_name='userpagemodel',
name='seo_text',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Текст SEO статьи'),
),
migrations.AlterField(
model_name='userpagemodel',
name='seo_text_en',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Текст SEO статьи'),
),
migrations.AlterField(
model_name='userpagemodel',
name='seo_text_ru',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Текст SEO статьи'),
),
migrations.AlterField(
model_name='userpagemodel',
name='text',
field=ckeditor_uploader.fields.RichTextUploadingField(verbose_name='Текст'),
),
migrations.AlterField(
model_name='userpagemodel',
name='text_en',
field=ckeditor_uploader.fields.RichTextUploadingField(null=True, verbose_name='Текст'),
),
migrations.AlterField(
model_name='userpagemodel',
name='text_ru',
field=ckeditor_uploader.fields.RichTextUploadingField(null=True, verbose_name='Текст'),
),
]

View File

@@ -5,7 +5,8 @@ __author__ = 'sync'
from django.db import models
from BaseModels.base_models import BaseModelViewPage, BaseModel
from ckeditor.fields import RichTextField
# from ckeditor.fields import RichTextField
from ckeditor_uploader.fields import RichTextUploadingField
from django.utils.translation import gettext_lazy as _
@@ -18,7 +19,7 @@ from django.utils.translation import gettext_lazy as _
class UserPageModel(BaseModelViewPage):
# pub_DT = models.DateTimeField(verbose_name=u'Дата и время публикации', auto_created=True)
text = RichTextField(verbose_name=u'Текст')
text = RichTextUploadingField(verbose_name=u'Текст')
class Meta:
verbose_name=u'Пользовательская страница'
@@ -30,8 +31,8 @@ class UserPageModel(BaseModelViewPage):
class ArticleModel(BaseModelViewPage):
# pub_DT = models.DateTimeField(verbose_name=u'Дата и время публикации', auto_created=True)
text = RichTextField(verbose_name=u'Текст')
text = RichTextUploadingField(verbose_name=u'Текст')
class Meta:
verbose_name=u'Статья'
verbose_name_plural =u'Статьи'
verbose_name='Статья'
verbose_name_plural ='Статьи'

View File

@@ -10,7 +10,8 @@ from django.utils.translation import gettext_lazy as _
from django.db.models.signals import post_save, pre_save
from django.utils.text import slugify
from django.contrib.postgres.fields import JSONField
from ckeditor.fields import RichTextField
# from ckeditor.fields import RichTextField
from ckeditor_uploader.fields import RichTextUploadingField
from django.contrib.contenttypes.fields import GenericRelation
@@ -86,9 +87,9 @@ class BaseModelViewPage(BaseModel):
help_text=_(
'можно изменить адрес страницы (!!! ВНИМАНИЕ !!! поисковые системы потеряют страницу и найдут лишь спустя неделю...месяц)'))
title = models.TextField(verbose_name=_('Заголовок'), null=True, blank=True)
description = RichTextField(verbose_name=_('Краткое описание'), null=True, blank=True, # max_length=240,
description = RichTextUploadingField(verbose_name=_('Краткое описание'), null=True, blank=True, # max_length=240,
help_text=_('краткое описание страницы (до 240 символов)'))
text = RichTextField(verbose_name=_('Полное описание'), null=True, blank=True, )
text = RichTextUploadingField(verbose_name=_('Полное описание'), null=True, blank=True, )
# help_text=_(u'краткое описание страницы (до 240 символов)'))
picture = models.ImageField(upload_to='uploads/', verbose_name=_('Картинка'), null=True, blank=True,
help_text=u'')
@@ -102,7 +103,7 @@ class BaseModelViewPage(BaseModel):
seo_description = models.CharField(max_length=250, verbose_name=_('Description (150 знаков)'), null=True,
blank=True)
seo_keywords = models.CharField(max_length=250, verbose_name=_('Keywords (200 знаков)'), null=True, blank=True)
seo_text = RichTextField(verbose_name=_(u'Текст SEO статьи'), null=True, blank=True)
seo_text = RichTextUploadingField(verbose_name=_(u'Текст SEO статьи'), null=True, blank=True)
FAQ_title = models.CharField(max_length=250, verbose_name=_(u'FAQ Заголовок'), null=True, blank=True)
FAQ_items = GenericRelation('GeneralApp.FAQitem', related_query_name='grel_%(class)s_for_faq_item')

View File

@@ -0,0 +1,109 @@
# Generated by Django 4.2.2 on 2023-09-22 13:29
import ckeditor_uploader.fields
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('GeneralApp', '0003_staticpage_seo_description_en_and_more'),
]
operations = [
migrations.AlterField(
model_name='block',
name='description',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание'),
),
migrations.AlterField(
model_name='block',
name='description_en',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание'),
),
migrations.AlterField(
model_name='block',
name='description_ru',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание'),
),
migrations.AlterField(
model_name='block',
name='seo_text',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Текст SEO статьи'),
),
migrations.AlterField(
model_name='block',
name='text',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Полное описание'),
),
migrations.AlterField(
model_name='block',
name='text_en',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Полное описание'),
),
migrations.AlterField(
model_name='block',
name='text_ru',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Полное описание'),
),
migrations.AlterField(
model_name='faqitem',
name='answer',
field=ckeditor_uploader.fields.RichTextUploadingField(verbose_name='Ответ'),
),
migrations.AlterField(
model_name='faqitem',
name='answer_en',
field=ckeditor_uploader.fields.RichTextUploadingField(null=True, verbose_name='Ответ'),
),
migrations.AlterField(
model_name='faqitem',
name='answer_ru',
field=ckeditor_uploader.fields.RichTextUploadingField(null=True, verbose_name='Ответ'),
),
migrations.AlterField(
model_name='staticpage',
name='description',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание'),
),
migrations.AlterField(
model_name='staticpage',
name='description_en',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание'),
),
migrations.AlterField(
model_name='staticpage',
name='description_ru',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание'),
),
migrations.AlterField(
model_name='staticpage',
name='seo_text',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Текст SEO статьи'),
),
migrations.AlterField(
model_name='staticpage',
name='seo_text_en',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Текст SEO статьи'),
),
migrations.AlterField(
model_name='staticpage',
name='seo_text_ru',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Текст SEO статьи'),
),
migrations.AlterField(
model_name='staticpage',
name='text',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Полное описание'),
),
migrations.AlterField(
model_name='staticpage',
name='text_en',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Полное описание'),
),
migrations.AlterField(
model_name='staticpage',
name='text_ru',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Полное описание'),
),
]

View File

@@ -1,7 +1,8 @@
from django.db import models
from BaseModels.base_models import BaseModelViewPage, BaseModel
from django.utils.translation import gettext_lazy as _
from ckeditor.fields import RichTextField
# from ckeditor.fields import RichTextField
from ckeditor_uploader.fields import RichTextUploadingField
class StaticPage(BaseModelViewPage):
promo_header = models.BooleanField(verbose_name='Промо-хэдер', default=False)
@@ -36,7 +37,7 @@ class FAQitem(BaseModel):
content_object = GenericForeignKey('content_type', 'object_id')
question = models.TextField(verbose_name='Вопрос')
answer = RichTextField(verbose_name='Ответ')
answer = RichTextUploadingField(verbose_name='Ответ')
def __str__(self):
if self.question:

View File

@@ -211,6 +211,9 @@ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
CKEDITOR_BASEPATH = "/static/ckeditor/ckeditor/"
CKEDITOR_UPLOAD_PATH = "uploads/"
CKEDITOR_RESTRICT_BY_DATE = False
CKEDITOR_RESTRICT_BY_USER = True
CKEDITOR_BROWSE_SHOW_DIRS = True
CKEDITOR_IMAGE_BACKEND = "pillow"
@@ -222,10 +225,19 @@ CKEDITOR_CONFIGS = {
'default': {
'height': 291,
'width': '70vw',
# 'filebrowserWindowHeight': 600,
# 'filebrowserWindowWidth': "100%",
'filebrowserWindowHeight': 600,
'filebrowserWindowWidth': "100%",
'toolbar': 'Custom',
'forcePasteAsPlainText': True,
'allowedContent': True,
# 'disallowedContent': 'img{width,height};img[width,height]',
# 'extraPlugins': 'image2',
'enterMode': 2,
'basicEntities' : False,
'entities_additional': '',
'entities' : False,
'htmlEncodeOutput' : False,
# 'toolbar_Custom': [
# ['Bold', 'Italic', 'Underline'],
# ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'],
@@ -254,74 +266,74 @@ CKEDITOR_CONFIGS = {
}
CKEDITOR_OPTIONS = {
'height': 291,
'width': '95%',
'filebrowserWindowHeight': 600,
'filebrowserWindowWidth': "100%",
'toolbar': 'YourCustomToolbarConfig',
'allowedContent': True,
'enterMode': 2,
'basicEntities' : False,
'entities_additional': '',
'entities' : False,
'htmlEncodeOutput' : False,
'toolbar_Basic': [
['Source', '-', 'Bold', 'Italic']
],
'toolbar_YourCustomToolbarConfig': [
{'name': 'document', 'items': ['Source', '-', 'Save', 'NewPage', 'Preview', 'Print', '-', 'Templates']},
{'name': 'clipboard', 'items': ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo']},
{'name': 'editing', 'items': ['Find', 'Replace', '-', 'SelectAll']},
{'name': 'forms',
'items': ['Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton',
'HiddenField']},
'/',
{'name': 'basicstyles',
'items': ['Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'RemoveFormat']},
{'name': 'paragraph',
'items': ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote', 'CreateDiv', '-',
'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock', '-', 'BidiLtr', 'BidiRtl',
'Language']},
{'name': 'links', 'items': ['Link', 'Unlink', 'Anchor']},
{'name': 'insert',
'items': ['Image', 'Flash', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak', 'Iframe']},
'/',
{'name': 'styles', 'items': ['FontSize']},
{'name': 'colors', 'items': ['TextColor', 'BGColor']},
{'name': 'tools', 'items': ['Maximize', 'ShowBlocks']},
# {'name': 'about', 'items': ['About']},
'/', # put this to force next toolbar on new line
# {'name': 'yourcustomtools', 'items': [
# # put the name of your editor.ui.addButton here
# 'Preview',
# 'Maximize',
#
# ]},
],
'tabSpaces': 4,
'removePlugins': 'stylesheetparser',
# 'extraPlugins': ','.join([
# 'uploadimage', # the upload image feature
# # your extra plugins here
# 'div',
# 'autolink',
# 'autoembed',
# 'embedsemantic',
# 'autogrow',
# # 'devtools',
# 'widget',
# 'lineutils',
# 'clipboard',
# 'dialog',
# 'dialogui',
# 'elementspath'
# ]),
}
# CKEDITOR_OPTIONS = {
# 'height': 291,
# 'width': '95%',
# 'filebrowserWindowHeight': 600,
# 'filebrowserWindowWidth': "100%",
# 'toolbar': 'YourCustomToolbarConfig',
#
# 'allowedContent': True,
#
# 'enterMode': 2,
# 'basicEntities' : False,
# 'entities_additional': '',
# 'entities' : False,
# 'htmlEncodeOutput' : False,
# 'toolbar_Basic': [
# ['Source', '-', 'Bold', 'Italic']
# ],
# 'toolbar_YourCustomToolbarConfig': [
# {'name': 'document', 'items': ['Source', '-', 'Save', 'NewPage', 'Preview', 'Print', '-', 'Templates']},
# {'name': 'clipboard', 'items': ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo']},
# {'name': 'editing', 'items': ['Find', 'Replace', '-', 'SelectAll']},
# {'name': 'forms',
# 'items': ['Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton',
# 'HiddenField']},
# '/',
# {'name': 'basicstyles',
# 'items': ['Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'RemoveFormat']},
# {'name': 'paragraph',
# 'items': ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote', 'CreateDiv', '-',
# 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock', '-', 'BidiLtr', 'BidiRtl',
# 'Language']},
# {'name': 'links', 'items': ['Link', 'Unlink', 'Anchor']},
# {'name': 'insert',
# 'items': ['Image', 'Flash', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak', 'Iframe']},
# '/',
# {'name': 'styles', 'items': ['FontSize']},
# {'name': 'colors', 'items': ['TextColor', 'BGColor']},
# {'name': 'tools', 'items': ['Maximize', 'ShowBlocks']},
# # {'name': 'about', 'items': ['About']},
# '/', # put this to force next toolbar on new line
# # {'name': 'yourcustomtools', 'items': [
# # # put the name of your editor.ui.addButton here
# # 'Preview',
# # 'Maximize',
# #
# # ]},
# ],
#
# 'tabSpaces': 4,
# 'removePlugins': 'stylesheetparser',
# # 'extraPlugins': ','.join([
# # 'uploadimage', # the upload image feature
# # # your extra plugins here
# # 'div',
# # 'autolink',
# # 'autoembed',
# # 'embedsemantic',
# # 'autogrow',
# # # 'devtools',
# # 'widget',
# # 'lineutils',
# # 'clipboard',
# # 'dialog',
# # 'dialogui',
# # 'elementspath'
# # ]),
#
# }
try: