diff --git a/backend/api/account/client/serializers.py b/backend/api/account/client/serializers.py index a29206f..4579800 100644 --- a/backend/api/account/client/serializers.py +++ b/backend/api/account/client/serializers.py @@ -264,4 +264,7 @@ class PlanChangeSerializer(serializers.Serializer): """ instance.account_type = validated_data['account_type'] instance.save() - return instance \ No newline at end of file + return instance + +class LeadSerializer(serializers.Serializer): + pass \ No newline at end of file diff --git a/backend/api/account/client/views.py b/backend/api/account/client/views.py index b161b81..1a370bf 100644 --- a/backend/api/account/client/views.py +++ b/backend/api/account/client/views.py @@ -190,4 +190,12 @@ class GetMembershipData(ViewSet): """Получаем данные по тарифам""" pricing_data = Pricing.objects.all().order_by('price') serializer = PricingSerializer(pricing_data, many=True) - return Response(serializer.data, status=status.HTTP_200_OK) \ No newline at end of file + return Response(serializer.data, status=status.HTTP_200_OK) + +class LeadViewSet(ViewSet): + """Собираем лиды""" + @action(detail=False, methods=['post']) + @handle_exceptions + def send_lead(self, request, id): + pass + \ No newline at end of file diff --git a/backend/api/urls.py b/backend/api/urls.py index 8794848..d92a070 100644 --- a/backend/api/urls.py +++ b/backend/api/urls.py @@ -14,7 +14,8 @@ AccountActionsView, CityView, CountryView, GetMembershipData, -ChangeUserMembership) +ChangeUserMembership, +LeadViewSet) from api.search.views import SearchRouteListView @@ -35,6 +36,8 @@ urlpatterns = [ path("v1/account/routes/", AccountActionsView.as_view({'get':'user_routes'}), name='user_routes'), path("v1/account/create_route/", AccountActionsView.as_view({'post':'create_route'}), name='create_route'), + path("v1/account/sendlead/", LeadViewSet.as_view({'post':'send_lead'}), name='send_lead'), + path("v1/cities/", CityView.as_view({'get':'get_cities'}), name='get_cities'), path("v1/countries/", CountryView.as_view({'get':'get_countries'}), name='get_countries'), diff --git a/backend/routes/migrations/0004_leads.py b/backend/routes/migrations/0004_leads.py new file mode 100644 index 0000000..ff54919 --- /dev/null +++ b/backend/routes/migrations/0004_leads.py @@ -0,0 +1,27 @@ +# Generated by Django 5.2.1 on 2025-05-24 11:12 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('routes', '0003_alter_route_owner_type'), + ] + + operations = [ + migrations.CreateModel( + name='Leads', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('moving_date', models.DateField()), + ('comment', models.CharField(blank=True, max_length=500, null=True)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ], + options={ + 'verbose_name': 'Заявка', + 'verbose_name_plural': 'Заявки', + 'ordering': ['-created_at'], + }, + ), + ] diff --git a/backend/routes/models.py b/backend/routes/models.py index 11683e3..8def69e 100644 --- a/backend/routes/models.py +++ b/backend/routes/models.py @@ -112,3 +112,19 @@ class Route(models.Model): verbose_name = (u'Маршрут') verbose_name_plural = (u'Маршруты') ordering = ('id',) + +class Leads(models.Model): + route = models.ForeignKey(Route, verbose_name="Маршрут", on_delete=models.CASCADE), + moving_user = models.ForeignKey(User, verbose_name="Перевозчик", on_delete=models.CASCADE), + moving_price = models.DecimalField(max_digits=10, decimal_places=2), + moving_date = models.DateField() + comment = models.CharField(max_length=500, null=True, blank=True) + created_at = models.DateTimeField(auto_now_add=True) + + class Meta: + verbose_name = 'Заявка' + verbose_name_plural = 'Заявки' + ordering = ['-created_at'] + + def __str__(self): + return f"Заявка по маршруту ${self.route}" \ No newline at end of file