diff --git a/backend/api/account/client/serializers.py b/backend/api/account/client/serializers.py index 1da172f..b5f6a5f 100644 --- a/backend/api/account/client/serializers.py +++ b/backend/api/account/client/serializers.py @@ -103,8 +103,13 @@ class RouteSerializer(serializers.ModelSerializer): transport_types = dict(type_transport_choices) return transport_types.get(obj.type_transport, obj.type_transport) - def get_is_highlighted(self, obj): - return obj.is_currently_highlighted + def get_is_highlighted(self, obj): + now = timezone.now() + + if obj.highlight_end_DT and obj.is_highlighted: + result = now <= obj.highlight_end_DT + return result + return False class CreateRouteSerializer(serializers.ModelSerializer): country_from = serializers.CharField(write_only=True) diff --git a/backend/api/account/client/views.py b/backend/api/account/client/views.py index 717f837..d006d18 100644 --- a/backend/api/account/client/views.py +++ b/backend/api/account/client/views.py @@ -9,7 +9,8 @@ from django.core.validators import validate_email from django.core.exceptions import ValidationError from django.db import models from django.db.models import Q -from datetime import datetime +from datetime import datetime, timedelta +from django.utils import timezone from .serializers import RouteSerializer, CreateRouteSerializer, CitySerializer, CountrySerializer, PlanChangeSerializer, PricingSerializer, LeadSerializer, LeadResponseSerializer from api.auth.serializers import UserResponseSerializer @@ -321,9 +322,17 @@ class PremiumMembershipActionsView(ViewSet): """Выделяем объявление""" route_id = request.data.get('route_id') route = get_object_or_404(Route, id=route_id) + + # подсвечиваем объявление на 24 часа + now = timezone.now() + route.highlight_end_DT = now + timedelta(days=1) route.is_highlighted = True route.save() - return Response({"message": "Объявление выделено"}, status=status.HTTP_200_OK) + + return Response({ + "message": "Объявление выделено", + "is_highlighted": route.is_highlighted + }, status=status.HTTP_200_OK) @action(detail=False, methods=['patch']) @handle_exceptions diff --git a/backend/routes/models.py b/backend/routes/models.py index 953f065..9f56044 100644 --- a/backend/routes/models.py +++ b/backend/routes/models.py @@ -130,7 +130,11 @@ class Route(models.Model): """Проверяем, выделено ли объявление на текущий момент""" if not self.highlight_end_DT: return False - return timezone.now() <= self.highlight_end_DT + + now = timezone.now() + result = now <= self.highlight_end_DT + + return result class Meta: verbose_name = (u'Маршрут') diff --git a/backend/routes/views.py b/backend/routes/views.py deleted file mode 100644 index 75ad72b..0000000 --- a/backend/routes/views.py +++ /dev/null @@ -1,31 +0,0 @@ -from django.utils import timezone -from datetime import timedelta -from rest_framework.decorators import api_view, permission_classes -from rest_framework.permissions import IsAuthenticated -from rest_framework.response import Response -from rest_framework import status -from .models import Route - -@api_view(['PATCH']) -@permission_classes([IsAuthenticated]) -def highlight_route(request): - try: - route_id = request.data.get('route_id') - route = Route.objects.get(id=route_id, owner=request.user) - - # подсвечиваем объявление на 24 часа - route.highlight_end_DT = timezone.now() + timedelta(days=1) - route.is_highlighted = True - route.save() - - return Response({'status': 'success'}) - except Route.DoesNotExist: - return Response( - {'error': 'Маршрут не найден или у вас нет прав для его изменения'}, - status=status.HTTP_404_NOT_FOUND - ) - except Exception as e: - return Response( - {'error': str(e)}, - status=status.HTTP_500_INTERNAL_SERVER_ERROR - )