account/responses page

This commit is contained in:
2025-05-26 12:15:32 +03:00
parent 50e6da10f1
commit c761c60818
8 changed files with 252 additions and 11 deletions

View File

@@ -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

View File

@@ -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
)

View File

@@ -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'),