From d74b32a480801b63963c17b2b300002fece3a5f4 Mon Sep 17 00:00:00 2001 From: Nvnastya Date: Mon, 2 Dec 2024 00:11:49 +0300 Subject: [PATCH] add service for my orders --- django/tamprog/garden/views.py | 3 --- django/tamprog/orders/services.py | 5 +++++ django/tamprog/orders/views.py | 18 ++++++++++++++++++ django/tamprog/user/views.py | 6 ++++-- 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/django/tamprog/garden/views.py b/django/tamprog/garden/views.py index 89e57be1..1d14a75e 100644 --- a/django/tamprog/garden/views.py +++ b/django/tamprog/garden/views.py @@ -324,7 +324,6 @@ def rent(self, request): log.debug(f"Attempting to rent {beds_count} beds for user with ID={user.id} in field with ID={field_id}") - # Получаем поле по ID try: field = Field.objects.get(id=field_id) except Field.DoesNotExist: @@ -372,7 +371,6 @@ def release(self, request): log.debug(f"Attempting to release {beds_count} beds in field with ID={field_id}") - # Получаем поле по ID try: field = Field.objects.get(id=field_id) except Field.DoesNotExist: @@ -380,7 +378,6 @@ def release(self, request): BedService.release_beds(field, beds_count) - # Возвращаем успешный ответ return Response({ 'message': f'{beds_count} beds released successfully.' }, status=status.HTTP_200_OK) diff --git a/django/tamprog/orders/services.py b/django/tamprog/orders/services.py index c09c9aea..f2cc80ac 100644 --- a/django/tamprog/orders/services.py +++ b/django/tamprog/orders/services.py @@ -108,6 +108,11 @@ def complete_order(order): log.debug(f"Order with ID={order.id} completed") return order + @staticmethod + def get_orders(user): + log.debug(f"Getting orders by user with ID={user.id}") + return Order.objects.filter(user=user) + @staticmethod def filter_orders(is_completed=None): if is_completed is not None: diff --git a/django/tamprog/orders/views.py b/django/tamprog/orders/views.py index 39c19809..3a7984b9 100644 --- a/django/tamprog/orders/views.py +++ b/django/tamprog/orders/views.py @@ -2,6 +2,7 @@ from rest_framework.permissions import IsAuthenticated from rest_framework.response import Response from rest_framework.exceptions import ValidationError +from rest_framework.decorators import action from .serializer import * from .models import Order from .services import OrderService @@ -176,6 +177,23 @@ def perform_update(self, serializer): log.debug(f"Completing order with ID={order.id}") OrderService.complete_order(order) + @extend_schema( + summary='List all orders for current user', + description='List all orders for current user', + responses={ + status.HTTP_200_OK: OpenApiResponse( + description='Successful response with list of orders', + response=OrderSerializer(many=True), + ) + }, + ) + @action(detail=False, methods=['get']) + def my_orders(self, request): + orders = OrderService.get_orders(request.user) + serializer = self.get_serializer(orders, many=True) + log.debug(f"Returning list of orders by user: {serializer.data}") + return Response(serializer.data) + def get_queryset(self): is_completed = self.request.query_params.get('is_completed', None) if is_completed is not None: diff --git a/django/tamprog/user/views.py b/django/tamprog/user/views.py index 98f72e7e..b8b44f50 100644 --- a/django/tamprog/user/views.py +++ b/django/tamprog/user/views.py @@ -50,11 +50,12 @@ class LoginView(generics.GenericAPIView): OpenApiExample( name="Successful login", value={ - 'username': "example_user", + "id": 1, + "username": "example_user", "refresh": "string", "access": "string", "wallet_balance": 0.00, - 'is_staff': False, + "is_staff": False, }, ) ], @@ -86,6 +87,7 @@ def post(self, request, *args, **kwargs): refresh = RefreshToken.for_user(user) log.info(f"User {user.username} logged in successfully") return Response({ + 'id': user.id, 'username': user.username, 'refresh': str(refresh), 'access': str(refresh.access_token),