Some checks failed
continuous-integration/drone/push Build is failing
- Fix CSS loading issue in project_detail.html template - Add comprehensive ModernMediaGallery JavaScript class with touch navigation - Implement glassmorphism design with backdrop-filter effects - Add responsive breakpoint system for mobile devices - Include embedded critical CSS styles for gallery functionality - Add technology sidebar with vertical list layout and hover effects - Support for images, videos, and embedded content with thumbnails - Add lightbox integration and media type badges - Implement progress bar and thumbnail navigation - Add keyboard controls (arrow keys) and touch swipe gestures - Include supplementary styles for video/embed placeholders - Fix template block naming compatibility (extra_css → extra_styles)
192 lines
10 KiB
Python
192 lines
10 KiB
Python
#!/usr/bin/env python3
|
||
import os
|
||
import sys
|
||
import django
|
||
from datetime import datetime, date
|
||
|
||
# Настройка Django
|
||
sys.path.append('/app/smartsoltech')
|
||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'smartsoltech.settings')
|
||
django.setup()
|
||
|
||
from web.models import Project, Category, Client, Service, Order
|
||
from django.contrib.auth.models import User
|
||
|
||
def create_test_projects():
|
||
# Создаем или получаем категории
|
||
categories = []
|
||
|
||
cat_web, _ = Category.objects.get_or_create(
|
||
slug='web-development',
|
||
defaults={
|
||
'name': 'Веб-разработка',
|
||
'icon': 'fas fa-code',
|
||
'order': 1,
|
||
'description': 'Создание веб-сайтов и приложений'
|
||
}
|
||
)
|
||
categories.append(cat_web)
|
||
|
||
cat_mobile, _ = Category.objects.get_or_create(
|
||
slug='mobile-apps',
|
||
defaults={
|
||
'name': 'Мобильные приложения',
|
||
'icon': 'fas fa-mobile-alt',
|
||
'order': 2,
|
||
'description': 'Разработка iOS и Android приложений'
|
||
}
|
||
)
|
||
categories.append(cat_mobile)
|
||
|
||
cat_design, _ = Category.objects.get_or_create(
|
||
slug='design',
|
||
defaults={
|
||
'name': 'Дизайн',
|
||
'icon': 'fas fa-palette',
|
||
'order': 3,
|
||
'description': 'UI/UX дизайн и брендинг'
|
||
}
|
||
)
|
||
categories.append(cat_design)
|
||
|
||
cat_analytics, _ = Category.objects.get_or_create(
|
||
slug='analytics',
|
||
defaults={
|
||
'name': 'Аналитика',
|
||
'icon': 'fas fa-chart-bar',
|
||
'order': 4,
|
||
'description': 'Системы аналитики и отчетности'
|
||
}
|
||
)
|
||
categories.append(cat_analytics)
|
||
|
||
cat_ecommerce, _ = Category.objects.get_or_create(
|
||
slug='ecommerce',
|
||
defaults={
|
||
'name': 'E-commerce',
|
||
'icon': 'fas fa-shopping-cart',
|
||
'order': 5,
|
||
'description': 'Интернет-магазины и торговые платформы'
|
||
}
|
||
)
|
||
categories.append(cat_ecommerce)
|
||
|
||
# Создаем или получаем тестового клиента
|
||
client, _ = Client.objects.get_or_create(
|
||
email='test@example.com',
|
||
defaults={
|
||
'first_name': 'Тестовый',
|
||
'last_name': 'Клиент',
|
||
'phone_number': '+7-900-000-0000'
|
||
}
|
||
)
|
||
|
||
# Создаем или получаем тестовую услугу
|
||
service, _ = Service.objects.get_or_create(
|
||
name='Разработка сайта',
|
||
defaults={
|
||
'description': 'Профессиональная разработка веб-сайтов',
|
||
'price': 100000.00,
|
||
'category': cat_web
|
||
}
|
||
)
|
||
|
||
# Тестовые данные проектов
|
||
test_projects = [
|
||
{
|
||
'name': 'Корпоративный портал TechCorp',
|
||
'short_description': 'Современный корпоративный портал с системой управления документами, интеграцией с CRM и модулем HR.',
|
||
'description': '<p>Разработан комплексный корпоративный портал для компании TechCorp, включающий в себя систему управления документами, интеграцию с CRM-системой и модуль управления персоналом.</p><p>Основные функции: документооборот, календарь событий, внутренние новости, система заявок, интеграция с почтовыми сервисами.</p>',
|
||
'technologies': 'Django, PostgreSQL, Redis, Celery, Docker, React.js',
|
||
'duration': '4 месяца',
|
||
'team_size': 5,
|
||
'views_count': 1245,
|
||
'likes_count': 89,
|
||
'completion_date': date(2024, 8, 15),
|
||
'categories': [cat_web, cat_analytics],
|
||
'is_featured': True
|
||
},
|
||
{
|
||
'name': 'Мобильное приложение FoodDelivery',
|
||
'short_description': 'Cross-platform приложение для доставки еды с геолокацией, онлайн-платежами и системой рейтингов.',
|
||
'description': '<p>Создано мобильное приложение для службы доставки еды с поддержкой iOS и Android платформ.</p><p>Функционал включает: поиск ресторанов по геолокации, онлайн-заказы, интеграцию с платежными системами, отслеживание курьера в реальном времени, система рейтингов и отзывов.</p>',
|
||
'technologies': 'React Native, Node.js, MongoDB, Socket.io, Stripe API',
|
||
'duration': '6 месяцев',
|
||
'team_size': 4,
|
||
'views_count': 892,
|
||
'likes_count': 156,
|
||
'completion_date': date(2024, 10, 20),
|
||
'categories': [cat_mobile, cat_ecommerce],
|
||
'is_featured': False
|
||
},
|
||
{
|
||
'name': 'Аналитическая панель SmartMetrics',
|
||
'short_description': 'Интерактивная панель управления с визуализацией данных, машинным обучением и предиктивной аналитикой.',
|
||
'description': '<p>Разработана комплексная система аналитики для обработки больших данных с возможностями машинного обучения.</p><p>Включает: интерактивные дашборды, автоматизированные отчеты, прогнозирование трендов, интеграция с различными источниками данных, алгоритмы машинного обучения.</p>',
|
||
'technologies': 'Python, Django, PostgreSQL, Redis, TensorFlow, D3.js, Pandas',
|
||
'duration': '5 месяцев',
|
||
'team_size': 6,
|
||
'views_count': 673,
|
||
'likes_count': 124,
|
||
'completion_date': date(2024, 7, 10),
|
||
'categories': [cat_analytics, cat_web],
|
||
'is_featured': True
|
||
},
|
||
{
|
||
'name': 'E-commerce платформа ShopMaster',
|
||
'short_description': 'Полнофункциональная платформа интернет-торговли с многопользовательскими магазинами и системой управления.',
|
||
'description': '<p>Создана масштабируемая e-commerce платформа, поддерживающая множественные магазины на одной основе.</p><p>Возможности: многопользовательская архитектура, система платежей, управление складом, программы лояльности, мобильная оптимизация, SEO инструменты.</p>',
|
||
'technologies': 'Laravel, MySQL, Redis, Elasticsearch, Vue.js, Stripe, PayPal',
|
||
'duration': '8 месяцев',
|
||
'team_size': 7,
|
||
'views_count': 1567,
|
||
'likes_count': 203,
|
||
'completion_date': date(2024, 11, 5),
|
||
'categories': [cat_ecommerce, cat_web, cat_mobile],
|
||
'is_featured': True
|
||
},
|
||
{
|
||
'name': 'Дизайн-система BrandKit',
|
||
'short_description': 'Комплексная дизайн-система для финтех стартапа с фирменным стилем, UI-компонентами и брендбуком.',
|
||
'description': '<p>Разработана полная дизайн-система для финтех компании, включающая создание фирменного стиля, UI-компонентов и подробного брендбука.</p><p>Результат: логотип и фирменный стиль, библиотека UI-компонентов, руководство по использованию бренда, адаптация для различных платформ.</p>',
|
||
'technologies': 'Figma, Adobe Creative Suite, Principle, Sketch, InVision',
|
||
'duration': '3 месяца',
|
||
'team_size': 3,
|
||
'views_count': 445,
|
||
'likes_count': 78,
|
||
'completion_date': date(2024, 9, 30),
|
||
'categories': [cat_design],
|
||
'is_featured': False
|
||
}
|
||
]
|
||
|
||
print(f"Текущее количество проектов: {Project.objects.count()}")
|
||
|
||
# Создаем проекты
|
||
for i, project_data in enumerate(test_projects):
|
||
categories_to_add = project_data.pop('categories')
|
||
|
||
project, created = Project.objects.get_or_create(
|
||
name=project_data['name'],
|
||
defaults={
|
||
**project_data,
|
||
'client': client,
|
||
'service': service,
|
||
'status': 'completed',
|
||
'display_order': i + 1
|
||
}
|
||
)
|
||
|
||
if created:
|
||
# Добавляем категории
|
||
project.categories.set(categories_to_add)
|
||
print(f"✅ Создан проект: {project.name}")
|
||
else:
|
||
print(f"⚠️ Проект уже существует: {project.name}")
|
||
|
||
print(f"\nИтого проектов в базе: {Project.objects.count()}")
|
||
print(f"Завершенных проектов: {Project.objects.filter(status='completed').count()}")
|
||
print(f"Избранных проектов: {Project.objects.filter(is_featured=True).count()}")
|
||
|
||
if __name__ == '__main__':
|
||
create_test_projects() |