feat: добавлены модели AboutPage и FooterSettings с админ-панелью и интеграцией скриптов

This commit is contained in:
2025-11-24 09:18:22 +09:00
parent ee3a1bf846
commit 3cea013a8e
9 changed files with 558 additions and 17 deletions

View File

@@ -0,0 +1,106 @@
# Generated by Django 5.1.1 on 2025-11-24 00:13
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('web', '0009_alter_servicerequest_options_and_more'),
]
operations = [
migrations.CreateModel(
name='AboutPage',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('hero_badge', models.CharField(default='🚀 О нас', max_length=100, verbose_name='Hero Badge')),
('hero_title', models.CharField(default='Мы создаем цифровое будущее', max_length=200, verbose_name='Заголовок Hero')),
('hero_description', models.TextField(default='SmartSolTech - это команда профессионалов...', verbose_name='Описание Hero')),
('stat_projects', models.IntegerField(default=50, verbose_name='Количество проектов')),
('stat_clients', models.IntegerField(default=30, verbose_name='Количество клиентов')),
('stat_years', models.IntegerField(default=3, verbose_name='Лет опыта')),
('stat_support', models.CharField(default='24/7', max_length=50, verbose_name='Поддержка')),
('mission_badge', models.CharField(default='🎯 Наша миссия', max_length=100, verbose_name='Mission Badge')),
('mission_title', models.CharField(default='Делаем технологии доступными', max_length=200, verbose_name='Заголовок миссии')),
('mission_description', models.TextField(verbose_name='Описание миссии')),
('mission_point_1_title', models.CharField(default='Инновационные решения', max_length=200, verbose_name='Пункт миссии 1')),
('mission_point_1_text', models.TextField(default='Используем передовые технологии...', verbose_name='Текст пункта 1')),
('mission_point_2_title', models.CharField(default='Клиентоориентированность', max_length=200, verbose_name='Пункт миссии 2')),
('mission_point_2_text', models.TextField(default='Фокусируемся на потребностях...', verbose_name='Текст пункта 2')),
('mission_point_3_title', models.CharField(default='Непрерывное развитие', max_length=200, verbose_name='Пункт миссии 3')),
('mission_point_3_text', models.TextField(default='Постоянно совершенствуем...', verbose_name='Текст пункта 3')),
('vision_badge', models.CharField(default='🔮 Наше видение', max_length=100, verbose_name='Vision Badge')),
('vision_title', models.CharField(default='Будущее начинается сегодня', max_length=200, verbose_name='Заголовок видения')),
('vision_description', models.TextField(verbose_name='Описание видения')),
('skill_1_name', models.CharField(default='Веб-разработка', max_length=100, verbose_name='Навык 1')),
('skill_1_percent', models.IntegerField(default=95, verbose_name='Процент навыка 1')),
('skill_2_name', models.CharField(default='Мобильная разработка', max_length=100, verbose_name='Навык 2')),
('skill_2_percent', models.IntegerField(default=90, verbose_name='Процент навыка 2')),
('skill_3_name', models.CharField(default='UI/UX Дизайн', max_length=100, verbose_name='Навык 3')),
('skill_3_percent', models.IntegerField(default=85, verbose_name='Процент навыка 3')),
('skill_4_name', models.CharField(default='DevOps', max_length=100, verbose_name='Навык 4')),
('skill_4_percent', models.IntegerField(default=80, verbose_name='Процент навыка 4')),
('team_badge', models.CharField(default='👥 Команда', max_length=100, verbose_name='Team Badge')),
('team_title', models.CharField(default='Познакомьтесь с нашей командой', max_length=200, verbose_name='Заголовок команды')),
('team_description', models.TextField(default='Талантливые профессионалы...', verbose_name='Описание команды')),
('values_badge', models.CharField(default='💎 Наши ценности', max_length=100, verbose_name='Values Badge')),
('values_title', models.CharField(default='Что нами движет', max_length=200, verbose_name='Заголовок ценностей')),
('value_1_icon', models.CharField(default='fa-lightbulb', max_length=50, verbose_name='Иконка ценности 1')),
('value_1_title', models.CharField(default='Инновации', max_length=100, verbose_name='Ценность 1')),
('value_1_text', models.TextField(default='Мы постоянно ищем новые решения...', verbose_name='Текст ценности 1')),
('value_2_icon', models.CharField(default='fa-handshake', max_length=50, verbose_name='Иконка ценности 2')),
('value_2_title', models.CharField(default='Партнерство', max_length=100, verbose_name='Ценность 2')),
('value_2_text', models.TextField(default='Строим долгосрочные отношения...', verbose_name='Текст ценности 2')),
('value_3_icon', models.CharField(default='fa-chart-line', max_length=50, verbose_name='Иконка ценности 3')),
('value_3_title', models.CharField(default='Результат', max_length=100, verbose_name='Ценность 3')),
('value_3_text', models.TextField(default='Фокусируемся на достижении целей...', verbose_name='Текст ценности 3')),
('value_4_icon', models.CharField(default='fa-shield-alt', max_length=50, verbose_name='Иконка ценности 4')),
('value_4_title', models.CharField(default='Надежность', max_length=100, verbose_name='Ценность 4')),
('value_4_text', models.TextField(default='Гарантируем качество и безопасность...', verbose_name='Текст ценности 4')),
('contact_title', models.CharField(default='Готовы начать проект?', max_length=200, verbose_name='Заголовок контактов')),
('contact_description', models.TextField(default='Свяжитесь с нами сегодня...', verbose_name='Описание контактов')),
('is_active', models.BooleanField(default=True, verbose_name='Активна')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Обновлено')),
],
options={
'verbose_name': 'Страница О нас',
'verbose_name_plural': 'Страницы О нас',
},
),
migrations.CreateModel(
name='FooterSettings',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('company_name', models.CharField(default='SmartSolTech', max_length=100, verbose_name='Название компании')),
('company_description', models.TextField(default='Мы создаем инновационные IT-решения, которые помогают бизнесу расти...', verbose_name='Описание компании')),
('company_logo_icon', models.CharField(default='fa-code', max_length=50, verbose_name='Иконка компании')),
('telegram_url', models.URLField(blank=True, verbose_name='Telegram URL')),
('instagram_url', models.URLField(blank=True, verbose_name='Instagram URL')),
('linkedin_url', models.URLField(blank=True, verbose_name='LinkedIn URL')),
('github_url', models.URLField(blank=True, verbose_name='GitHub URL')),
('facebook_url', models.URLField(blank=True, verbose_name='Facebook URL')),
('twitter_url', models.URLField(blank=True, verbose_name='Twitter URL')),
('email', models.EmailField(default='info@smartsoltech.kr', max_length=254, verbose_name='Email')),
('phone', models.CharField(default='+82-10-XXXX-XXXX', max_length=50, verbose_name='Телефон')),
('address', models.TextField(default='Seoul, South Korea', verbose_name='Адрес')),
('show_services_menu', models.BooleanField(default=True, verbose_name='Показывать меню услуг')),
('services_title', models.CharField(default='Услуги', max_length=100, verbose_name='Заголовок меню услуг')),
('show_company_menu', models.BooleanField(default=True, verbose_name='Показывать меню компании')),
('company_menu_title', models.CharField(default='Компания', max_length=100, verbose_name='Заголовок меню компании')),
('copyright_text', models.CharField(default='© 2025 SmartSolTech. Все права защищены.', max_length=200, verbose_name='Текст Copyright')),
('google_analytics', models.TextField(blank=True, help_text='Вставьте код Google Analytics (без тегов <script>)', verbose_name='Google Analytics')),
('google_adsense', models.TextField(blank=True, help_text='Вставьте код Google AdSense (без тегов <script>)', verbose_name='Google AdSense')),
('yandex_metrika', models.TextField(blank=True, help_text='Вставьте код Яндекс Метрики (без тегов <script>)', verbose_name='Яндекс Метрика')),
('facebook_pixel', models.TextField(blank=True, help_text='Вставьте код Facebook Pixel (без тегов <script>)', verbose_name='Facebook Pixel')),
('custom_head_scripts', models.TextField(blank=True, help_text='Дополнительные скрипты для вставки в <head> (с тегами <script>)', verbose_name='Скрипты в <head>')),
('custom_body_scripts', models.TextField(blank=True, help_text='Дополнительные скрипты для вставки перед закрывающим </body> (с тегами <script>)', verbose_name='Скрипты перед </body>')),
('is_active', models.BooleanField(default=True, verbose_name='Активно')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Обновлено')),
],
options={
'verbose_name': 'Настройки футера',
'verbose_name_plural': 'Настройки футера',
},
),
]