account/responses page
This commit is contained in:
@@ -315,4 +315,38 @@ class LeadSerializer(serializers.ModelSerializer):
|
||||
try:
|
||||
return super().to_internal_value(data)
|
||||
except Exception as e:
|
||||
raise
|
||||
raise
|
||||
|
||||
class LeadResponseSerializer(serializers.ModelSerializer):
|
||||
route = RouteSerializer(read_only=True)
|
||||
moving_price = serializers.DecimalField(max_digits=10, decimal_places=2)
|
||||
created_at = serializers.DateTimeField()
|
||||
owner_name = serializers.SerializerMethodField()
|
||||
owner_email = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = Leads
|
||||
fields = [
|
||||
'id',
|
||||
'route',
|
||||
'moving_user',
|
||||
'moving_price',
|
||||
'moving_date',
|
||||
'comment',
|
||||
'created_at',
|
||||
'owner_name',
|
||||
'owner_email'
|
||||
]
|
||||
|
||||
def get_owner_name(self, obj):
|
||||
owner = obj.route.owner
|
||||
return f"{owner.first_name} {owner.last_name}".strip() if owner else None
|
||||
|
||||
def get_owner_email(self, obj):
|
||||
return obj.route.owner.email if obj.route.owner else None
|
||||
|
||||
def to_representation(self, instance):
|
||||
data = super().to_representation(instance)
|
||||
if instance.created_at:
|
||||
data['created_at'] = instance.created_at.strftime('%Y-%m-%dT%H:%M:%S.%f%z')
|
||||
return data
|
||||
@@ -12,9 +12,9 @@ from django.db import models
|
||||
from api.auth.serializers import UserResponseSerializer
|
||||
from api.models import UserProfile
|
||||
from api.utils.decorators import handle_exceptions
|
||||
from routes.models import Route, City, Country
|
||||
from routes.models import Route, City, Country, Leads
|
||||
from sitemanagement.models import Pricing
|
||||
from .serializers import RouteSerializer, CreateRouteSerializer, CitySerializer, CountrySerializer, PlanChangeSerializer, PricingSerializer, LeadSerializer
|
||||
from .serializers import RouteSerializer, CreateRouteSerializer, CitySerializer, CountrySerializer, PlanChangeSerializer, PricingSerializer, LeadSerializer, LeadResponseSerializer
|
||||
|
||||
class UserDataView(ViewSet):
|
||||
"""Эндпоинт для наполнения стора фронта данными"""
|
||||
@@ -259,4 +259,21 @@ class LeadViewSet(ViewSet):
|
||||
},
|
||||
status=status.HTTP_400_BAD_REQUEST
|
||||
)
|
||||
|
||||
|
||||
@action(detail=False, methods=['get'])
|
||||
@handle_exceptions
|
||||
def get_leads(self, request):
|
||||
"""Получаем список заявок на перевозку"""
|
||||
leads = Leads.objects.select_related(
|
||||
'route',
|
||||
'route__from_city',
|
||||
'route__to_city',
|
||||
'route__from_city__country',
|
||||
'route__to_city__country',
|
||||
'route__owner'
|
||||
).filter(moving_user=request.user).order_by('-created_at')
|
||||
|
||||
return Response(
|
||||
LeadResponseSerializer(leads, many=True).data,
|
||||
status=status.HTTP_200_OK
|
||||
)
|
||||
@@ -37,6 +37,7 @@ urlpatterns = [
|
||||
path("v1/account/create_route/", AccountActionsView.as_view({'post':'create_route'}), name='create_route'),
|
||||
|
||||
path("v1/account/send_lead/", LeadViewSet.as_view({'post':'send_lead'}), name='send_lead'),
|
||||
path("v1/account/leads/", LeadViewSet.as_view({'get':'get_leads'}), name='get_leads'),
|
||||
|
||||
path("v1/cities/", CityView.as_view({'get':'get_cities'}), name='get_cities'),
|
||||
path("v1/countries/", CountryView.as_view({'get':'get_countries'}), name='get_countries'),
|
||||
|
||||
Reference in New Issue
Block a user