0.0.10 fix get_content_for_section_ajax
This commit is contained in:
@@ -108,6 +108,8 @@ class BaseModelViewPage(BaseModel):
|
|||||||
FAQ_title = models.CharField(max_length=250, verbose_name=_(u'FAQ Заголовок'), 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')
|
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:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|||||||
@@ -1,17 +1,12 @@
|
|||||||
from sets.admin import *
|
from sets.admin import *
|
||||||
from .models import *
|
from .models import *
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.forms import widgets
|
|
||||||
# from nested_inline.admin import NestedStackedInline, NestedTabularInline, NestedModelAdmin, NestedInline
|
# from nested_inline.admin import NestedStackedInline, NestedTabularInline, NestedModelAdmin, NestedInline
|
||||||
from super_inlines.admin import SuperInlineModelAdmin, SuperModelAdmin
|
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):
|
class Admin_Inline_WidgetForBlock(SuperInlineModelAdmin, Admin_Trans_BaseIconStackedInline):
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ from django.forms import widgets
|
|||||||
# from nested_inline.admin import NestedStackedInline, NestedTabularInline, NestedModelAdmin, NestedInline
|
# from nested_inline.admin import NestedStackedInline, NestedTabularInline, NestedModelAdmin, NestedInline
|
||||||
from super_inlines.admin import SuperInlineModelAdmin, SuperModelAdmin
|
from super_inlines.admin import SuperInlineModelAdmin, SuperModelAdmin
|
||||||
from GeneralApp.admin import Admin_StackedInline_Block
|
from GeneralApp.admin import Admin_StackedInline_Block
|
||||||
|
from SlidesApp.admin import Admin_StackedInline_Slide
|
||||||
|
|
||||||
def sets_for_formfield_for_dbfield(field, db_field):
|
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':
|
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']
|
search_fields = ['name', 'title']
|
||||||
# filter_horizontal = ['options']
|
# filter_horizontal = ['options']
|
||||||
|
|
||||||
inlines = [Admin_StackedInline_Block]
|
inlines = [Admin_StackedInline_Slide, Admin_StackedInline_Block]
|
||||||
|
|
||||||
def has_delete_permission(self, request, obj=None):
|
def has_delete_permission(self, request, obj=None):
|
||||||
if request.user.is_superuser:
|
if request.user.is_superuser:
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from django.conf import settings
|
|||||||
from .js_views import *
|
from .js_views import *
|
||||||
|
|
||||||
urlpatterns = [
|
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('page/<str:url>/', StaticPageView, name='static_page'),
|
||||||
# path('test_code', test_code, name='test_code'),
|
# path('test_code', test_code, name='test_code'),
|
||||||
]
|
]
|
||||||
@@ -1,3 +1,29 @@
|
|||||||
|
from sets.admin import *
|
||||||
|
from .models import *
|
||||||
from django.contrib import admin
|
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.
|
|
||||||
|
|||||||
55
SlidesApp/migrations/0001_initial.py
Normal file
55
SlidesApp/migrations/0001_initial.py
Normal 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
10
SlidesApp/translation.py
Normal 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)
|
||||||
|
|
||||||
@@ -52,6 +52,7 @@ INSTALLED_APPS = [
|
|||||||
|
|
||||||
'GeneralApp',
|
'GeneralApp',
|
||||||
'ServicesApp',
|
'ServicesApp',
|
||||||
|
'SlidesApp',
|
||||||
]
|
]
|
||||||
|
|
||||||
MIDDLEWARE = [
|
MIDDLEWARE = [
|
||||||
|
|||||||
@@ -5,6 +5,16 @@ from modeltranslation.admin import (TranslationAdmin,
|
|||||||
TranslationTabularInline,
|
TranslationTabularInline,
|
||||||
TranslationStackedInline)
|
TranslationStackedInline)
|
||||||
from copy import deepcopy
|
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):
|
class AdminStacked_FAQitem(Admin_GenericBaseIconStackedInline):
|
||||||
from GeneralApp.models import FAQitem
|
from GeneralApp.models import FAQitem
|
||||||
|
|||||||
Reference in New Issue
Block a user