fix highlight logic
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'Маршрут')
|
||||
|
||||
@@ -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
|
||||
)
|
||||
Reference in New Issue
Block a user