Fix service detail buttons and improve career page benefit cards visibility
Some checks failed
continuous-integration/drone/push Build is failing

- Fixed service detail modal buttons not working on /service/4/ pages
- Updated service request form to use modern Bootstrap modal
- Enhanced service_detail view to handle new form fields properly
- Added beautiful glassmorphism cards for career benefits section
- Improved text visibility with shadows and contrasting backgrounds
- Added hover animations and responsive design for benefit cards
- Updated career page CSS with modern card designs and effects
This commit is contained in:
2025-11-25 17:38:26 +09:00
parent 9839389fc9
commit 614c26edbc
6 changed files with 421 additions and 56 deletions

View File

@@ -123,59 +123,87 @@ def create_service_request(request, service_id):
if request.method == 'POST':
try:
data = json.loads(request.body)
client_email = data.get('client_email')
client_phone = data.get('client_phone')
client_name = data.get('client_name')
# Extract form data from new format
first_name = data.get('first_name', '').strip()
last_name = data.get('last_name', '').strip()
email = data.get('email', '').strip()
phone = data.get('phone', '').strip()
description = data.get('description', '').strip()
budget = data.get('budget', '')
timeline = data.get('timeline', '')
if not all([client_email, client_phone, client_name]):
return JsonResponse({'status': 'error', 'message': 'Все поля должны быть заполнены'}, status=400)
# Validate required fields
if not all([first_name, email, description]):
return JsonResponse({
'success': False,
'message': 'Пожалуйста, заполните все обязательные поля (имя, email, описание проекта)'
}, status=400)
service = get_object_or_404(Service, pk=service_id)
# Проверяем наличие клиента по email (так как email должен быть уникальным)
# Create or get client
client, client_created = Client.objects.get_or_create(
email=client_email,
email=email,
defaults={
'first_name': client_name.split()[0] if client_name else "",
'last_name': client_name.split()[-1] if len(client_name.split()) > 1 else "",
'phone_number': client_phone,
'first_name': first_name,
'last_name': last_name,
'phone_number': phone,
}
)
# Обновляем данные клиента, если он уже существовал (например, телефон или имя изменились)
# Update client data if already exists
if not client_created:
client.first_name = client_name.split()[0]
client.last_name = client_name.split()[-1] if len(client_name.split()) > 1 else ""
client.phone_number = client_phone
client.first_name = first_name
client.last_name = last_name
if phone: # Only update phone if provided
client.phone_number = phone
client.save()
# Проверяем наличие заявки на эту же услугу, не завершенной и не подтвержденной
existing_requests = ServiceRequest.objects.filter(client=client, service=service, is_verified=False)
# Check for existing pending requests
existing_requests = ServiceRequest.objects.filter(
client=client,
service=service,
is_verified=False
)
if existing_requests.exists():
return JsonResponse({
'status': 'existing_request',
'success': False,
'message': 'У вас уже есть активная заявка на данную услугу. Пожалуйста, проверьте ваш Telegram для завершения процесса.'
})
# Создаем новую заявку для клиента
# Create service request with additional data
token = uuid.uuid4().hex
# Prepare full message with all provided information
full_description = f"Описание проекта: {description}"
if budget:
full_description += f"\nБюджет: {budget}"
if timeline:
full_description += f"\nЖелаемые сроки: {timeline}"
service_request = ServiceRequest.objects.create(
service=service,
client=client,
token=token,
message=full_description,
is_verified=False
)
return JsonResponse({
'status': 'success',
'message': 'Заявка успешно создана. Пожалуйста, проверьте ваш Telegram для подтверждения.',
'success': True,
'message': 'Заявка успешно отправлена! Мы свяжемся с вами в ближайшее время.',
'service_request_id': service_request.id,
})
except json.JSONDecodeError:
logger.error("Invalid JSON format")
return JsonResponse({'status': 'error', 'message': 'Неверный формат данных'}, status=400)
return JsonResponse({'status': 'error', 'message': 'Метод запроса должен быть POST'}, status=405)
return JsonResponse({'success': False, 'message': 'Неверный формат данных'}, status=400)
except Exception as e:
logger.error(f"Error creating service request: {str(e)}")
return JsonResponse({'success': False, 'message': 'Произошла ошибка при создании заявки'}, status=500)
return JsonResponse({'success': False, 'message': 'Метод запроса должен быть POST'}, status=405)
def generate_qr_code(request, service_id):
if request.method == 'POST':