0.0.10 fix get_content_for_section_ajax

This commit is contained in:
SDE
2023-11-26 19:02:01 +03:00
parent 872f569fc3
commit 1243ad9110
9 changed files with 110 additions and 10 deletions

View File

@@ -108,6 +108,8 @@ class BaseModelViewPage(BaseModel):
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')
blocks = GenericRelation('GeneralApp.Block', related_query_name='grel_%(class)s_for_block_item')
class Meta:
abstract = True

View File

@@ -1,17 +1,12 @@
from sets.admin import *
from .models import *
from django.contrib import admin
from django.forms import widgets
# from nested_inline.admin import NestedStackedInline, NestedTabularInline, NestedModelAdmin, NestedInline
from super_inlines.admin import SuperInlineModelAdmin, SuperModelAdmin
def sets_for_formfield_for_dbfield(field, db_field):
if db_field.name == 'url' or db_field.name == 'name' or db_field.name == 'title' or db_field.name == 'name_plural':
field.widget = widgets.TextInput(attrs={'style': 'width: 30%; height: 20px;'})
if db_field.name == 'description':
field.widget = widgets.Textarea(attrs={'style': 'width: 30%; height: 100px;'})
return field
class Admin_Inline_WidgetForBlock(SuperInlineModelAdmin, Admin_Trans_BaseIconStackedInline):

View File

@@ -5,6 +5,7 @@ from django.forms import widgets
# from nested_inline.admin import NestedStackedInline, NestedTabularInline, NestedModelAdmin, NestedInline
from super_inlines.admin import SuperInlineModelAdmin, SuperModelAdmin
from GeneralApp.admin import Admin_StackedInline_Block
from SlidesApp.admin import Admin_StackedInline_Slide
def sets_for_formfield_for_dbfield(field, db_field):
if db_field.name == 'url' or db_field.name == 'name' or db_field.name == 'title' or db_field.name == 'name_plural':
@@ -53,7 +54,7 @@ class Admin_Section(SuperModelAdmin, Admin_Trans_BaseModelViewPage):
search_fields = ['name', 'title']
# filter_horizontal = ['options']
inlines = [Admin_StackedInline_Block]
inlines = [Admin_StackedInline_Slide, Admin_StackedInline_Block]
def has_delete_permission(self, request, obj=None):
if request.user.is_superuser:

View File

@@ -5,7 +5,7 @@ from django.conf import settings
from .js_views import *
urlpatterns = [
path('get_content_for_section', get_content_for_section_ajax, name='get_content_for_section_ajax'),
path('get_content_for_section/', get_content_for_section_ajax, name='get_content_for_section_ajax'),
# path('page/<str:url>/', StaticPageView, name='static_page'),
# path('test_code', test_code, name='test_code'),
]

View File

@@ -1,3 +1,29 @@
from sets.admin import *
from .models import *
from django.contrib import admin
from django.forms import widgets
# from nested_inline.admin import NestedStackedInline, NestedTabularInline, NestedModelAdmin, NestedInline
from super_inlines.admin import SuperInlineModelAdmin, SuperModelAdmin
class Admin_StackedInline_Slide(Admin_Trans_GenericBaseIconStackedInline):
# class Admin_StackedInline_Block(Admin_Trans_GenericBaseIconStackedInline):
def formfield_for_dbfield(self, db_field, request, **kwargs):
field = super(Admin_StackedInline_Slide, self).formfield_for_dbfield(db_field, request, **kwargs)
return sets_for_formfield_for_dbfield(field, db_field)
model = Slide
extra = 0
fieldsets = [
(None, {
'classes': [],
'fields': [
('title', 'description', 'picture'),
('bg_color', ),
('but_title', 'but_color'),
('url',),
('order'),
]
})
]
# Register your models here.

View File

@@ -0,0 +1,55 @@
# Generated by Django 4.2.7 on 2023-11-26 18:45
import ckeditor_uploader.fields
import colorfield.fields
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('contenttypes', '0002_remove_content_type_name'),
]
operations = [
migrations.CreateModel(
name='Slide',
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='Дополнительные данные')),
('object_id', models.PositiveIntegerField()),
('url', models.TextField(blank=True, null=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, null=True, verbose_name='Краткое описание')),
('description_ru', ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Краткое описание')),
('description_en', ckeditor_uploader.fields.RichTextUploadingField(blank=True, 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='Фоновое изображение')),
('bg_color', colorfield.fields.ColorField(default='#FFFFFF', image_field=None, max_length=25, samples=None, verbose_name='Цвет фона')),
('but_title', models.CharField(blank=True, max_length=100, null=True, verbose_name='Текст на кнопке')),
('but_title_ru', models.CharField(blank=True, max_length=100, null=True, verbose_name='Текст на кнопке')),
('but_title_en', models.CharField(blank=True, max_length=100, null=True, verbose_name='Текст на кнопке')),
('but_color', colorfield.fields.ColorField(default='#000000', image_field=None, max_length=25, samples=None, verbose_name='Цвет кнопки')),
('content_type', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='contenttypes.contenttype')),
],
options={
'verbose_name': 'Слайд',
'verbose_name_plural': 'Слайды',
},
),
]

10
SlidesApp/translation.py Normal file
View File

@@ -0,0 +1,10 @@
from modeltranslation.translator import translator, TranslationOptions
from .models import *
class Slide_TranslationOptions(TranslationOptions):
fields = (
'name', 'description', 'text', 'title', 'but_title'
)
translator.register(Slide, Slide_TranslationOptions)

View File

@@ -52,6 +52,7 @@ INSTALLED_APPS = [
'GeneralApp',
'ServicesApp',
'SlidesApp',
]
MIDDLEWARE = [

View File

@@ -5,6 +5,16 @@ from modeltranslation.admin import (TranslationAdmin,
TranslationTabularInline,
TranslationStackedInline)
from copy import deepcopy
from django.forms import widgets
def sets_for_formfield_for_dbfield(field, db_field):
if db_field.name == 'url' or db_field.name == 'name' or db_field.name == 'title' or db_field.name == 'name_plural':
field.widget = widgets.TextInput(attrs={'style': 'width: 30%; height: 20px;'})
if db_field.name == 'description':
field.widget = widgets.Textarea(attrs={'style': 'width: 30%; height: 100px;'})
return field
class AdminStacked_FAQitem(Admin_GenericBaseIconStackedInline):
from GeneralApp.models import FAQitem