Add comprehensive group customization features
- Add group overlay color and opacity settings - Add font customization (body and heading fonts) - Add group description text color control - Add option to hide 'Groups' title - Update frontend DesignSettings interface - Update CustomizationPanel with new UI controls - Update Django model with new fields - Create migration for new customization options - Update DRF serializer with validation
This commit is contained in:
@@ -28,6 +28,13 @@ class DesignSettingsSerializer(serializers.ModelSerializer):
|
||||
'cover_overlay_enabled',
|
||||
'cover_overlay_color',
|
||||
'cover_overlay_opacity',
|
||||
'group_overlay_enabled',
|
||||
'group_overlay_color',
|
||||
'group_overlay_opacity',
|
||||
'show_groups_title',
|
||||
'group_description_text_color',
|
||||
'body_font_family',
|
||||
'heading_font_family',
|
||||
'updated_at'
|
||||
]
|
||||
read_only_fields = ['id', 'updated_at', 'background_image_url']
|
||||
@@ -197,6 +204,54 @@ class DesignSettingsSerializer(serializers.ModelSerializer):
|
||||
raise serializers.ValidationError('Прозрачность должна быть между 0.0 и 1.0')
|
||||
return value
|
||||
|
||||
def validate_group_overlay_color(self, value):
|
||||
"""
|
||||
Валидация цвета перекрытия групп
|
||||
"""
|
||||
if not value.startswith('#') or len(value) != 7:
|
||||
raise serializers.ValidationError('Цвет должен быть в формате #RRGGBB')
|
||||
try:
|
||||
int(value[1:], 16)
|
||||
except ValueError:
|
||||
raise serializers.ValidationError('Некорректный hex цвет')
|
||||
return value
|
||||
|
||||
def validate_group_overlay_opacity(self, value):
|
||||
"""
|
||||
Валидация прозрачности перекрытия групп
|
||||
"""
|
||||
if not 0.0 <= value <= 1.0:
|
||||
raise serializers.ValidationError('Прозрачность должна быть между 0.0 и 1.0')
|
||||
return value
|
||||
|
||||
def validate_group_description_text_color(self, value):
|
||||
"""
|
||||
Валидация цвета описаний групп
|
||||
"""
|
||||
if not value.startswith('#') or len(value) != 7:
|
||||
raise serializers.ValidationError('Цвет должен быть в формате #RRGGBB')
|
||||
try:
|
||||
int(value[1:], 16)
|
||||
except ValueError:
|
||||
raise serializers.ValidationError('Некорректный hex цвет')
|
||||
return value
|
||||
|
||||
def validate_body_font_family(self, value):
|
||||
"""
|
||||
Валидация шрифта основного текста
|
||||
"""
|
||||
if value and len(value) > 100:
|
||||
raise serializers.ValidationError('Название шрифта слишком длинное')
|
||||
return value
|
||||
|
||||
def validate_heading_font_family(self, value):
|
||||
"""
|
||||
Валидация шрифта заголовков
|
||||
"""
|
||||
if value and len(value) > 100:
|
||||
raise serializers.ValidationError('Название шрифта слишком длинное')
|
||||
return value
|
||||
|
||||
|
||||
class PublicDesignSettingsSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user