From 1b41ae9f566cfbfaf42cb586a25bbebacb9fe642 Mon Sep 17 00:00:00 2001 From: SDE Date: Sun, 26 Nov 2023 16:29:31 +0300 Subject: [PATCH] 0.0.7 Services --- ...7_alter_widgetforblock_options_and_more.py | 30 +++++ ServicesApp/migrations/0001_initial.py | 106 ++++++++++++++++++ ServicesApp/translation.py | 18 +++ 3 files changed, 154 insertions(+) create mode 100644 GeneralApp/migrations/0007_alter_widgetforblock_options_and_more.py create mode 100644 ServicesApp/migrations/0001_initial.py create mode 100644 ServicesApp/translation.py diff --git a/GeneralApp/migrations/0007_alter_widgetforblock_options_and_more.py b/GeneralApp/migrations/0007_alter_widgetforblock_options_and_more.py new file mode 100644 index 0000000..3ddcc91 --- /dev/null +++ b/GeneralApp/migrations/0007_alter_widgetforblock_options_and_more.py @@ -0,0 +1,30 @@ +# Generated by Django 4.2.7 on 2023-11-26 16:29 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('GeneralApp', '0006_block_block_type_en_block_block_type_ru_and_more'), + ] + + operations = [ + migrations.AlterModelOptions( + name='widgetforblock', + options={'verbose_name': 'Виджет в блоке', 'verbose_name_plural': 'Виджеты в блоке'}, + ), + migrations.RemoveField( + model_name='block', + name='block_type_en', + ), + migrations.RemoveField( + model_name='block', + name='block_type_ru', + ), + migrations.AlterField( + model_name='block', + name='block_type', + field=models.CharField(choices=[('photo_n_text', 'Фото + текст'), ('photo150_n_title', 'Фото 150x150 + заголовок'), ('slider', 'Галерея слайдов')], default='photo_n_text', max_length=100, verbose_name='Тип блока'), + ), + ] diff --git a/ServicesApp/migrations/0001_initial.py b/ServicesApp/migrations/0001_initial.py new file mode 100644 index 0000000..feeeb5b --- /dev/null +++ b/ServicesApp/migrations/0001_initial.py @@ -0,0 +1,106 @@ +# Generated by Django 4.2.7 on 2023-11-26 16:29 + +import ckeditor_uploader.fields +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Section', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')), + ('name_ru', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')), + ('name_en', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')), + ('name_plural', models.TextField(blank=True, null=True, verbose_name='Название (множественное число)')), + ('order', models.IntegerField(blank=True, null=True, verbose_name='Очередность отображения')), + ('createDT', models.DateTimeField(auto_now_add=True, verbose_name='Дата и время создания')), + ('modifiedDT', models.DateTimeField(blank=True, null=True, verbose_name='Дата и время последнего изменения')), + ('enable', models.BooleanField(db_index=True, default=True, verbose_name='Включено')), + ('json_data', models.JSONField(blank=True, default=dict, verbose_name='Дополнительные данные')), + ('url', models.TextField(help_text='можно изменить адрес страницы (!!! ВНИМАНИЕ !!! поисковые системы потеряют страницу и найдут лишь спустя неделю...месяц)', unique=True, verbose_name='URL привязанной страницы')), + ('title', models.TextField(blank=True, null=True, verbose_name='Заголовок')), + ('title_ru', models.TextField(blank=True, null=True, verbose_name='Заголовок')), + ('title_en', models.TextField(blank=True, null=True, verbose_name='Заголовок')), + ('description', ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание')), + ('description_ru', ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание')), + ('description_en', ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание')), + ('text', ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Полное описание')), + ('text_ru', ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Полное описание')), + ('text_en', ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Полное описание')), + ('picture', models.ImageField(blank=True, null=True, upload_to='uploads/', verbose_name='Картинка')), + ('visible', models.BooleanField(default=True, verbose_name='Отображать')), + ('seo_title', models.CharField(blank=True, max_length=250, null=True, verbose_name='Title (80 знаков)')), + ('seo_title_ru', models.CharField(blank=True, max_length=250, null=True, verbose_name='Title (80 знаков)')), + ('seo_title_en', models.CharField(blank=True, max_length=250, null=True, verbose_name='Title (80 знаков)')), + ('seo_description', models.CharField(blank=True, max_length=250, null=True, verbose_name='Description (150 знаков)')), + ('seo_description_ru', models.CharField(blank=True, max_length=250, null=True, verbose_name='Description (150 знаков)')), + ('seo_description_en', models.CharField(blank=True, max_length=250, null=True, verbose_name='Description (150 знаков)')), + ('seo_keywords', models.CharField(blank=True, max_length=250, null=True, verbose_name='Keywords (200 знаков)')), + ('seo_text', ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Текст SEO статьи')), + ('seo_text_ru', ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Текст SEO статьи')), + ('seo_text_en', ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Текст SEO статьи')), + ('FAQ_title', models.CharField(blank=True, max_length=250, null=True, verbose_name='FAQ Заголовок')), + ('FAQ_title_ru', models.CharField(blank=True, max_length=250, null=True, verbose_name='FAQ Заголовок')), + ('FAQ_title_en', models.CharField(blank=True, max_length=250, null=True, verbose_name='FAQ Заголовок')), + ], + options={ + 'verbose_name': 'Раздел сайта', + 'verbose_name_plural': 'Разделы сайта', + }, + ), + migrations.CreateModel( + name='Service', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')), + ('name_ru', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')), + ('name_en', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')), + ('name_plural', models.TextField(blank=True, null=True, verbose_name='Название (множественное число)')), + ('order', models.IntegerField(blank=True, null=True, verbose_name='Очередность отображения')), + ('createDT', models.DateTimeField(auto_now_add=True, verbose_name='Дата и время создания')), + ('modifiedDT', models.DateTimeField(blank=True, null=True, verbose_name='Дата и время последнего изменения')), + ('enable', models.BooleanField(db_index=True, default=True, verbose_name='Включено')), + ('json_data', models.JSONField(blank=True, default=dict, verbose_name='Дополнительные данные')), + ('url', models.TextField(help_text='можно изменить адрес страницы (!!! ВНИМАНИЕ !!! поисковые системы потеряют страницу и найдут лишь спустя неделю...месяц)', unique=True, verbose_name='URL привязанной страницы')), + ('title', models.TextField(blank=True, null=True, verbose_name='Заголовок')), + ('title_ru', models.TextField(blank=True, null=True, verbose_name='Заголовок')), + ('title_en', models.TextField(blank=True, null=True, verbose_name='Заголовок')), + ('description', ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание')), + ('description_ru', ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание')), + ('description_en', ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание')), + ('text', ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Полное описание')), + ('text_ru', ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Полное описание')), + ('text_en', ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Полное описание')), + ('picture', models.ImageField(blank=True, null=True, upload_to='uploads/', verbose_name='Картинка')), + ('visible', models.BooleanField(default=True, verbose_name='Отображать')), + ('seo_title', models.CharField(blank=True, max_length=250, null=True, verbose_name='Title (80 знаков)')), + ('seo_title_ru', models.CharField(blank=True, max_length=250, null=True, verbose_name='Title (80 знаков)')), + ('seo_title_en', models.CharField(blank=True, max_length=250, null=True, verbose_name='Title (80 знаков)')), + ('seo_description', models.CharField(blank=True, max_length=250, null=True, verbose_name='Description (150 знаков)')), + ('seo_description_ru', models.CharField(blank=True, max_length=250, null=True, verbose_name='Description (150 знаков)')), + ('seo_description_en', models.CharField(blank=True, max_length=250, null=True, verbose_name='Description (150 знаков)')), + ('seo_keywords', models.CharField(blank=True, max_length=250, null=True, verbose_name='Keywords (200 знаков)')), + ('seo_text', ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Текст SEO статьи')), + ('seo_text_ru', ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Текст SEO статьи')), + ('seo_text_en', ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Текст SEO статьи')), + ('FAQ_title', models.CharField(blank=True, max_length=250, null=True, verbose_name='FAQ Заголовок')), + ('FAQ_title_ru', models.CharField(blank=True, max_length=250, null=True, verbose_name='FAQ Заголовок')), + ('FAQ_title_en', models.CharField(blank=True, max_length=250, null=True, verbose_name='FAQ Заголовок')), + ('parent_service', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rel_children_for_service', to='ServicesApp.service', verbose_name='Родитель')), + ('section', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rel_services_for_section', to='ServicesApp.section', verbose_name='Раздел')), + ], + options={ + 'verbose_name': 'Услуга', + 'verbose_name_plural': 'Услуги', + }, + ), + ] diff --git a/ServicesApp/translation.py b/ServicesApp/translation.py new file mode 100644 index 0000000..3426165 --- /dev/null +++ b/ServicesApp/translation.py @@ -0,0 +1,18 @@ +from modeltranslation.translator import translator, TranslationOptions +from .models import * + + +class Section_TranslationOptions(TranslationOptions): + fields = ( + 'name', 'description', 'text', 'title', 'FAQ_title', 'seo_title', 'seo_description', 'seo_text' + ) +translator.register(Section, Section_TranslationOptions) + +class Service_TranslationOptions(TranslationOptions): + fields = ( + 'name', 'description', 'text', 'title', 'FAQ_title', 'seo_title', 'seo_description', 'seo_text' + ) +translator.register(Service, Service_TranslationOptions) + + +