fix highlight logic
This commit is contained in:
@@ -104,7 +104,12 @@ class RouteSerializer(serializers.ModelSerializer):
|
|||||||
return transport_types.get(obj.type_transport, obj.type_transport)
|
return transport_types.get(obj.type_transport, obj.type_transport)
|
||||||
|
|
||||||
def get_is_highlighted(self, obj):
|
def get_is_highlighted(self, obj):
|
||||||
return obj.is_currently_highlighted
|
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):
|
class CreateRouteSerializer(serializers.ModelSerializer):
|
||||||
country_from = serializers.CharField(write_only=True)
|
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.core.exceptions import ValidationError
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models import Q
|
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 .serializers import RouteSerializer, CreateRouteSerializer, CitySerializer, CountrySerializer, PlanChangeSerializer, PricingSerializer, LeadSerializer, LeadResponseSerializer
|
||||||
from api.auth.serializers import UserResponseSerializer
|
from api.auth.serializers import UserResponseSerializer
|
||||||
@@ -321,9 +322,17 @@ class PremiumMembershipActionsView(ViewSet):
|
|||||||
"""Выделяем объявление"""
|
"""Выделяем объявление"""
|
||||||
route_id = request.data.get('route_id')
|
route_id = request.data.get('route_id')
|
||||||
route = get_object_or_404(Route, id=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.is_highlighted = True
|
||||||
route.save()
|
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'])
|
@action(detail=False, methods=['patch'])
|
||||||
@handle_exceptions
|
@handle_exceptions
|
||||||
|
|||||||
@@ -130,7 +130,11 @@ class Route(models.Model):
|
|||||||
"""Проверяем, выделено ли объявление на текущий момент"""
|
"""Проверяем, выделено ли объявление на текущий момент"""
|
||||||
if not self.highlight_end_DT:
|
if not self.highlight_end_DT:
|
||||||
return False
|
return False
|
||||||
return timezone.now() <= self.highlight_end_DT
|
|
||||||
|
now = timezone.now()
|
||||||
|
result = now <= self.highlight_end_DT
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = (u'Маршрут')
|
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