🎨 Добавлен фронтенд для команды и карьеры
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
✨ Новые страницы: - 👥 /team/ - Страница команды с детальной информацией • Красивые карточки сотрудников с фото • Социальные сети и контактные данные • Навыки и опыт работы • Адаптивный дизайн с hover эффектами - 💼 /career/ - Страница карьеры с вакансиями • Рекомендуемые и обычные вакансии • Фильтры по отделам • Детальная информация о позициях • Зарплатные вилки и требования • Интеграция с email для откликов 🏠 Главная страница: - Интеграция секций команды и карьеры - Гармоничное размещение между существующими блоками - Топ-4 сотрудника и топ-3 вакансии - Кнопки перехода на полные страницы 🧭 Навигация: - Добавлены ссылки 'Команда' и 'Карьера' в меню - Активные состояния для новых страниц - Адаптивная навигация для мобильных 🎯 UX/UI улучшения: - Современный градиентный дизайн - Анимации и hover эффекты - Skill tags и бейджи - Responsive дизайн для всех устройств - Интеграция с социальными сетями
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
from django.shortcuts import render, get_object_or_404, redirect
|
||||
from .models import Service, Project, Client, BlogPost, Review, Order, ServiceRequest, HeroBanner, Category, ContactInfo
|
||||
from .models import Service, Project, Client, BlogPost, Review, Order, ServiceRequest, HeroBanner, Category, ContactInfo, Team, Career
|
||||
from django.db.models import Avg
|
||||
from comunication.models import TelegramSettings
|
||||
import qrcode
|
||||
@@ -41,12 +41,18 @@ def home(request):
|
||||
latest_blog_posts = BlogPost.objects.all()[:2] # Последние статьи блога
|
||||
reviews = Review.objects.all()[:3] # Отзывы клиентов
|
||||
|
||||
# Данные для команды и карьеры
|
||||
team_members = Team.objects.filter(is_active=True, show_on_about=True).order_by('display_order')[:4] # Показываем топ-4 участников команды
|
||||
featured_careers = Career.objects.filter(status='active', is_featured=True).order_by('-created_at')[:3] # Топ-3 рекомендуемые вакансии
|
||||
|
||||
return render(request, 'web/home_modern.html', {
|
||||
'services': services,
|
||||
'hero_banners': hero_banners,
|
||||
'latest_projects': latest_projects,
|
||||
'latest_blog_posts': latest_blog_posts,
|
||||
'reviews': reviews,
|
||||
'team_members': team_members,
|
||||
'featured_careers': featured_careers,
|
||||
})
|
||||
|
||||
def service_detail(request, pk):
|
||||
@@ -359,3 +365,30 @@ def check_request_status(request, request_id):
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка при проверке статуса заявки {request_id}: {str(e)}")
|
||||
return JsonResponse({'error': 'Ошибка сервера'}, status=500)
|
||||
|
||||
|
||||
def team_view(request):
|
||||
"""Страница команды"""
|
||||
team_members = Team.objects.filter(is_active=True).order_by('display_order', 'last_name')
|
||||
return render(request, 'web/team.html', {
|
||||
'team_members': team_members,
|
||||
})
|
||||
|
||||
|
||||
def career_view(request):
|
||||
"""Страница карьеры"""
|
||||
# Активные вакансии
|
||||
active_careers = Career.objects.filter(status='active').order_by('-is_featured', '-created_at')
|
||||
|
||||
# Рекомендуемые вакансии
|
||||
featured_careers = active_careers.filter(is_featured=True)
|
||||
|
||||
# Статистика
|
||||
departments = Career.objects.filter(status='active').values_list('department', flat=True).distinct()
|
||||
|
||||
return render(request, 'web/career.html', {
|
||||
'active_careers': active_careers,
|
||||
'featured_careers': featured_careers,
|
||||
'departments': departments,
|
||||
'total_positions': active_careers.count(),
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user