Исправлена подсветка шаблонов, добавлен макет тестовый список, исправлены проблемы со шрифтами
- Добавлено поле template_id в модель DesignSettings - Исправлена логика подсветки выбранного шаблона в TemplatesSelector - Добавлен новый макет 'test-list' - полный несворачиваемый список - Обновлены шрифты с поддержкой CSS переменных - Создан CSS модуль для тестового списка - Обеспечена совместимость иконок во всех макетах
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 5.2.8 on 2025-11-09 02:49
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('customization', '0007_designsettings_body_font_family_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='designsettings',
|
||||
name='template_id',
|
||||
field=models.CharField(blank=True, help_text='ID выбранного дизайн-шаблона', max_length=50, null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='designsettings',
|
||||
name='dashboard_layout',
|
||||
field=models.CharField(choices=[('sidebar', 'Боковая панель'), ('grid', 'Сетка'), ('list', 'Список'), ('cards', 'Карточки'), ('compact', 'Компактный'), ('masonry', 'Кладка'), ('timeline', 'Временная линия'), ('magazine', 'Журнальный'), ('test-list', 'Тестовый список')], default='list', help_text='Стиль отображения дашборда', max_length=20),
|
||||
),
|
||||
]
|
||||
@@ -38,6 +38,7 @@ class DesignSettings(models.Model):
|
||||
('masonry', 'Кладка'),
|
||||
('timeline', 'Временная линия'),
|
||||
('magazine', 'Журнальный'),
|
||||
('test-list', 'Тестовый список'),
|
||||
],
|
||||
default='list',
|
||||
help_text='Стиль отображения дашборда'
|
||||
@@ -140,6 +141,14 @@ class DesignSettings(models.Model):
|
||||
help_text='Шрифт для заголовков'
|
||||
)
|
||||
|
||||
# ID выбранного шаблона
|
||||
template_id = models.CharField(
|
||||
max_length=50,
|
||||
blank=True,
|
||||
null=True,
|
||||
help_text='ID выбранного дизайн-шаблона'
|
||||
)
|
||||
|
||||
updated_at = models.DateTimeField(
|
||||
auto_now=True,
|
||||
help_text='Дата и время последнего изменения'
|
||||
|
||||
@@ -12,6 +12,7 @@ class DesignSettingsSerializer(serializers.ModelSerializer):
|
||||
model = DesignSettings
|
||||
fields = [
|
||||
'id',
|
||||
'template_id',
|
||||
'theme_color',
|
||||
'background_image',
|
||||
'background_image_url',
|
||||
@@ -120,7 +121,7 @@ class DesignSettingsSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
Валидация типа макета дашборда
|
||||
"""
|
||||
valid_layouts = ['sidebar', 'grid', 'list', 'cards', 'compact', 'masonry', 'timeline', 'magazine']
|
||||
valid_layouts = ['sidebar', 'grid', 'list', 'cards', 'compact', 'masonry', 'timeline', 'magazine', 'test-list']
|
||||
if value not in valid_layouts:
|
||||
raise serializers.ValidationError(f'Макет должен быть одним из: {", ".join(valid_layouts)}')
|
||||
return value
|
||||
@@ -252,6 +253,14 @@ class DesignSettingsSerializer(serializers.ModelSerializer):
|
||||
raise serializers.ValidationError('Название шрифта слишком длинное')
|
||||
return value
|
||||
|
||||
def validate_template_id(self, value):
|
||||
"""
|
||||
Валидация ID шаблона
|
||||
"""
|
||||
if value and len(value) > 50:
|
||||
raise serializers.ValidationError('ID шаблона слишком длинный')
|
||||
return value
|
||||
|
||||
|
||||
class PublicDesignSettingsSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user