Skip to content

Commit

Permalink
рабочий ендпоинт на заявку
Browse files Browse the repository at this point in the history
  • Loading branch information
VadimGurzhy committed Mar 3, 2024
1 parent c6ae54f commit 2cd8019
Show file tree
Hide file tree
Showing 5 changed files with 131 additions and 4 deletions.
20 changes: 19 additions & 1 deletion backend/ambassadors/admin.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
from django.contrib import admin

from .models import Ambassador, AmbassadorGoal, Content, TrainingProgram
from .models import (
Ambassador,
AmbassadorGoal,
Content,
Merchandise,
MerchandiseShippingRequest,
TrainingProgram,
)


@admin.register(TrainingProgram)
Expand All @@ -25,3 +32,14 @@ class AmbassadorAdmin(admin.ModelAdmin):
@admin.register(Content)
class ContentAdmin(admin.ModelAdmin):
list_display = ('id', 'full_name', 'telegram', 'link', 'guide', 'status',)


@admin.register(Merchandise)
class MerchandiseAdmin(admin.ModelAdmin):
list_display = ('name', 'price',)


@admin.register(MerchandiseShippingRequest)
class MerchandiseShippingRequestAdmin(admin.ModelAdmin):
list_display = ('name_merch', 'ambassador', 'status_send',
'created_date', 'comment',)
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Generated by Django 4.2.10 on 2024-03-03 09:35

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('ambassadors', '0002_alter_merchandiseshippingrequest_options_promocode'),
]

operations = [
migrations.AlterField(
model_name='promocode',
name='name',
field=models.CharField(max_length=255, unique=True, verbose_name='Промокод'),
),
migrations.AlterField(
model_name='promocode',
name='status',
field=models.CharField(choices=[('active', 'Активный'), ('inactive', 'Неактивный')], default='active', max_length=10, verbose_name='Статус промокода'),
),
]
25 changes: 25 additions & 0 deletions backend/api/v1/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,14 @@
from ambassadors.choices import (
CONTENT_STATUS_CHOICES,
PROMO_CODE_STATUS_CHOICES,
STATUS_SEND_CHOICES,
)
from ambassadors.models import (
Ambassador,
AmbassadorGoal,
Content,
Merchandise,
MerchandiseShippingRequest,
PromoCode,
TrainingProgram,
)
Expand Down Expand Up @@ -208,3 +211,25 @@ def get_promo_code(self, obj):
if promo_code is not None:
return promo_code.name
return None


class MerchandiseSerializer(serializers.ModelSerializer):
"""
Сериализатор для мерча.
"""

class Meta:
model = Merchandise
fields = ('id', 'name')


class MerchandiseShippingRequestSerializer(serializers.ModelSerializer):
"""
Сериализатор модели заявки на отправку мерча.
"""

status_send = ChoiceField(choices=STATUS_SEND_CHOICES)

class Meta:
model = MerchandiseShippingRequest
fields = '__all__'
8 changes: 7 additions & 1 deletion backend/api/v1/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,18 @@
from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView
from rest_framework.routers import DefaultRouter

from .views import AmbassadorViewSet, ContentViewSet, PromoCodeViewSet
from .views import (
AmbassadorViewSet,
ContentViewSet,
MerchandiseShippingRequestViewSet,
PromoCodeViewSet,
)

router = DefaultRouter()
router.register(r'ambassadors', AmbassadorViewSet)
router.register(r'content', ContentViewSet)
router.register(r'promocodes', PromoCodeViewSet)
router.register(r'merchandise', MerchandiseShippingRequestViewSet)

urlpatterns = [
path('', include(router.urls)),
Expand Down
59 changes: 57 additions & 2 deletions backend/api/v1/views.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,18 @@
from django_filters.rest_framework import DjangoFilterBackend
from drf_spectacular.utils import extend_schema_view
from drf_spectacular.utils import (
OpenApiParameter,
extend_schema,
extend_schema_view,
)
from rest_framework import filters, viewsets
from rest_framework.pagination import LimitOffsetPagination

from ambassadors.models import Ambassador, Content, PromoCode
from ambassadors.models import (
Ambassador,
Content,
MerchandiseShippingRequest,
PromoCode,
)

from .filters import ContentStatusFilter
from .permissions import IsAuthenticatedOrYandexForms
Expand All @@ -12,6 +21,7 @@
AmbassadorCreateSerializer,
AmbassadorReadSerializer,
ContentSerializer,
MerchandiseShippingRequestSerializer,
PromoCodeSerializer,
YandexFormAmbassadorCreateSerializer,
)
Expand Down Expand Up @@ -53,3 +63,48 @@ class ContentViewSet(viewsets.ModelViewSet):
'post',
'patch',
)


@extend_schema_view(
list=extend_schema(
summary='Получение списка заявок',
methods=['GET'],
parameters=[
OpenApiParameter(
name='id',
required=False,
type=int
),
],
),
partial_update=extend_schema(
summary='Обновление статуса заявки',
methods=['PATCH'],
request=MerchandiseShippingRequestSerializer,
responses={200: MerchandiseShippingRequestSerializer},
parameters=[
OpenApiParameter(
name='status_send',
required=False,
type=str,
),
],
),
create=extend_schema(
summary='Создание новой заявки',
methods=['POST'],
request=MerchandiseShippingRequestSerializer,
responses={200: MerchandiseShippingRequestSerializer},
),
)
class MerchandiseShippingRequestViewSet(viewsets.ModelViewSet):
queryset = MerchandiseShippingRequest.objects.all()
serializer_class = MerchandiseShippingRequestSerializer
http_method_names = (
'get',
'post',
'patch',
)

"""def download(self, request):
return"""

0 comments on commit 2cd8019

Please sign in to comment.